Docker(二)、linux环境Docker的部署以及构建镜像

news2024/10/7 2:28:01

linux环境Docker的部署以及构建镜像

  • 一、docker部署
    • 1、快速部署常用的命令:
      • 1.1、demo-部署tomcat
      • 1.2、tomcat容器内部结构
        • 1.2.1、每个tomcat容器,都包含三个组件
        • 1.2.2、在容器内部执行命令
      • 1.3、容器生命周期
  • 二、Dockerfile构建镜像
    • 1、demo-Dockerfile自动部署Tomcat 应用
      • STEP1 、Dockerfile内容:
      • STEP2、新建一个web应用first-dockerfile(小白可),进行构建
      • STEP3、在命令行执行如下命令
    • 2、部署redis镜像

一、docker部署

1、快速部署常用的命令:

1、表示从远程仓库抽取镜像:docker pull 镜像名<:tags>   
2、查看本地镜像:docker images 
3、创建容器,启动应用 : docker run 镜像名<:tags>
ps:如果镜像还没有被抽取,此时会先抽取镜像,然后安装到本地,启动镜像
4、查看正在运行中的容器:docker ps
5、删除容器, <-f>表示强制删除:docker rm <-f> 容器id
6、删除指定版本的镜像, <-f>表示 (即便存在对应容器) 强制删除:docker rmi <-f> 镜像名<:tags>

快速部署命令概览图:
在这里插入图片描述

1.1、demo-部署tomcat

下载默认版本(当前下载使用最多的版本): docker pull tomcat
查看有哪些本地镜像:docker images

下载指定版本[版本号从hub.docker.com 即docker中央仓库获取到的]:

docker pull tomcat:8.5.46-jdk8-openjdk 

docker 镜像仓库访问不了,可以参看阿里镜像:https://developer.aliyun.com/packageSearch?word=tomcat

创建对应容器,才能提供服务:docker run tomcat
启动成功后,可以看到端口8080,若想访问,需要做宿主机和容器的端口映射,操作如下:

docker run -p 8000:8080  -d tomcat

查看正在使用的容器:docker ps
删除容器:

docker stop 容器id
docker rm 容器ID

删除镜像:

docker rmi 镜像<:tags>

宿主机里有docker容器tomcat,tomcat默认端口8080,docker做了一个宿主机和容器的端口映射。外侧浏览器通过宿主机ip和端口8000访问tomcat
转发给内部8080端口。

1.2、tomcat容器内部结构

1.2.1、每个tomcat容器,都包含三个组件
  • 1、linux系统,提供最底层的linux命令,此操作系统只提供安装jdk最基本的安装环境,尺寸非常小【tomcat基本运行环境,绝大多数docker容器都内置了linux系统,进入到容器内部,直接进行linux操作就可以了】
  • 2、此基础上,docker 自动安装jdk1.8.0_222
  • 3、tomcat 【eg:Apache Tomcat/8.5.46 】
1.2.2、在容器内部执行命令

格式:docker exec [-it] 容器id

exec 在对应容器中执行命令
-it 采用交互方式执行命令

如果你想进入一个容器,在容器内部进行后续的操作:docker exec -it 容器ID /bin/bash

ps: /bin/bash :开启一个接收后续命令的终端

demo:
获取容器ID:docker ps
进入容器内部:docker exec -it 45ce1a4ba159 /bin/bash
可执行的linux命令有许多,eg:
查看操作系统版本:cat /proc/version
查看jdk版本:java -version
退出容器,回到宿主机:exit

在宿主机,查看linux 镜像和容器默认存放路径:/var/lib/镜像名
cd /var/lib/docker
可以看到,镜像存放在image路径下,容器存放在containers路径下

1.3、容器生命周期

想多了解一些的小伙伴可以看看这块,非运维小伙伴不做重点掌握:

图中4个椭圆:stopped,running ,pause ,deleted 为容器的4个状态
箭头上的文本均为命令,熟悉这些命令,可以有效协助运维小伙伴排查问题。
在这里插入图片描述

二、Dockerfile构建镜像

1、docker是通过Dockerfile构建镜像的,Dockerfile用来做镜像描述,是一个包含用于 组合镜像命令 的可执行脚本,是一个无后缀的文件
2、docker通过读取Dockerfile中的指令按步自动生成镜像
3、构建镜像

docker build -t 机构/镜像名<:tags> Dockerfile目录(
可以是绝对路径也可以是相对路径)

1、demo-Dockerfile自动部署Tomcat 应用

构建一个自定义镜像,在原有tomcat安装完基础上自动将名为docker-web的应用发布到镜像中,任何拿到自定义镜像中之要执行run就可以访问docker-web应用

STEP1 、Dockerfile内容:

红色字体部分即为Dockerfile内容,

tips:此文件无后缀哈

  • #设置基准镜像
    FROM tomcat:latest
  • #本镜像由哪个人/机构维护。没有执行功能,只是一个说明性信息
    MAINTAINER wq.com
  • #切换工作目录。 webapps不存在则创建,参看web容器内部文件环境看,默认 /usr/local/tomcat ,而所有web应用都放在webapps目录下WORKDIR
    /usr/local/tomcat/webapps
  • #ADD表示复制。将镜像文件复制到镜像指定目录下。docker-web:指dockerfile同级目录下的文件夹,./docker-web:指webapps目录下的文件,若此目录不存在则创建;
    ADD docker-web ./docker-web

