CMD/ENTRYPOINT都是指定一個容器啟動時要運行的命令
CMD命令
Dockerfile 中可以有多個 CMD 指令,但只有最后一個生效,CMD 會被 docker run 之后的參數替換
ENTRYPOINT命令
docker run 之后的參數會被當做參數傳遞給 ENTRYPOINT,之后形成新的命令組合
一、制作CMD版可以查詢IP信息的容器
二、如果我們希望顯示 HTTP 頭信息,就需要加上 -i 參數
分析:
我們可以看到可執行文件找不到的報錯,executable file not found。
之前我們說過,跟在鏡像名后面的是 command,運行時會替換 CMD 的默認值。
因此這里的 -i 替換了原來的 CMD,而不是添加在原來的 curl -s http://ip.cn 后面。而 -i 根本不是命令,所以自然找不到。
那么如果我們希望加入 -i 這參數,我們就必須重新完整的輸入這個命令:
$ docker run myip curl -s http://ip.cn -i
三、制作ENTROYPOINT版查詢IP信息的容器