DockerFile介绍
DockerFile : 就是用来构建docker镜像的构建文件,命令脚本
构建步骤:
1、编写一个dockerFile 文件
2、docker build 构建成为一个镜像
3、docker run 运行镜像
4、docker push 发布镜像(DockerHub、阿里云镜像仓库)
DockerFile构建过程
基础知识:
1、每个保留关键字(指令)都是必须是大写
2、执行从上到下顺序执行
3、# 表示注释
4、每一个指令都会创建一个新的镜像层,并提交
DockerFile的指令
FROM #基础镜像,一切从这里开始构建
MAINTAINER #镜像是谁写的,姓名+邮箱
RUN # 镜像构建的时候需要运行的命令
ADD # 步骤:Tomcat镜像,这个Tomcat的压缩包!添加内容
WORKDIR #镜像的工作目录
VOLUME #挂载的目录
EXPOSE #保留端口配置
CMD #指定这个容器启动的时候要运行的命令,只有最后一个会生效,可被替代
ENTRYPOINT #指定这个容器启动的时候要运行的命令,可以追加命令
ONBUILD #当构建一个被继承DockerFile这个时候就会运行ONBUILD的指令
COPY #类似ADD,将我们文件拷贝到镜像中
ENV #构建的时候设置环境变量
创建一个自己的centos
# 1、编写自己的dockerFile
FROM centos
MAINTAINER zzj<123456@>ENV MYPATH /usr/local
WORKDIR $MYPATHRUN yum -y install vim
RUN yum -y install net-toolsEXPOSE 80
CMD echo $MYPATH
CMD echo "-----end-----"
CMD /bin/bash# 2.通过这个文件构建镜像
docker build -f .\dockerFile1 -t mycentos:0.1 .
我们可以通过命令 docker history
我们平时拿到一个镜像,可以查看它是怎么做的
CMD 和 ENTRYPOINT 的区别
CMD #指定这个容器启动的时候要运行的命令,只有最后一个会生效,可被替代
ENTRYPOINT #指定这个容器启动的时候要运行的命令,可以追加命令
测试CMD
# 1、编写dockerFile
# 2、构建镜像
docker build -f .\dockerFileCmd -t mycentoscmd .
# 3、run运行,发现cmd命令生效
如果直接在run 后面增加参数
PS C:\docker\dockerFiles> docker run 7d202bdf002b -l
docker: Error response from daemon: OCI runtime create failed: container_linux.go:380: starting container process caused: exec: "-l": executable file not found in $PATH: unknown.只会去执行 -l ,把cmd的参数 ls -a直接替换了,就报了上面的错误
正确的做法就是:重新写完整参数,这就是cmd的特殊点
docker run 7d202bdf002b ls -al
测试 ENTRYPOINT
1、编写dockerFile
PS C:\docker\dockerFiles> cat .\dockerFileEntryPoint
FROM centos
ENTRYPOINT ["ls","-a"]
2、构建镜像docker build -f .\dockerFileEntryPoint -t cneotsentrypoint .
3、测试命令
直接添加命令可以执行,我们的追加命令是可以直接拼接在ENTRYPOINT后面的
docker run cneotsentrypoint -l