- 什么是Dockerfile?
Dockerfile是用来构建docker镜像的构建文件,是由一系列命令和参数构成的脚本。 - 构建Dockerfile的三步骤:
a:编写Dockerfile文件
b:docker build去执行文件
c:docker run去运行生产的镜像 - Dockerfile的构建过程解析
a:每条保留字指令都必须为大写字母且后面要跟随至少一个参数
b:指令按照从上到下,顺序执行
c:#表示注释
d:每条指令都会创建一个新的镜像层,并对镜像进行提交 - Docker执行Dockerfile的大致流程
a:dcoker从基础镜像运行一个容器
b:执行一条指令并对容器做出修改
c:执行类似docker commit的操作提交一个新的镜像层
d:docker再基于刚提交的镜像运行一个新容器
e:执行dockerfile中的下一条指令直到所有指令都执行完成 - dockerfile的体系结构(保留字指令)
①FROM:表示基础镜像,当前新镜像是基于哪个镜像的。
例如:FROM tomcat -----》就是基于tomcat作为基础镜像的
②MAINTAINER:表示镜像维护者的姓名和邮箱地址
例如:MAINTAINER The Centos Project <cloud-ops@centos.org>
③RUN:表示容器构建时需要运行的命令
④EXPOSE:表示构建的容器启动后对外暴露的端口号
例如:EXPOSE 6379
⑤WORKDIR:表示指定在容器创建后,终端默认登录进来的工作目录,一个落脚点
例如:WORKDIR /data 表示当我们进入容器后默认就在/data这个目录下
⑥ENV:用来在构建镜像过程中设置环境变量
例如:ENV MY_PATH /usr/mytest 表示我们设置一个环境变量名称为MY_PATH,
值为/usr/mytest,那么我们后面就可以引用这个环境变量。比如我们在设置
落脚点的时候,WORKDIR $MY_PATH,那么登录进来后直接就是在/usr/mytest
目录下。
⑦ADD: 将宿主机目录下的文件拷贝进镜像并且ADD命令会自动处理URL和解压tar压缩包
例如:ADD centos-7-docker.tar.xz /
⑧COPY:类似ADD,拷贝文件和目录到镜像中。将从构建上下文目录中<源路径>的文件/目录
复制到新的一层镜像内的<目标路径>位置。
例如:COPY src dest 或者 COPY ["src","dest"]
⑨VOLUME:容器数据卷,用于数据保存和持久化工作
⑩CMD
a:表示指定一个容器启动时要运行的命令
b:Dockerfile中可以有多个CMD指令,但只有最后一个生效,CMD会被docker run 之后
的参数替代。
ENTRYPOINT:表示指定一个容器启动时要运行的命令,ENTRYPOINT的目的和CMD一样,
都是在指定容器启动程序及参数。
ONBUILD:表示当构建一个被继承的Dockerfile时运行命令,父镜像在被子继承后父镜像的
onbuild被触发。 - 案例之构建自己的centos镜像
⑴Base镜像(scratch)
Docker Hub中99%的镜像都是通过在base镜像中安装和配置需要的软件构建出来的。
⑵自定义镜像mycentos
①我们现在可以看看我们从网上下载下载的centos镜像原本是什么样子的
⑶在/opt/dockerfile目录下创建自己的dockerfile
#基于我们从阿里云下载下来的centos基础镜像 FROM centos #定义作者信息 MAINTAINER kgf<kgf@163.com> #设置环境变量 ENV MY_PATH /usr/local #定义进入容器后的工作目录就是/usr/local WORKDIR $MY_PATH #定义容器支持vim命令 RUN yum -y install vim #定义容器支持ifconfig命令 RUN yum -y install net-tools #定义容器暴露的端口号为80 EXPOSE 80 #输出构建完成信息 CMD echo "=============构建完成============" #最后进入容器的/bin/bash路径下 CMD /bin/bash
⑷使用dockerfile文件构建新的镜像
命令:docker build -f Dockerfile的绝对路径 -t 镜像名称:版本号 .
docker build -f /opt/dockerfile/mydockerfile-centos -t mycentos:v1.1 .
⑸下面我们运行新建的镜像
命令:docker run -it mycentos:v1.1
⑹使用docker history +镜像ID 查看镜像详细信息
Dockerfile简介
最新推荐文章于 2022-08-03 17:42:50 发布