kill vs stop
兩個命令都是停止docker嘹朗,不同之處在于:
-
docker stop
: 先發(fā)SIGTERM
信號給docker,允許其在一定時間(默認10s)內(nèi)進行一些操作(例如資源回收)诗祸,若這段時間內(nèi)容器未停止,則發(fā)送SIGKILL
信號強行殺死容器轴总; -
docker kill
: 直接發(fā)送SIGKILL
信號殺死容器直颅。
SIGTERM
與SIGKILL
的區(qū)別在于,前者是告知你的租期到了怀樟,請你趕緊收拾行李離開功偿;后者是你的租期到了,直接將你掃地出門往堡。
簡而言之械荷,相比kill,stop給了容器自行處理結(jié)束的時間虑灰,更為優(yōu)雅吨瞎。
run vs start
-
docker run
: 從鏡像啟動一個容器; -
docker start
: 運行已停止的容器。
例如你需要從docker images
列表中啟動一個鏡像穆咐,你需要執(zhí)行
docker run <IMAGE ID>
你在該鏡像中做了某些修改颤诀,然后結(jié)束(kill/stop)該容器字旭,通過docker ps -a
可以看到一個狀態(tài)為EXITED的容器,此時你可以通過執(zhí)行
docker start <CONTAINER ID>
再次啟動該容器着绊。通過start啟動的容器會保留上一次結(jié)束前做的變動谐算,不會像run一樣執(zhí)行的是全新的容器。
export vs save
-
docker export
: 持久化容器归露,類似給一個虛擬機打快照洲脂,會保留容器啟動后的一系列修改; -
docker save
: 持久化一個鏡像剧包,只是將鏡像導(dǎo)出恐锦,如果通過鏡像啟動容器,那么容器中的修改并不會寫入鏡像中疆液,也因此不會被save一铅。
要注意的是,export導(dǎo)出后的鏡像會丟失歷史堕油,等于沒法回滾到以前的某個狀態(tài)潘飘,而save則保留全部的歷史;也因此掉缺,export導(dǎo)出后的鏡像更小卜录。
另外,export一次只能導(dǎo)出一個容器眶明,而save可以一次性導(dǎo)出多個鏡像艰毒。
實際使用中,僅僅導(dǎo)出鏡像使用save搜囱,而如果對容器做了修改后需要保存丑瞧,可以export,也可以先commit再save蜀肘。
import vs load
-
docker import
: 從一個tar包創(chuàng)建一個鏡像绊汹,可以指定新的NAME:TAG; -
docker load
: 可以同時將多個tar包導(dǎo)入到倉庫中扮宠,不可指定新的NAME:TAG灸促。
二者幾乎與export/save相呼應(yīng),若將save保存的tar包鏡像用import導(dǎo)入回去涵卵,那么新生成的鏡像會丟失原來鏡像的歷史浴栽。
rm vs rmi
-
docker rm <CONTAINER ID>
: 刪除容器 -
docker rmi <IMAGE ID>
: 刪除鏡像
image vs container
如果你是一個剛接觸Docker的新手,那么你可能會對這兩者有疑惑轿偎。
其實很容易區(qū)分二者典鸡,image
即鏡像,類似操作系統(tǒng)的iso文件坏晦,而container
則是用這iso文件安裝好的一個操作系統(tǒng)萝玷。
參考
[1] Use the Docker command line, Docker Documentation
[2] what's the difference between docker stop and docker kill?, superuse, Steffen Opel
[3] What is the difference between save and export in Docker?, Stack Overflow, mbarthelemy
[4] Difference between save and export, Thomas
[5] What is the difference between import and load in Docker?, Stack Overflow, VonC