自己學Docker 8 容器的持久化

2021-07-31 03:59:39 字數 1498 閱讀 9404

今天繼續看docker相關的東西. 

之前,去了解資料卷和資料卷容器是因為在剛開始了解docker的工作模式時遇到了兩個疑問:關於docker資料持久化的,和docker如何共享資料.通過對於資料卷和資料卷容器的了解,目前從整體上可以知道docker如何共享資料和持久化資料.在不斷學習的過程中,了解到docker通過映象建立容器時,實際上實在映象上面加了一層讀寫層,我們對於docker資料的修改都是在這個讀寫層發生的. 

那麼問題來了,如果我要建立乙個web或者資料庫容器,在裡面安裝好配置好相關軟體,如tomcat或者mysql之類的.這些更改我如何儲存下來,從而可以在以後建立容器時使用? 

之前的資料卷和資料卷容器都是儲存了我們對於檔案的更改,現在這個實際上是需要對建立的容器進行持久化,使他變成乙個映象.我們之前在使用docker命令建立容器的時候,很多新建立的容器裡都有一些安裝好的軟體,就是用的這個.這個實現起來也很簡單,docker給我們涉及了乙個命令–commit

.通過這個命令就可以實現上面的需求. 

首先,先建立乙個容器,

這裡我就在,/use/local目錄下建立乙個test.txt的檔案. 

下面就是主角了,使用commit命令來提交容器.提交之前可以先看下本機目前有那些映象.

通過對比可以看到,本機的映象中多了乙個repository為mungo,tag為v2的映象.下面使用這個映象來建立乙個容器,看看之前/use/local目錄下建立的test.txt的檔案還在不.

這裡要注意一下,我在使用名為mungo的映象建立容器時後面加了乙個v2,這個就是建立映象指定的tag,預設的tag是latest可以不指定,如果不是就要通過:來指定. 

這裡可以看到,之前建立的檔案還在.通過ps命令檢視容器也會發現,我使用了不同的映象來建立容器,但建立完成的容器內容是一樣的. 

通過上面的操作可以得知,commit命令可以將已存在容器和修改內容提交為乙個新的映象,通過這個方式同樣能儲存讀寫層內容.但是由於每次使用新的映象建立容器時,之前的修改都在,所以commit命令雖然能實現儲存讀寫層資料,但不適於做資料持久化.

Docker容器的持久儲存模式

本文講的是docker容器的持久儲存模式,編者的話 本文討論了docker容器的持久儲存模式,包括預設模式 資料卷模式 只含資料的容器 從主機對映而得的資料卷 從主機對映而得的資料卷且儲存後端是共享儲存以及 convoy 儲存外掛程式,其中第 2 4 種支援容器永續性,即公升級容器也不會移除資料 第...

Docker容器如何獲得自己的名字

原文 docker service create e my name d name abc tomcat 8.5 alpine 這樣容器裡的my name環境變數就是容器自己的名字,比如 abc.1.rik8xgc0b9i2r7odnm6vnhnqg docker compose file vers...

Docker容器如何獲得自己的名字

原文 docker service create e my name d name abc tomcat 8.5 alpine 這樣容器裡的my name環境變數就是容器自己的名字,比如 abc.1.rik8xgc0b9i2r7odnm6vnhnqg docker compose file vers...