DockerFile是用来构建docker镜像的文件!实际上是个命令脚本
构建步骤:
1、编写一个dockerfile文件。
2、docker bulid 构建成为一个镜像。
3、docker run运行镜像。
4、docker push 发布镜像(DockerHub、阿里云镜像仓库)。
DockerFile构建过程:
1、每个保留关键字(指令)都必须是大写字母,后面加空格,然后追加指令值。
2、指令从上到下顺序执行。
3、#标识注释
4、每条指令都会创建提交一个新的镜像,并提交!
DockerFile指令:
FROM #基础镜像
MAINTAINER #镜像维护人;姓名+邮箱
RUN #镜像构建时需要运行的命令
ADD #Tomcat镜像,tomcat压缩包添加内容
WORKDIR #镜像工作目录
VOLUME #挂载卷目录
EXPOSE #暴漏端口
CMD #指定容器启动时要运行的命令 CMD echo "----end----"
ENTRYPOINT #指定容器启动时要运行的命令 同CMD区别是可以追加命令
ONBUILD #当构建一个被继承DockerFile时,执行ONBUILD指令,触发指令
COPY #文件复制到镜像
ENV #设置环境
自己创建一个centos的dockerfile
cd /home
mkdir dockerfile
vim dockerfile-centos
内容如下
FROM centos
LABEL MAINTATNER="zbk<1546232926@qq.com>"
ENV MYPATH /usr/local
WORKDIR $MYPATH
RUN yum -y install vim
RUN yum -y install net-tools
EXPOSE 80
CMD echo "---build success----"
CMD /bin/bash
build镜像
docker build -f dockerfile-centos -t mycentosplus:0.1 .
运行镜像
docker run -it mycentosplus:0.1 /bin/bash
pwd 查看当前默认工作路径已经指定为 /usr/local,即我们设置的ENV中的path。
CMD和ENTRYPOINT的区别
构建两个dockerfile文件,分别为dockerfile-cmd和dockerfile-entrypoint
dockerfile-cmd内容如下:
FROM centos
CMD ["ls","-a"]
dockerfile-entrypoint内容如下:
FROM centos
ENTRYPOINT ["ls","-a"]
构建镜像后,同样执行命令 docker run ID -l,可以发现使用CMD构建的镜像会启动会报错,而ENTRYPOINT则可以正常的显示文件目录列表,得出结论:
CMD 后不可追加命令执行,而ENTRYPOINT则可以。