CMD:
一個CMD的主要目的是提供一種用於一個執行容器提供默認值。這些默認值可以包含可執行文件,或者可以省略可執行文件,在這種情況下,您還必須指定ENTRYPOINT指令。
入口點:
運行到不覆蓋其在圖像中指定的可執行容器。使用ENTRYPOINT會發出一個強烈的消息,表明這個容器只用於運行這一個命令。
因此,在你的情況,當你運行:
docker run --rm container1 Bob
的CMD被替換字符串鮑勃,因此結果。
可以有只有一個CMD指令在Dockerfile。如果您列出多個CMD,則只有最後一個CMD的纔會生效。
希望這會有所幫助。
更多關於ENTRYPOINT和CMD
編輯:添加一個基本的例子來演示如何從命令行參數。
#cat Dockerfile
FROM ubuntu:14.04
ENTRYPOINT ["/bin/ping"]
在上述搬運工文件的命令(CMD),以執行具有不mentioned.It指示容器預計一些參數在啓動時。
docker run --dns=172.24.100.50 -it stack:2.0 -c 1 google.com
PING google.com (216.58.197.78) 56(84) bytes of data.
64 bytes from maa03s21-in-f14.1e100.net (216.58.197.78): icmp_seq=1 ttl=54 time=68.2 ms
--- google.com ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
同樣可以通過添加paramters成使用CMD,如下dockerfile來實現::
cat Dockerfile
FROM ubuntu:14.04
ENTRYPOINT ["/bin/ping"]
CMD ["-c", "1", "google.com"]
現在運行容器而不providig而一個PARAMATERS它可以通過如下面的命令行來提供起始:
docker run --dns=172.24.100.50 stack:4.0
PING google.com (216.58.197.78) 56(84) bytes of data.
64 bytes from maa03s21-in-f78.1e100.net (216.58.197.78): icmp_seq=1 ttl=54 time=50.0 ms
--- google.com ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
編輯2:
如果你正在尋找具體,那麼你就可以作爲
docker run --rm container1 Bob!
,因爲我知道沒有選擇,因爲你需要之間插入運行容器據。
我不知道,有在shell printf的實現 –