STEP2、新建一个web应用first-dockerfile(小白可),进行构建

本地新建文件夹first-dockerfile,在里面创建文件夹docker-web,然后进入,创建index.html ,编辑内容:<h1>docker首页</h1>
在文件夹下,创建Dockerfile,不带后缀,将上面Dockerfile内容拷贝到本文件

在/usr下创建images 文件夹,用来存放镜像,上传first-dockerfile文件夹

文件层级:
在这里插入图片描述

执行构建命令:
切换到/usr/image/first-dockerfile/目录下,【点 表示当前目录,即/usr/image/first-dockerfile/】,执行命令:
docker build -t wq.com/mywebapp:1.0.0 .

执行docker images 可以看到刚才的应用

STEP3、在命令行执行如下命令

启动容器:docker run -p -d 8001:8080 wq.com/mywebapp:1.0.0
在浏览器访问 宿主机IP:8001/docker-web/index.html

可查看正在运行的容器:docker ps
进入到容器内部:docker exec -it 容器ID /bin/bash
直接进入到 /usr/local/tomcat/webapps 目录下,可以看到有docker-web目录文件夹

2、部署redis镜像

  • 拉取redis镜像:docker pull redis

  • 查看镜像是否构建:
    docker images

  • 启动容器:
    docker run -p 6000:6379 -d redis

  • 查看运行的容器
    docker ps

  • 查看端口6000是否被监听,做了宿主机和容器内部的端口映netstat tulpn

  • 进入redis容器内部:
    docker exec -it 容器ID /bin/bash

  • 查看容器元数据:docker inspect 容器ID

  • 查看容器日志,后期构建自己的应用,如果报错可以通过此命令查看报错情况:docker logs

监控容器内部进程状态
docker topdocker stats 可以看到是每个docker容器进程的资源占用情况,根据输出的容器ID,查对应应用:docker ps

  • 可以在容器内部执行:
    redis-cli
    exit

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1044803.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[Linux入门]---进程优先级

文章目录 1.进程优先级基本概念 2.查看系统进程PRI and NI 3.查看进程优先级的命令引入其他概念 1.进程优先级 基本概念 cpu资源分配的先后顺序&#xff0c;就是指进程的优先权&#xff08;priority&#xff09;。优先权高的进程有优先执行权利。配置进程优先权对多任务环境的…

golang工程——常用数据结构底层原理【mao、slice、func、string】

字符串 其实就是字符数组 注意 字节数组与字符串可以相互转换 a : "hello world" b : []byte(a) c : string(b)字节数组转换为字符串在运行时调用了slicebytetostring函数。需要注意的是&#xff0c;字节数组与字符串的相互转换并不是简单的指针引用&#xff0c;…

下划线在键盘上怎么打?这3个方法快收藏!

“我最近的工作中好像很多文件里都有下划线&#xff0c;但是我不知道在键盘上应该怎么把下划线打出来&#xff0c;有没有知道的朋友呀&#xff1f;” 在计算机文档和编程中&#xff0c;下划线是一个常见的特殊字符。很多用户在使用电脑时可能也经常需要用到下划线。但是下划线在…

除静电离子风机在无尘车间的应用

除静电离子风机在无尘车间中的应用非常广泛&#xff0c;主要是用来控制车间内的静电荷&#xff0c;防止静电对车间内的电子元器件、电路板等敏感部件产生损害。 具体来说&#xff0c;除静电离子风机通常采用电离器产生大量负离子&#xff0c;将车间内的静电荷中和成无害的水蒸气…

基于微信小程序的高校学生事务考试通知管理系统(源码+lw+部署文档+讲解等)

文章目录 前言系统主要功能&#xff1a;具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序&#xff08;小蔡coding&#xff09;有保障的售后福利 代码参考源码获取 前言 &#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计…

基于Java SpringBoot 的书籍学习平台,附源码,数据库

博主介绍&#xff1a;✌程序员徐师兄、7年大厂程序员经历。全网粉丝30W,Csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 文章目录 1 简介2 技术栈3 功能总览4平台设计4.1 平台功能模块设计4.2数据库设计4.2.1概念模型设计4.2.2物理…

100GBASE-DR光模块:高速数据中心互连的全新选择

100GBASE-DR光模块相较于传统的100G QSFP28光模块采用的是PAM4调制&#xff0c;单波长传输数据率更高&#xff0c;具有低功耗、高密度、高可靠性等优点&#xff0c;更适用于高速数据中心互连方案部署。本文将从100G QSFP28 DR光模块的概念界定、日常运行流程及其场景方案等角度…

ubuntu中的系统消息中显卡显示llvmpipe (LLVM 10.0.0, 256 bits)

