阅读256 返回首页    go 网易 go 网易蜂巢


Dockerfile指令

CMD 命令提供了容器默认执行的命令,即容器启动时默认允许的命令,可以理解为 Windows 系统下的开机启动项,每次启动容器时,CMD 指定的命令都会运行一次。CMD 命令只生效一次,多次使用时,只有最后一个生效。

目录

CMD 命令使用

CMD 命令共有三种格式,分别是:

  1. CMD ["可执行文件","参数1","参数2"]
    这个格式用于 exec 执行可执行文件,并提供一个参数,建议使用此方法设置可执行文件。
  2. CMD ["参数1","参数2"]
    这个格式用于为 ENTRYPOINT 指定参数
  3. CMD 命令 参数1 参数2
    这个格式用于以 /bin/sh -c 来执行命令,可能会产生无法控制的问题,不建议使用。

常用 CMD 命令

  • Nginx 镜像 CMD 命令 :
    CMD ["nginx", "-g", "daemon off;"]
  • Apache 镜像 CMD 命令 :
    CMD ["httpd-foreground"]
  • Django 镜像 CMD 命令 :
    CMD ["python", "manage.py", "runserver", "0.0.0.0:8000"]
  • MySQL 镜像 CMD 命令 :
    CMD ["mysqld"]
  • NodeJS 镜像 CMD 命令 :
    CMD [ "node" ]
  • Rails 镜像 CMD 命令 :
    CMD ["rails", "server", "-b", "0.0.0.0"]
  • Redis 镜像 CMD 命令 :
    CMD [ "redis-server" ]
  • 当不确定镜像类型时,你可以选择使用如下命令:
    CMD ["/usr/sbin/sshd","-D"]
    要求:镜像中已安装 sshd 服务。

CMD 命令常见问题

  1. CMD 命令和 ENTRYPOINT 的区别?
  2. CMD 命令可以通过启动时传入的参数被覆盖,而 ENTRYPOINT 无法被覆盖。

  3. CMD 命令和 RUN 命令的区别?
  4. CMD 命令是在容器启动时创建的,而 RUN 命令是在容器编译时执行的。

CMD 命令最佳实践

docker run 命令中的参数都会传递给 ENTRYPOINT 指令,而不会被覆盖,当与 CMD 一同使用时,效果更好。 通过 ENTRYPOINT 命令指定容器默认允许的文件如 ENTRYPOINT ["/vhs/kangle/bin/kangle"],通过 CMD 来设置默认的参数 CMD ["-S"]。这样,当执行 docker run -d imagesname 时,就会在启动时自动执行 /vhs/kangle/bin/kangle -S。当我们需要使用其他的参数时,只需要执行 docker run -d imagesname --H,在启动命令后加入新的参数--H,就会自动执行 --H 参数,这时执行的命令就是 /vhs/kangle/bin/kangle --H。这种情况下,处理容器的交互问题就比较方便。

最后更新:2017-01-03 10:48:52

  上一篇:go 集群管理
  下一篇:go 用户API