Docker深入理解
轉:https://www.cnblogs.com/bethal/p/5942369.html
來深入理解一下容器和鏡像的區別
鏡像:鏡像就是一堆只讀層,它們重疊在一起,上面一層會有一個指針指向下一層
容器:就是在鏡像top層加了一個可讀可寫的層
docker create
docker create 命令爲指定的鏡像(image)添加了一個可讀寫層,構成了一個新的容器。注意,這個容器並沒有運行
docker start
Docker start命令爲容器文件系統創建了一個進程隔離空間。注意,每一個容器只能夠有一個進程隔離空間。
docker run
docker run命令實際上就是docker create 和 docker start兩個命令的結合
docker stop
docker stop命令會向運行中的容器發送一個SIGTERM的信號,然後停止所有的進程
docker rm
docker commit
docker commit命令將容器的可讀寫層轉換爲一個只讀層,這樣就把一個容器轉換成了不可變的鏡像
docker bulid
docker build命令非常有趣,它會反覆的執行多個命令
我們從上圖可以看到,build命令根據Dockerfile文件中的FROM指令獲取到鏡像,然後重複地1)run(create和start)、2)修改、3)commit。在循環中的每一步都會生成一個新的層,因此許多新的層會被創建。
docker save
docker save命令會創建一個鏡像的壓縮文件,這個文件能夠在另外一個主機的Docker上使用。和export命令不同,這個命令爲每一個層都保存了它們的元數據。這個命令只能對鏡像生效。
docker export
docker export命令創建一個tar文件,並且移除了元數據和不必要的層,將多個層整合成了一個層,只保存了當前統一視角看到的內容(譯者注:expoxt後 的容器再import到Docker中,通過docker images –tree命令只能看到一個鏡像;而save後的鏡像則不同,它能夠看到這個鏡像的歷史鏡像)
docker history
docker history命令遞歸地輸出指定鏡像的歷史鏡像