docker學習總結八
阿新 • • 發佈:2018-12-09
使用Dockerfile建立映象
一般Dockerfile分為四部分:基礎映象資訊、維護者資訊、映象操作指令和容器啟動時的指令
1. 指令說明
指令 | 說明 |
---|---|
FROM | 指定所建立映象的基礎映象 |
MAINTAINER | 指定維護者資訊 |
RUN | 執行命令 |
CMD | 指定啟動容器時預設執行的命令 |
LABEL | 指定生成映象的元資料標籤資訊 |
EXPOSE | 宣告映象內服務所監聽的埠 |
ENV | 指定環境變數 |
ADD | 複製指定的<src>路徑下的內容到容器中的<dest>路徑下,<src>可以為URL;如果為tar檔案,會自動解壓到<dest>路徑下。 |
COPY | 複製指定的<src>路徑下的內容到容器中的<dest>路徑下; 一般情況推薦使用COPY,而不是ADD |
ENTRYPOINT | 指定映象的預設入口 |
VOLUME | 建立資料卷掛載點 |
USER | 指定執行容器時的使用者名稱或UID |
WORKDIR | 配置工作目錄 |
ARG | 指定映象內使用的引數(例如版本號資訊等) |
ONBUILD | 配置當所建立的映象作為其他映象的基礎映象時,所執行的建立操作指令 |
STOPSIGNAL | 容器退出的訊號值 |
HEALTHCHECK | 如何進行健康檢查 |
SHELL | 指定使用shell時的預設shell型別 |
2. 建立映象
編寫完成Dockerfile之後,執行docker build命令來建立映象。
基本格式為 docker build [選項] 內容路徑
如果要制定生成映象的標籤資訊,可以使用-t選項。
docker build -t myfirstimage ./
3. 使用.dockerignore檔案
使用.dockerignore檔案(每行新增一條匹配模式)來讓Docker忽略匹配模式路徑
# comment
/temp
//temp
tmp?
~
- 最佳實踐
精簡映象用途:儘量讓每個映象的用途都比較集中、單一,避免構造大而複雜、功能多的映象;
選用合適的基礎映象:過大的基礎映象會造成生成臃腫的映象,一般推薦較為小巧的debian映象;
提供足夠清晰的命令註釋和維護者資訊:Dockerfile也是一種程式碼,需要考慮方面後續擴充套件和其他人使用;
正確使用版本號:使用明確的版本號資訊,如1.0,2.0,而非latest,將避免內容不一致可能引發的慘案;
減少映象層數:如果希望所生成的映象層數儘量少,則儘量合併指令,例如多個RUN指令可以合併成一條
;
及時刪除臨時檔案和快取檔案:特別是在執行apt-get指令後,/var/cache/apt下面會快取一些安裝包;
提高生成速度: 如合理使用快取,減少內容目錄下的檔案,或使用.dockerignore檔案指定等;
調整合理的指令順序:在開啟快取的情況下,內容不變的指令儘量放在前面,這樣可以儘量複用;
減少外部源的干擾: 如果確實要從外部引入資料,需要指定持久的地址,並帶有版本資訊,讓他人可以重複而不出錯。****
小結:
φ(❐❐✧ 人醜就要多讀書