DockerFile的CMD, ENTRYPOINT指令
简介
CMD,ENTRYPOINT都是容器启动的时候,执行执行命令,都支持exec和shell方式
一般用法有两种:①单独一个CMD②先使用ENTRYPOINT(用于执行命令),然后结合CMD使用(用于追加参数)
有多个CMD时,只有最后一个CMD生效
语法
一般开发和Docker官方都建议用 exec格式
CMD
第一种用法:运行一个可执行的文件并提供参数
1 | CMD ["executable","param1","param2"] |
第二种用法:为ENTRYPOINT指定参数
1 | CMD ["param1","param2"] |
第三种用法(shell格式):是以”/bin/sh -c”的方法执行的命令
1 | CMD command param1 param2 |
ENTRYPOINT
exec 格式, 推荐
1 | ENTRYPOINT [“executable”, “param1”, “param2”] |
shell 格式
1 | ENTRYPOINT command param1 param2 |
使用
单个CMD
编写DockerFile,命名为df1,内容如下:
1 | FROM centos |
构建镜像
1 | docker build -f df1 -t a6678696/df:1.1 . |
创建和运行该镜像的容器
1 | docker run 镜像id |
结果如下图
多个CMD
编写DockerFile,命名为df2,内容如下:
1 | FROM centos |
构建镜像
1 | docker build -f df2 -t a6678696/df:1.2 . |
创建和运行该镜像的容器
1 | docker run 镜像id |
结果如下图,第一个CMD命令没有生效,生效的是最后一个CMD
先ENTRYPOINT后CMD
编写DockerFile,命名为df3,内容如下:
1 | FROM centos |
构建镜像
1 | docker build -f df3 -t a6678696/df:1.3 . |
创建和运行该镜像的容器
1 | docker run 镜像id |
结果如下图,以ls -l格式查看文件
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 LeDao's Blog!
评论