使用 Dockerfile 封裝鏡像時務必注意一些細節不要出錯,例如其中的 ADD 命令,在鏡像封裝過程中即使出錯,過程也不會因此中斷或者提示,這樣很難發現其實已經出錯以及難以定位出錯的位置,會浪費很多時間。例如:
ADD tomcat.ini /etc/supervisord.d/tomcat.ini
ADD tomcat.ini /etc/supervisor.d/tomcat.ini
通常 Linux 下的應用對應的服務名稱以及配置文件名稱,常常比應用的名稱多一個消息字母 d ,例如上面兩段代碼只差了一個字母 d ,不仔細觀察很難發現,即使過後檢查也很難發現。再比如 ssh 和它的服務進程 sshd ,http 和它的服務進程 httpd 。
同時這個問題也是一個警示:任何用於生產環境的 docker 鏡像在封裝完成後必須啓動一個容器進行驗證,驗證方式包括但不限於:
- 進入容器中,對比 Dockfile 查看應用安裝、文件配置、進程運行、環境變量等是否全部正常;
- 從外部訪問容器內部署的應用例如 http 或者 ssh 看這些服務是否正常運行。