这是我在使用ubuntu系统时出现的问题&#xff0c;网上搜到很多解决的办法&#xff0c;我是一顿操作&#xff0c;后来看到这位老哥的帖子解决了。 集Linux / Ubuntuwin10双系统安装记录(2):AMD核显驱动引发的问题 - 知乎上一篇中我们提到了 astroR2&#xff1a;Linux / Ubuntuw…

MySQL - group by分组查询 (查询操作 三)

功能介绍 group by: 对数据进行分组和聚合操作(可以操作单字段和多字段) having&#xff1a;过滤group by的结果&#xff0c;也就是在分组后添加筛选条件 基础语法 select 字段列表 from 表名 [ where 条件 ] group by 分组字段名 [ having ]; where 和 having的区…

【Visual Studio】解决编写C#代码时编辑器自动添加using问题

当我们编写引用其他作用域代码时&#xff0c;Visual Studio可能会非常“智能”地帮我们在代码顶部自动添加对应的using指令。 显然这项举动有利有弊&#xff0c;有利在于可以提高代码编写效率&#xff0c;有弊在于如果不慎编写错误的代码那么错误的using指令会自动添加。 尤其在…

核电厂设备故障预测与健康管理-基于PreMaint电气信号分析技术

核电厂作为重要的能源供应基地&#xff0c;设备的可靠性和安全性至关重要。传统的设备维护方式存在一定的盲目性和浪费&#xff0c;为了提高设备维护效率、减少成本&#xff0c;并确保核电厂的安全和稳定运行&#xff0c;引入了PreMaint设备健康管理平台的电气信号分析技术。本…

​比特币ETF将迎来审核窗口期

作者&#xff1a;Greg Cipolaro&#xff0c;NYDIG 全球研究主管 编译&#xff1a;WEEX Exchange 几只重要的 ETF 申请将于 10 月中旬迎来审核窗口&#xff0c;本文通过观察近期期权市场的动态&#xff0c;以研究交易者对这些关键 ETF 日期的仓位态度&#xff1b;门头沟&#xf…

当网络设置为自动获取dns时而实际nds是8.8.8.8,1.1.1.1的解决方法

笔记本换网络环境后&#xff0c;网络设置的是自动获取IP和自动获取dns。但使用命令&#xff1a;config/all命令时发现dns总是8.8.8.8,1.1.1.1。导致csdn上不了。 8.8.8.8,1.1.1.1&#xff1a;是谷歌的dns。 解决办法&#xff1a; 在支行中输入regedit打开注册表后&#xff0…

火狐连接错误代码SEC_ERROR_UNKNOWN_ISSUER

最近开发的实验启动功能&#xff0c;测试人员用火狐浏览进行测试&#xff0c;一直报错 错误代码SEC_ERROR_UNKNOWN_ISSUER 在网上搜索很多文章&#xff0c;都没有解决我的问题&#xff0c;最后自己花时间研究了下&#xff0c;灵感来源于项目中&#xff0c;就类似于白名单的功能…

DragGesture/拖动手势 的使用

1. DragGesture 拖动手势操作 1.1 实现 /// 拖动手势 struct DragGestureBootcamp: View {State var offset: CGSize .zerovar body: some View {//dragGesture1dragGesture2}/// 方式二var dragGesture2: some View{ZStack {VStack {Text("\(offset.width)")Space…

深入理解React中fiber

一、前言 Fiber是对React核心算法的重写&#xff0c;Fiber是React内部定义的一种数据结构&#xff0c;将更新渲染耗时长的大任务&#xff0c;分为许多的小片。Fiber节点保存啦组件需要更新的状态和副作用&#xff0c;一个Fiber代表一个工作单元。 二、Fiber在React做了什么 …

使用 frp 进行内网穿透

使用 frp 进行内网穿透 1.frp 概念2.服务端搭建3.客户端搭建1.frp 概念 frp 主要由 客户端(frpc) 和 服务端(frps) 组成,服务端通常部署在具有公网 IP 的机器上,客户端通常部署在需要穿透的内网服务所在的机器上。 内网服务由于没有公网 IP,不能被非局域网内的其他用户访问…

https域名下 请求http图片链接 被自动变成https请求

现象 在以 https 协议页面&#xff0c;以 <img src"http://baidu.com/img/image.png"> 方式请求资源时&#xff0c;http 协议的资源地址被转为 https 的。 溯源检查过程 这个问题真的是第一次遇到&#xff0c;本地开发时没发现问题&#xff0c;等到上到测试环…

我为什么选择这样一份经常出差的工作

这几个月进入出差模式&#xff0c;在酒店与工厂两点一线之间往返。周五&#xff0c;在返回酒店途中&#xff0c;一名同事问我&#xff1a;“你工作了那么多年&#xff0c;为什么选择这样一份出差的工作&#xff1f;”&#xff0c;言外之意就是出差不方便&#xff0c;与家人、朋…

MR混合现实在军事课堂教学中的应用演示

战场模拟&#xff1a;利用MR技术可以创建逼真的战场模拟环境&#xff0c;将学生置身于真实的战场场景中&#xff0c;可以体验和学习各种作战技巧和战术策略。学生可以通过佩戴MR头盔或眼镜&#xff0c;观察虚拟的场景&#xff0c;并与虚拟对象进行互动&#xff0c;如操作武器、…