dockerfile 写法,转自cloudman 每天5分钟玩转docker
CMD 有三种格式:
Exec 格式:CMD ["executable","param1","param2"]
这是 CMD 的推荐格式。
CMD ["param1","param2"] 为 ENTRYPOINT 提供额外的参数,此时 ENTRYPOINT 必须使用 Exec 格式。
Shell 格式:CMD command param1 param2
Exec 和 Shell 格式前面已经介绍过了。
第二种格式 CMD ["param1","param2"] 要与 Exec 格式 的 ENTRYPOINT 指令配合使用,其用途是为 ENTRYPOINT 设置默认的参数。我们将在后面讨论 ENTRYPOINT 时举例说明。
ENTRYPOINT 指令可让容器以应用程序或者服务的形式运行。
ENTRYPOINT 看上去与 CMD 很像,它们都可以指定要执行的命令及其参数。不同的地方在于 ENTRYPOINT 不会被忽略,一定会被执行,即使运行 docker run 时指定了其他命令
ENTRYPOINT 的 Exec 格式用于设置要执行的命令及其参数,同时可通过 CMD 提供额外的参数。
ENTRYPOINT 中的参数始终会被使用,而 CMD 的额外参数可以在容器启动时动态替换掉。
如: 启动容器的时候就会 /usr/local/bin/dumb-init bash /opt/mix-ops/entrypoint-worker.sh
ENTRYPOINT ["/usr/local/bin/dumb-init"]
CMD ["/opt/mix-ops/entrypoint-worker.sh"]
如:
ENTRYPOINT ["/bin/echo", "Hello"]
CMD ["world"]
当容器通过 docker run -it [image] 启动时,输出为:
Hello world
而如果通过 docker run -it [image] CloudMan 启动,则输出为:
Hello CloudMan
使用 RUN 指令安装应用和软件包,构建镜像。
如果 Docker 镜像的用途是运行应用程序或服务,比如运行一个 MySQL,应该优先使用 Exec 格式的 ENTRYPOINT 指令。CMD 可为 ENTRYPOINT 提供额外的默认参数,同时可利用 docker run 命令行替换默认参数。
如果想为容器设置默认的启动命令,可使用 CMD 指令。用户可在 docker run 命令行中替换此默认命令。
前台:(不会执行Dockerfile中的命令,-it配合使用)
- i --interactive=false 打开STDIN和容器交互。经常和 -t一起使用。
- t --tty=false 使用终端。经常和 -i一起使用。
后台:(后台会执行Dockerfile里的命令,-d 不能与-it(前台)一起使用)
- d 后台(-d) 在后台模式(-d=true或者直接使用-d)
转载自Cloudman每天5分钟玩转docker