自己學Docker:8.容器的持久化

今天繼續看Docker相關的東西.
之前,去了解數據卷和數據卷容器是因爲在剛開始瞭解Docker的工作模式時遇到了兩個疑問:關於Docker數據持久化的,和Docker如何共享數據.通過對於數據卷和數據卷容器的瞭解,目前從整體上可以知道Docker如何共享數據和持久化數據.在不斷學習的過程中,瞭解到Docker通過鏡像創建容器時,實際上實在鏡像上面加了一層讀寫層,我們對於Docker數據的修改都是在這個讀寫層發生的.
那麼問題來了,如果我要創建一個web或者數據庫容器,在裏面安裝好配置好相關軟件,如tomcat或者mysql之類的.這些更改我如何保存下來,從而可以在以後創建容器時使用?
之前的數據卷和數據卷容器都是保存了我們對於文件的更改,現在這個實際上是需要對創建的容器進行持久化,使他變成一個鏡像.我們之前在使用Docker命令創建容器的時候,很多新創建的容器裏都有一些安裝好的軟件,就是用的這個.這個實現起來也很簡單,Docker給我們涉及了一個命令–commit.通過這個命令就可以實現上面的需求.
首先,先創建一個容器,

 sudo docker run -i -t --name mungo  docker/whalesay /bin/bash

這裏寫圖片描述
這裏寫圖片描述
這裏我就在,/use/local目錄下創建一個test.txt的文件.
這裏寫圖片描述
下面就是主角了,使用commit命令來提交容器.提交之前可以先看下本機目前有那些鏡像.

sudo docker images

這裏寫圖片描述

sudo docker commit mungo mungo:v2
sudo docker images

這裏寫圖片描述

通過對比可以看到,本機的鏡像中多了一個REPOSITORY爲mungo,TAG爲v2的鏡像.下面使用這個鏡像來創建一個容器,看看之前/use/local目錄下創建的test.txt的文件還在不.

sudo docker run -i -t --name mungo_V2  mungo:v2

這裏要注意一下,我在使用名爲mungo的鏡像創建容器時後面加了一個v2,這個就是創建鏡像指定的TAG,默認的TAG是latest可以不指定,如果不是就要通過:來指定.
這裏寫圖片描述
這裏可以看到,之前創建的文件還在.通過ps命令查看容器也會發現,我使用了不同的鏡像來創建容器,但創建完成的容器內容是一樣的.
這裏寫圖片描述

通過上面的操作可以得知,commit命令可以將已存在容器和修改內容提交爲一個新的鏡像,通過這個方式同樣能保存讀寫層內容.但是由於每次使用新的鏡像創建容器時,之前的修改都在,所以commit命令雖然能實現保存讀寫層數據,但不適於做數據持久化.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章