閱讀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