docker基礎
docker學習筆記——docker核心技術(映象)
docker學習筆記——docker核心技術(容器)
docker學習筆記——docker核心技術(資料)
docker學習筆記——docker核心技術(網路)
docker高階實踐-dockerfile
dockerfile
基礎指令詳解
from
from
#格式:
from
from
:#解釋:
#from 是 dockerfile 裡的第一條而且只能是除了首行注釋之外的第一條指令
#可以有多個from語句,來建立多個image
#from 後面是有效的映象名稱,如果該映象沒有在你的本地倉庫,那麼就會從遠端倉庫pull取,如果遠端也
沒有,就報錯失敗
#下面所有的 系統可執行指令 在 from 的映象中執行。
maintainer
maintainer
#格式:
maintainer #解釋:
#指定該dockerfile檔案的維護者資訊。類似我們在docker commit 時候使用-a引數指定的資訊
run
run
#格式:
run (shell模式)
run[
"executable"
,"param1"
,"param2"
](exec 模式)
#解釋:
#表示當前映象構建時候執行的命令,如果有確認輸入的話,一定要在命令中新增 -y
#如果命令較長,那麼可以在命令結尾使用 \ 來換行
#生產中,推薦使用上面陣列的格式
#注釋:
#shell模式:類似於 /bin/bash -c command
#舉例: run echo hello
#exec模式:類似於 run["/bin/bash", "-c", "command"]
#舉例: run["echo", "hello"]
expose
expose
#格式:
expose [..
.]#解釋:
設定docker容器對外暴露的埠號,docker為了安全,不會自動對外開啟埠,如果需要外部提供訪問,
還需要啟動容器時增加-p或者-p引數對容器的埠進行分配。
執行時指令詳解
cmd
cmd
#格式:
cmd [
"executable"
,"param1"
,"param2"
](exec 模式)推薦
cmd command param1 param2 (shell模式)
cmd [
"param1"
,"param2"
] 提供給entrypoint的預設引數;
#解釋:
#cmd指定容器啟動時預設執行的命令
#每個dockerfile只能有一條cmd命令,如果指定了多條,只有最後一條會被執行
#如果你在啟動容器的時候使用docker run 指定的執行命令,那麼會覆蓋cmd命令。
#舉例: cmd ["/usr/sbin/nginx","-g","daemon off;"]
"/usr/sbin/nginx" nginx命令
"-g" 設定配置檔案外的全域性指令
"daemon off;" 後台守護程式開啟方式 關閉
entrypoint
entrypoint
#格式:
entrypoint [
"executable"
,"param1"
,"param2"
](exec 模式)
entrypoint command param1 param2 (shell 模式)
#解釋:
#和cmd 類似都是配置容器啟動後執行的命令,並且不會被docker run 提供的引數覆蓋。
#每個dockerfile 中只能有乙個entrypoint,當指定多個時,只有最後乙個起效。
#生產中我們可以同時使用entrypoint 和cmd,
#想要在docker run 時被覆蓋,可以使用"docker run --entrypoint"
#entrypoint指令實踐:
#修改dockerfile檔案內容:
entrypoint [
"/usr/sbin/nginx"
,"-g"
,"daemon off;"
]
注釋
任何docker run設定的命令引數或者cmd指令的命令,都將作為entrypoint 指令的命令引數,追加到entrypoint指令之後
檔案編輯指令詳解
add
#add
#格式:
add ...
add ["",
...""
]#解釋:
#將指定的檔案複製到容器檔案系統中的
#src 指的是宿主機,dest 指的是容器
#所有拷貝到container 中的檔案和資料夾許可權為0755,uid 和gid 為0
#如果檔案是可識別的壓縮格式,則docker 會幫忙解壓縮
#注意:
#1、如果源路徑是個檔案,且目標路徑是以/ 結尾, 則docker 會把目標路徑當作乙個目錄,會把原始檔拷貝到該目錄下;
#如果目標路徑不存在,則會自動建立目標路徑。
#2、如果源路徑是個檔案,且目標路徑是不是以/ 結尾,則docker 會把目標路徑當作乙個檔案。
#如果目標路徑不存在,會以目標路徑為名建立乙個檔案,內容同原始檔;
#如果目標檔案是個存在的檔案,會用原始檔覆蓋它,當然只是內容覆蓋,檔名還是目標檔名。
#如果目標檔案實際是個存在的目錄,則會原始檔拷貝到該目錄下。注意,這種情況下,最好顯示的以/ 結尾,以避免混淆。
#3、如果源路徑是個目錄,且目標路徑不存在,則docker 會自動以目標路徑建立乙個目錄,把源路徑目錄下的檔案拷貝進來。
#如果目標路徑是個已經存在的目錄,則docker 會把源路徑目錄下的檔案拷貝到該目錄下。
#4、如果原始檔是個壓縮檔案,則docker 會自動幫解壓到指定的容器目錄中。
copy
#copy
#格式:
copy..
.copy[""
,...
""]#解釋:
#copy 指令和add 指令功能和使用方式類似。只是copy 指令不會做自動解壓工作。
#單純複製檔案場景,docker 推薦使用copy
volume
#volume
#格式:
volume [
"/data"
]#解釋:
#volume 指令可以在映象中建立掛載點,這樣只要通過該映象建立的容器都有了掛載點
#通過volume 指令建立的掛載點,無法指定主機上對應的目錄,是自動生成的。
#舉例:
volume [
]
環境指令詳解
env
#env
#格式:
env (一次設定乙個環節變數)
env =.
.. (一次設定乙個或多個環節變數)
#解釋:
#設定環境變數,可以在run 之前使用,然後run 命令時呼叫,容器啟動時這些環境變數都會被指定
workdir
#workdir
#格式:
workdir /path/to/workdir (shell 模式)
#解釋:
#切換目錄,為後續的run、cmd、entrypoint 指令配置工作目錄。相當於cd
#可以多次切換(相當於cd 命令),
#也可以使用多個workdir 指令,後續命令如果引數是相對路徑,則會基於之前命令指定的路徑。例如
#舉例:
workdir /a
workdir b
workdir c
run pwd
#則最終路徑為/a/b/c
user與arg
#user
#格式:
user daemon
#解釋:
#指定執行容器時的使用者名稱和uid,後續的run 指令也會使用這裡指定的使用者。
#如果不輸入任何資訊,表示預設使用root 使用者
#arg
#格式:
arg [=]
#解釋:
#arg 指定了乙個變數在docker build 的時候使用,可以使用--build-arg =來指定引數的值,不過如果構建的時候不指定就會報錯。
觸發器指令詳解
onbuild
onbuild
#格式:
onbuild [command]
#解釋:
#當乙個映象a被作為其他映象b的基礎映象時,這個觸發器才會被執行,
#新映象b在構建的時候,會插入觸發器中的指令。
#使用場景對於版本控制和方便傳輸,適用於其他使用者。
Docker學習收藏系列(一) 認識Docker
1 docker 是乙個軟體平台,讓您可以快速構建 測試和部署應用程式。docker 將軟體打包成名為容器的標準化單元,這些單元具有執行軟體所需的所有功能,包括庫 系統工具 和執行時。使用 docker,您可以將應用程式快速部署和擴充套件到任何環境中,並且知道您的 將執行。2 docker工作原理 ...
Docker系列四 使用UI管理docker容器
一 什麼是portainer?docker pull portainer portainer三 執行portainer portainer執行方式有以下兩種方式 1 單機版執行 如果僅有乙個docker宿主機,則可使用單機版執行,執行以下命令就可以啟動了 docker run d p 9000 90...
docker映象的生成及上傳到dockerhub
docker commit options container repository tag a 提交的映象作者 c 使用dockerfile指令來建立映象 m 提交時的說明文字 p 在commit時,將容器暫停。docker commit a yyk m web a404c6c174a2 web1...