容器技術-Dockerfile指令總結
阿新 • • 發佈:2021-01-14
一、關於執行命令方面
https://www.jianshu.com/p/004bb28593a5
1 RUN 和 CMD
1.1 RUN
是在構建一個映象時,在構建過程中的容器內執行的命令,並提交結果。
每個
RUN
指令都會給目前正在建立的映象增加一層。
1.2 CMD
是當使用一個映象執行為一個容器的時候預設執行的命令。
CMD指令在構建時不執行任何操作,只是為執行一個容器時,提供一個預設執行的命令。
一個映象中只能有一個 CMD 指令,多個的話,最後一個生效。
其指定的命令可以被執行一個容器時指定的命令所覆蓋
比如
映象中的 CMD 為:
CMD ["/bin/bash"]
假設執行容器時:
docker run -it centos ls /tmp
那就是執行
ls /tmp
命令
二、關於檔案方面
1 COPY 和 ADD
兩者都是把宿主機的檔案複製到容器中的
1.1 COPY 是官方比較推薦的做法。
原路徑 支援萬用字元
保留原始檔的元資料
1.2 ADD 支援自動解壓,但是會導致構建映象時的快取失效,從而影響構建的效率
三、關於容器資料持久化方面
關於使用資料卷和掛載主機目錄的提示
如果將空卷掛載到容器中的含有內容的目錄中,則會將這些內容複製到卷中。同樣,如果您啟動容器並指定一個尚不存在的卷,則會為您建立一個空卷。
如果將一個bind mount 或非空的資料卷 掛載到容器中的一個非空目錄中,則這些內容會被遮蓋隱藏。隱藏的內容不會被刪除或更改,此時也不可被訪問。就像在 Linux 機器中使用 mount 命令一樣的效果