本篇內(nèi)容介紹了“docker怎么管理容器的數(shù)據(jù)”的有關(guān)知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠?qū)W有所成!

創(chuàng)新互聯(lián)從2013年成立,先為潛江等服務(wù)建站,潛江等地企業(yè),進行企業(yè)商務(wù)咨詢服務(wù)。為潛江企業(yè)網(wǎng)站制作PC+手機+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。
可以通過兩種方式管理容器中的數(shù)據(jù),數(shù)據(jù)卷(Data Volumns),數(shù)據(jù)卷容器(Data Volumns containers)
data volume存在一個或多個容器中的特殊的目錄,它繞過容器的Union File System.用來持久或共享數(shù)據(jù).它是獨立于容器的生命周期的. 它有幾個特點:
容器創(chuàng)建好后會初始化數(shù)據(jù)卷.如果基礎(chǔ)鏡像在此掛載點上有數(shù)據(jù),它會將數(shù)據(jù)復制到數(shù)據(jù)卷里.(掛在主機的目錄則不會復制)
數(shù)據(jù)卷可以被多個容器共享使用
對數(shù)據(jù)卷的修改是直接的.
對數(shù)據(jù)卷的更改,不會因為你更新鏡像而被包括進去.
就算容器被刪除,數(shù)據(jù)卷還繼續(xù)存在.
[root@srv00 ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE hippo/nginx v1 2e1513eeaa0a 2 days ago 281.1 MB hippo/nginx v1.10 1e20546f8434 2 days ago 281.1 MB [root@srv00 ~]# docker run -it -v /etc/nginx hippo/nginx:v1.10 [root@bab2e5725220 /]# ll /etc/nginx/ total 32 drwxr-xr-x 2 root root 25 May 20 07:40 conf.d ...
可以看到容器內(nèi)的數(shù)據(jù)卷目錄中,是原有的
/etc/nginx目錄的內(nèi)容.
可以修改一個文件配置看看.并檢查主機上對應的數(shù)據(jù)卷內(nèi)容.
[root@srv00 ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
bab2e5725220 hippo/nginx:v1.10 "/bin/bash" About a minute ago Exited (0) 15 seconds ago hungry_jennings
[root@srv00 ~]# docker inspect bab2e5725220
...
"Mounts": [
{
"Name": "b6c506a65d5f495ca6ce06aeb30bb6472295d459bfbeb464e89681e17ffe3541",
"Source": "/var/lib/docker/volumes/b6c506a65d5f495ca6ce06aeb30bb6472295d459bfbeb464e89681e17ffe3541/_data",
"Destination": "/etc/nginx",
"Driver": "local",
"Mode": "",
"RW": true,
"Propagation": ""
}
...
[root@srv00 _data]# docker rm bab2e5725220
bab2e5725220
[root@srv00 ~]# cat /var/lib/docker/volumes/b6c506a65d5f495ca6ce06aeb30bb6472295d459bfbeb464e89681e17ffe3541/_data/nginx.conf
...對數(shù)據(jù)卷的修改直接持久在主機對應的地方..就算容器已經(jīng)關(guān)閉或刪除.
[root@srv00 ~]# mkdir nginx
[root@srv00 ~]# docker run -it -v /root/nginx:/etc/nginx hippo/nginx:v1.10
[root@c0750f9779b3 /]# ll /etc/nginx/ <===無內(nèi)容
[root@srv00 ~]# docker ps -l
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c0750f9779b3 hippo/nginx:v1.10 "/bin/bash" 23 seconds ago Exited (0) 11 seconds ago agitated_mclean
[root@srv00 ~]# docker inspect c0750f9779b3
...
"Mounts": [
{
"Source": "/root/nginx",
"Destination": "/etc/nginx",
"Mode": "",
"RW": true,
"Propagation": "rprivate"
}
...可以看到是主機的對應目錄掛載到容器內(nèi).
RW是可讀寫標志,效果和mount命令一致.
如果是相對目錄:
[root@srv00 ~]# mkdir -p a/b
[root@srv00 ~]# touch a/b/c
[root@srv00 ~]# docker run -it -v a/b:/etc/nginx hippo/nginx:v1.10
docker: Error response from daemon: create a/b: "a/b" includes invalid characters for a local volume name, only "[a-zA-Z0-9][a-zA-Z0-9_.-]" are allowed.
See 'docker run --help'.
[root@srv00 ~]# docker run -it -v nginx:/etc/nginx hippo/nginx:v1.10
e4e2f137a7412f6474018e88985e2f605b5f77f2cd1ce27280142994e5feb030
[root@srv00 ~]# docker inspect e4e2f137a7412f6474018e88985e2f605b5f77f2cd1ce27280142994e5feb030
...
"Mounts": [
{
"Name": "nginx",
"Source": "/var/lib/docker/volumes/nginx/_data",
"Destination": "/etc/nginx",
"Driver": "local",
"Mode": "z",
"RW": true,
"Propagation": "rprivate"
}
...主機不可以指定相對目錄,只可以對數(shù)據(jù)卷命名.
當然你可以以只讀方式掛載.
[root@srv00 ~]# docker run -itd -v nginx:/etc/nginx:ro hippo/nginx:v1.10
b0a67f835eaac812ab37086bef05be6b0726ba080d73113221a5cf8a25bfb513
[root@srv00 ~]# docker inspect b0a67f835eaac812ab37086bef05be6b0726ba080d73113221a5cf8a25bfb513
...
"Mounts": [
{
"Name": "nginx",
"Source": "/var/lib/docker/volumes/nginx/_data",
"Destination": "/etc/nginx",
"Driver": "local",
"Mode": "ro",
"RW": false,
"Propagation": "rprivate"
}
...之前都是通過運行容器的同時創(chuàng)建數(shù)據(jù)卷.當然也可以先創(chuàng)建好數(shù)據(jù)卷.然后掛載到容器中使用. 數(shù)據(jù)卷管理使用docker volume命令.我們看一下剛才創(chuàng)建了哪些數(shù)據(jù)卷.
[root@srv00 ~]# docker volume ls
DRIVER VOLUME NAME
local 0159a70ae1a86b5c2947d323b5e6d539101770b66af5cb0ba6d87c12a1c2c742
local b6c506a65d5f495ca6ce06aeb30bb6472295d459bfbeb464e89681e17ffe3541
local nginx
[root@srv00 ~]# docker volume inspect 0159a70ae1a86b5c2947d323b5e6d539101770b66af5cb0ba6d87c12a1c2c742
[
{
"Name": "0159a70ae1a86b5c2947d323b5e6d539101770b66af5cb0ba6d87c12a1c2c742",
"Driver": "local",
"Mountpoint": "/var/lib/docker/volumes/0159a70ae1a86b5c2947d323b5e6d539101770b66af5cb0ba6d87c12a1c2c742/_data",
"Labels": null
}
]
[root@srv00 ~]# docker volume inspect nginx
[
{
"Name": "nginx",
"Driver": "local",
"Mountpoint": "/var/lib/docker/volumes/nginx/_data",
"Labels": null
}
]
Driver是local,就是映射到本地主機.也可以使用其他驅(qū)動.映射到比如iscsi,NFS,FC 等共享磁盤上.
我們來單獨創(chuàng)建一個數(shù)據(jù)卷并使用
[root@srv00 ~]# docker volume create --name dbdata
dbdata
[root@srv00 ~]# docker volume ls
DRIVER VOLUME NAME
local 0159a70ae1a86b5c2947d323b5e6d539101770b66af5cb0ba6d87c12a1c2c742
local b6c506a65d5f495ca6ce06aeb30bb6472295d459bfbeb464e89681e17ffe3541
local dbdata
local nginx
[root@srv00 ~]# docker volume inspect dbdata
[
{
"Name": "dbdata",
"Driver": "local",
"Mountpoint": "/var/lib/docker/volumes/dbdata/_data",
"Labels": {}
}
]
[root@srv00 ~]# docker run -itd -v dbdata:/etc/nginx hippo/nginx:v1.10我們先創(chuàng)建個數(shù)據(jù)卷容器.然后運行兩個單獨的容器,掛載數(shù)據(jù)卷容器.
[root@srv00 ~]# docker create -v /opt --name datastore centos e5c37981c4f9e16f92b0d5215f5dfa5f79c86282e3018435a5e380350a5cce2c [root@srv00 ~]# docker ps -l CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES e5c37981c4f9 centos "/bin/bash" 11 seconds ago Created datastore [root@srv00 ~]# docker run -itd --volumes-from datastore --name db1 centos [root@srv00 ~]# docker run -itd --volumes-from datastore --name db2 centos
看看數(shù)據(jù)是否互相可訪問.
[root@srv00 ~]# docker exec -it db1 /bin/bash
[root@cd8fa62d3b29 ~]# echo "db111111" > /opt/txt
[root@cd8fa62d3b29 ~]# exit
exit
[root@srv00 ~]# docker exec -it db2 /bin/bash
[root@72c21395c72b /]# cat /opt/txt
db111111
[root@72c21395c72b /]# exit
exit
[root@srv00 ~]# docker inspect datastore
[root@srv00 ~]# docker inspect db1
[root@srv00 ~]# docker inspect db2
...
"Mounts": [
{
"Name": "6b650687d6d2a448006dcb2b966b5f69bb31d34cf3e93f5e3c3460b6fd6eea4a",
"Source": "/var/lib/docker/volumes/6b650687d6d2a448006dcb2b966b5f69bb31d34cf3e93f5e3c3460b6fd6eea4a/_data",
"Destination": "/opt",
"Driver": "local",
"Mode": "",
"RW": true,
"Propagation": ""
}
...
[root@srv00 ~]# docker volume inspect 6b650687d6d2a448006dcb2b966b5f69bb31d34cf3e93f5e3c3460b6fd6eea4a
[
{
"Name": "6b650687d6d2a448006dcb2b966b5f69bb31d34cf3e93f5e3c3460b6fd6eea4a",
"Driver": "local",
"Mountpoint": "/var/lib/docker/volumes/6b650687d6d2a448006dcb2b966b5f69bb31d34cf3e93f5e3c3460b6fd6eea4a/_data",
"Labels": null
}
]幾個容器掛在的數(shù)據(jù)卷都是相同的.內(nèi)部其實是創(chuàng)建了一個數(shù)據(jù)卷. 就算刪除所有相關(guān)的運行的容器..數(shù)據(jù)卷不會刪除.
“docker怎么管理容器的數(shù)據(jù)”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實用文章!
網(wǎng)站欄目:docker怎么管理容器的數(shù)據(jù)
文章地址:http://chinadenli.net/article34/pgjose.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供做網(wǎng)站、用戶體驗、小程序開發(fā)、外貿(mào)網(wǎng)站建設(shè)、關(guān)鍵詞優(yōu)化、搜索引擎優(yōu)化
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)