(四)Docker构建镜像的两种方式

概述

首先我们需要明白Docker为什么会出现, 答案是为了解决一个长期存在的一个痛点,那就是运维在部署应用程序的时候,每台物理先要搭建环境, 比如新购买了3台物理机,那么首先每台电脑都要安装相同版本的tomcat, jdk等软件,那么每台机器都要安装一遍. docker就是为解决这个问题诞生的, 那就是只要tomcat,jdk只要安装一遍,然后打包为一个镜像,而且这个镜像还可以保存到仓库, 然后每台物理机只要安装一遍这个镜像就好了,这样给我们部署,构建统一环境就带来了很大便捷,所以构建镜像自然也是Docker核心

Docker commit方式

原理

Docker commit方式原理很简单, Docker commit是docker的一个命令, 这种方式原理是直接对接一个容器的方式,通过和容器交互, 容器运行起来就是一个精简版的linux, 进入到容器中,然后安装你想安装的软件(mysql tomcat, jkd等),然后你对这个容器进行docker commit, 就打包好了一个新的镜像,也就是你想的一个运行环境.

例子

1.启动一个centos的镜像,并且进入到容器中开始交互
在这里插入图片描述
2.在linux中像平常使用linux一样,由于一个centos镜像只包含linux内核部分,像常用的vim都是没有的,我们安装一个vim
在这里插入图片描述
在这里插入图片描述
3.将目前运行的容器,打包为一个新镜像(退出容器,ctr+q+p)
在这里插入图片描述
重新运行docker run -it centos-vim, 这个镜像的linux就是有vim功能的linux了
4.通过docker history命令,可以看看一个镜像的打包历史,基于的镜像等
在这里插入图片描述

DockerFile方式

原理

编写一些DockerFile指令, docker build能识别这些指令,按照指令去构建一个新镜像,我们可以把DockerFile指令理解为shell脚本类似的东西,可以编写一个完整脚本来构建一个镜像.不再像使用Docker commit一样,一个个命令在容器中执行,最后打包镜像.

例子

1.DockerFile指令

a.FROM <image>:<tag>  基于某个镜像构建新镜像
例子: FROM centos 基于centos开始构建一个新镜像

b.MAINTAINER <name> 这个镜像构建者信息名字等
例子: MAINTAINER wxx-xxxx@163.com

c.RUN <command>  在构建的镜像中执行一些shell的命令
例子 : RUN yum install -y vim 在镜像中添加vim编辑器

d. ADD <src>... <dest> 拷贝一个文件到容器,会解压,网络资源不会
例子:  ADD  a.txt  /root 拷贝a.txt到/root下, src可以是一个网络资源链接

e:workdir dir 指定工作目录,也就是进入容器时当前目录
例子: workdir /root 那么进入容器的当前目录就是root

f:EXPOSE <port> [<port>...] 容器开放交互端口
例子: EXPOSE 8080 6379 开放两个端口

g:VOLUME ["dir"] 挂在数据卷,这样容器的数据可以挂载到宿主机
例子: volume [“test”]

2.使用DockerFile构建镜像

猜你喜欢

转载自blog.csdn.net/weixin_38312719/article/details/107801583