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映象,因為現在本地映象庫裡面有2個jpress映象,那麼到底會執行哪個映象呢?
docker run -d -p 8888:8080 jpress
我們看到服務已經起來了,到這裡我們還不能確定到底是執行哪個
jpress?那麼我們去刪除試試看,我們先刪除版本為v2 的jpressdocker 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這個映象刪除時可以用repository和tag的方式來刪除id指向了兩個repository,因此無法刪除