先回顧一下通過 dockerfile 構建映象的過程:
包括 dockerfile 在內的任何指令碼和程式都會出錯。有錯並不可怕,但必須有辦法排查;
來看乙個除錯的例子,dockerfile 內容如下:
第一步:準備dockerfile檔案
第二步:執行docker build命令:
命令如下所示:
docker build -t image-debug .
具體結果如下所示:
可以看到,dockerfile 在執行第三步 run 指令時失敗,我們可以利用第二步建立的映象 be460bb201e1進行除錯,方式是通過docker run -it
啟動映象的乙個容器;
命令如下所示:
docker run -it be460bb201e1
具體結果如下所示:
from指定 base 映象
maintainer設定映象的作者,可以是任意字串
copy將檔案從 build context 複製到映象,注意copy 支援兩種形式:copy src dest或者copy ["src", "dest"]
注意:src 只能指定 build context 中的檔案或目錄。
add與 copy 類似,從 build context 複製檔案到映象;
env設定環境變數,環境變數可被後面的指令使用;
expose指定容器中的程序會監聽某個埠,docker 可以將該埠暴露出來;
volume將檔案或目錄宣告為 volume
workdir為後面的 run, cmd, entrypoint, add 或 copy 指令設定映象中的當前工作目錄
run在容器中執行指定的命令
cmd容器啟動時執行指定的命令,dockerfile 中可以有多個 cmd 指令,但只有最後乙個生效;
entrypoint設定容器啟動時執行的命令。dockerfile 中可以有多個 entrypoint 指令,但只有最後乙個生效;
再舉乙個例子來練習一下dockerfile:
第一步,準備dockerfile檔案
第二步:執行命令:
docker build -t my-image .
具體結果如下:
說明:build context說白了,就是dockerfile所在的目錄以及子目錄;
最佳實踐
run 執行命令並建立新的映象層,run 經常用於安裝軟體包;
cmd 設定容器啟動後預設執行的命令及其引數,但 cmd 能夠被docker run
後面跟的命令列引數替換;
entrypoint 配置容器啟動時執行的命令
Docker 入門之docker容器建立
使用docker容器的大多數人都是因為想要隔離不同執行環境的差異,使得自己的應用能更好的移植和部署。那麼我們來看看掌握docker需要掌握哪些方面。1,搭建docker環境 2,編譯映象並將其執行成容器 3,將自己的應用壓縮在多個容器中 4,在乙個集群上部署自己的應用 5,通過增加後台資料庫來儲存服...
Docker基礎入門實戰之Docker安裝
虛擬化技術是乙個通用的概念,在不同的領域存在不同的理解,在計算機領域,一般指計算機虛擬化或伺服器虛擬化。虛擬化是一種資源管理技術,可以抽象計算機的各種實體資源,如伺服器 網路 記憶體及儲存等,打破結構之間的未切割障礙,允許使用者更好的應用這些資源。虛擬化包含硬體虛擬化 作業系統虛擬化等。其中,硬體虛...
Docker技術入門之 Docker安裝 1
docker從1.13版本之後採用時間線的方式作為版本號,分為社群版ce和企業版ee。社群版是免費提供給個人開發者和小型團體使用的,企業版會提供額外的收費服務,比如經過官方測試認證過的基礎設施 容器 外掛程式等。社群版按照stable和edge兩種方式發布,每個季度更新stable版本,如17.06...