您好,登錄后才能下訂單哦!
本篇內容主要講解“Docker管理containers的數據的方法”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“Docker管理containers的數據的方法”吧!
對于Docker來說,containers是通過如下兩種方式管理數據:
Data volumes
Data volume containers
一個數據卷是指container中的一個特殊目錄,具有以下特點:
初始化:在創建container時進行初始化。若container所屬image在數據卷的掛載點有數據,那么這些數據則是在初始化時拷貝到數據卷。
Container之間可以共享數據卷,數據卷也可被重用。
數據卷中的數據修改是立現的,即一旦被修改,數據卷掛載到的containers都實時可見。
在更新image時,不會更新數據卷中的數據變化。
即使刪除container,其數據卷也不會被刪除。
在執行命令docker create或者docker run時加入參數-v即可為一個container添加一個數據卷,可以多次使用-v以添加多個數據卷。簡單示例如下:
docker run -d -P --name web -v /webapp training/webapp python app.py
上述命令會在container的/webapp創建掛載點。
如果想要知道/webapp在主機上對應的目錄,可執行:
docker inspect web
結果如下:
... "Volumes": { "/webapp": "/var/lib/docker/vfs/dir/b0518f7a863879aa391da6e1d0c8455db1b0d7d6f716f49463952ebd558bbe1b" }, "VolumesRW": { "/webapp": true } ...
“Volumes”是/webapp的主機目錄。”VolumesRW”表示該數據卷可被讀寫。
我們發現/webapp的主機目錄具有一個隨機產生的名字,并不友好,所以,在創建container時,可指定將主機上的某目錄作為數據卷掛載到container的指定目錄下,只需要在使用-v參數時指定一下:
docker run -d -P --name web -v /src/webapp:/opt/webapp training/webapp python app.py
如上,將主機的/src/webapp掛載到container的/opt/webapp,如果/src/webapp不存在,會被創建。該數據卷默認可被讀寫,若需要限制其為可讀,執行如下:
docker run -d -P --name web -v /src/webapp:/opt/webapp:ro training/webapp python app.py
當然,也可以掛載一個單獨的文件:
docker run --rm -it -v ~/.bash_history:/.bash_history ubuntu /bin/bash
如上,在container中使用的命令都會記錄下來,當離開container后,仍舊可以查看歷史記錄。
如果需要在containers之間共享持久化數據,或者使用非持久化containers的持久化數據,可以考慮創建數據卷container,并將其中數據掛載到其他containers。
創建數據卷containers如下:
docker create -v /data --name dbdata training/postgres /bin/true
Container dbdata并不執行任何應用。
可以使用參數–volumes-from將/data掛載到別的containers中:
docker run -d --volumes-from dbdata --name db1 training/postgres docker run -d --volumes-from dbdata --name db2 training/postgres
db1和db2共享數據。
數據卷掛載具有傳遞性,可通過db1或者db2將/data掛載到另一個container:
docker run -d --name db3 --volumes-from db1 training/postgres
如果此時刪除dbdata、db1、db2,數據卷是不會被刪除的,一定要在刪除數據卷掛載的最后一個container時將其刪除,如:
docker rm -v db3
到此,相信大家對“Docker管理containers的數據的方法”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。