第一章,開始上手
dk version
從這裡就能看到,dk engine裡的系列是linux!
裡面有一個東西叫「containerd」也是有自己的版本的,基本上就是dk的真正版本

容器與img
容器就是img(唯讀)+讀寫層!
- 讀寫層又叫「container layer」
一個img可以創建多個容器
小秘訣
指定id時,不一定只限於全文或固定id頭的幾個字
即使是用不固定長度的id頭也能選取,只要沒有重複即可!!

只用了一點點id頭來選取:
- 1a
- 258
超好用!
肖鵬建議用新的指令,才知道你在操作什麼對象
使用短id頭停用複數容器:

大量停用:書上也有

容器的 detached 和 attached 模式
dkc run -p 80:80 nginx預設的模式是 attached,也就是前台執行
-d則是 detached模式,在後台執行
如何重新 attached 以回到前景模式?使用 attach 指令
attach作用僅僅只是回到前景
>> 顯然行為和
dkc exec 並不相同肖鵬:一般而言不推薦使用 attached 模式,無論是不加
-d或加了但又attached回來,都不推薦!- 盡可能使用detached模式,也就是運行容器盡可能加上
-d
官方文件的 attach 說明:
由此可知,即使重新attach回容器,也是只是讓它變成attched的狀態而已,也就是把std重新接回來前景而已,而前景不能做任何事,attach後就只是重新看到前景,所以真的很不實用
動態追縱容器的logs,請加上
-fnginx直接執行容器run就會運行,因為它預設就是有指令會執行。如果執行ubuntu這種沒有預設指令的img,就要給定一個指令才行
>> 之所以會持續運行,是因為
COMMAND這一欄是有值的,也就是有指令
- ubuntu使用
-it參數時,不用/bin/bash之類的指令也可以直接進入互動模式
- 而且和使用
/bin/bash界面略有不同!(少了root那些資訊)


dkc exec,非常頻繁使用的指令
先執行一個python3的容器
要進入:

使用上的注意要點:
- 通常會和
-it伴隨使用
- 需要兩個引數,一個是容器名,一個是指令!
⭐️ 容器就是程序(process)
申言之,就是一個指令產生一個程序
比如nginx,裡面的entrypoint有一個指令,會啟動一個nginx程序!
可用指令查看:
dkc top bcc(容器頭id)
要懂一下PID和PPID才容易看得懂,不過都是process
docker container run 背後發生了什麼?
比如:
- 在本地查找是否有nginx這個image鏡像,但是沒有發現
- 去遠程的image registry查找nginx鏡像(默認的registry是Docker Hub)
- 下載最新版本的nginx鏡像 (nginx:latest 默認)
- 基於nginx鏡像來創建一個新的容器,並且准備運行
- docker engine分配給這個容器一個虛擬IP地址
- 在宿主機上打開80端口並把容器的80端口轉發到宿主機上
- 啟動容器,運行指定的命令(這裡是一個shell腳本去啟動nginx)
第二章,鏡像的創建管理和發布

dki tag
基本上就是img的版本
從非dk hub來pull的指令
dki pull 站名/組織或帳號名/倉庫名dki build
dk build img名 路徑(of dkfile)Link:同一 img 可以屬於多個repo與擁有多個tag
一樣都要先移除才能刪

其實這很容易理解,把一個既有的img,使用dki tag重新命名一個repo名稱和tag版本名稱後,新的img和原來的img本質是完全一樣,但repo name和tag name完全不同,如上圖:repo名稱和tag都不一樣
<<
commit
一定是從容器去commit,因為就是要commit讀寫層的內容
所以新版指令是
dk container commit肖鵬:commit在日常開發時用得很少,主要還是從dkfile
第三章,Dockerfile完全入門
肖鵬:對新手而言,Dockerfile是最重要的內容!
基礎img的選擇原則,有三
- 官方的優於非官方
- 要指定tag而不是每次都用latest
- 因為這樣隨著時間,latest會不同,你的file製作出的img是不同的
- 會影響穩定性
- 盡可能選體積小的:理由是節省頻寬
- 不過也可能會影響後續安裝程式的相同,所以要通盤考慮
不同體積指同版號但不同後綴的
- alpine
- 沒後綴
為何有的大有的小?
其中一個原因是建構img時選擇的「基底linux」不同
像nginx-alpine選擇的linux就是apline版,所以會很小!一般版的linux就比較大

基本上一堆img都有apline版本!
所以選定時,版本最好加上tag版本數字+tag後綴
但alpine並不適點用來作產品開發: