欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

DockerFile

程序员文章站 2022-04-18 23:15:28
...

目录

什么是DockerFile

DockerFile的构建过程

DockerFile的指令

CMD命令和ENTRYPOINT命令的区别


 

什么是DockerFile

 

dockerfile是用来构建docker镜像的文件!通过脚本命令编写。每个指令都必须是大写字母,从上到下执行。每一行指令都是一个镜像层。构建是一层一层构建的。

 

DockerFile的构建过程

 

比如你要构建一个centos镜像,你可以指定底层使用官方提供的centos镜像,然后在上层使用你的扩展的centos命令,作为上层镜像。这么做的好处是,重复的内容不用多次构建,只构建不同的内容即可。用户下载时,如果已经有基础的centos镜像,只需要下载你追加的扩展内容即可,提高效率~

DockerFile

 

DockerFile的指令

 

FROM				# 基础镜像,一切从这里开始构建
MAINTAINER			# 镜像是谁写的, 姓名+邮箱
RUN					# 镜像构建的时候需要运行的命令
ADD					# 步骤,tomcat镜像,这个tomcat压缩包!添加内容 添加同目录
WORKDIR				# 镜像的工作目录
VOLUME				# 挂载的目录
EXPOSE				# 保留端口配置
CMD					# 指定这个容器启动的时候要运行的命令,只有最后一个会生效,可被替代。
ENTRYPOINT			# 指定这个容器启动的时候要运行的命令,可以追加命令
ONBUILD				# 当构建一个被继承 DockerFile 这个时候就会运行ONBUILD的指令,触发指令。
COPY				# 类似ADD,将我们文件拷贝到镜像中
ENV					# 构建的时候设置环境变量

 

CMD命令和ENTRYPOINT命令的区别

 

CMD : 指定这个容器启动的时候要运行的命令,只有最后一个会生效,可被替代。

ENTRYPOINT : 指定这个容器启动的时候要运行的命令,可以追加命令 

测试cmd

# 编写dockerfile文件
$ vim dockerfile-test-cmd
FROM centos
CMD ["ls","-a"]
# 构建镜像
$ docker build  -f dockerfile-test-cmd -t cmd-test:0.1 .
# 运行镜像
$ docker run cmd-test:0.1
.
..
.dockerenv
bin
dev

# 想追加一个命令  -l 成为ls -al
$ docker run cmd-test:0.1 -l
docker: Error response from daemon: OCI runtime create failed: container_linux.go:349: starting container process caused "exec: \"-l\":
 executable file not found in $PATH": unknown.
ERRO[0000] error waiting for container: context canceled 
# cmd的情况下 -l 替换了CMD["ls","-l"]。 -l  不是命令所有报错

测试entrypoint

# 编写dockerfile文件
$ vim dockerfile-test-entrypoint
FROM centos
ENTRYPOINT ["ls","-a"]
$ docker run entrypoint-test:0.1
.
..
.dockerenv
bin
dev
etc
home
lib
lib64
lost+found ...
# 我们的命令,是直接拼接在我们得ENTRYPOINT命令后面的
$ docker run entrypoint-test:0.1 -l
total 56
drwxr-xr-x   1 root root 4096 May 16 06:32 .
drwxr-xr-x   1 root root 4096 May 16 06:32 ..
-rwxr-xr-x   1 root root    0 May 16 06:32 .dockerenv
lrwxrwxrwx   1 root root    7 May 11  2019 bin -> usr/bin
drwxr-xr-x   5 root root  340 May 16 06:32 dev
drwxr-xr-x   1 root root 4096 May 16 06:32 etc
drwxr-xr-x   2 root root 4096 May 11  2019 home
lrwxrwxrwx   1 root root    7 May 11  2019 lib -> usr/lib
lrwxrwxrwx   1 root root    9 May 11  2019 lib64 -> usr/lib64 ....

 

相关标签: [Docker]

上一篇: dockerfile

下一篇: Dockerfile