1. 程式人生 > >Docker之修改映象容器(第十三篇)

Docker之修改映象容器(第十三篇)

  想想看我們什麼時候會對容器進行儲存呢?一種情況就是容器已經在環境中運行了一段時間,產生了大量的資料,另一種情況就是當最初構建的容器之後,又往容器裡面加入其它專案,不管哪一種,說到底就是容器裡面的東西有變更,或多或少,那麼我們就要對變更之後的容器進行儲存,用於以後備份和恢復。

首先我們來看一下本地已有的映象

docker images

我們執行一下jpress映象

docker run -d -p 8888:8080 jpress

服務執行一段時間之後,會產生一些資料,這時候我們要對這個容器進行儲存

docker commit -m "add or upd file"-a"Docker Newbee"6b8d6e562b5b jpress:v1


其中,-m 來指定提交的說明資訊,跟我們使用的版本控制工具一樣;-a 可以指定更新的使用者資訊;之後是用來建立映象的容器的 ID;最後指定目標映象的倉庫名和 tag 資訊(也可以直接映象名稱則預設儲存到本地)。建立成功後會返回這個映象的 ID 資訊。

再次檢視本地的映象

docker images


我們看到剛才的儲存已經成功了。

我們把之前執行的jpress映象停止一下

docker stop  6b8d6e562b5b7cc8


然後我們在執行一次jpress映象,因為現在本地映象庫裡面有2jpress映象,那麼到底會執行哪個映象呢?

docker run -d -p 8888:8080 jpress


我們看到服務已經起來了,到這裡我們還不能確定到底是執行哪個

jpress?那麼我們去刪除試試看,我們先刪除版本為v2 jpress

docker rmi  999ca065b35a


我們發現刪除成功了,那在刪除一下latest版本試試看

我們發現是無法刪除的,也就是這個版本被運行了,是否真的是優先執行latest版本呢?其實這裡docker做了一些出來,當執行映象的時候如果不加版本,則預設執行就是latest

當我們再一次儲存容器的時候



然後通過版本號執行容器

docker run -d -p 8999:8888 jpress:v1


看到我們的容器已經執行起來了,而且一個是預設的latest版本 一個是儲存的副本v1版本

檢視映象內容是否發生變化

docker diff 映象

id


修改映象的tar標記

docker tag c1f487c0b351 jpress:v2

解決刪除映象時image is referenced in multiple repositories

刪除映象,會報錯


仔細觀察,發現c1f487c0b351這個映象刪除時可以用repositorytag的方式來刪除id指向了兩個repository,因此無法刪除