咱們能夠在建立容器時掛載使用同一個數據卷,兩個容器同時對該數據卷具備讀寫權限,以下(爲了更好地演示實驗,我刪除了全部容器):
【啓動兩個容器而且掛載同一個數據卷】docker
# 啓動第一個容器,並設置主機名爲 share-volume1 [root@docker-server ~]# docker run --name share-volume1 --hostname share-volume1 --rm -it -v /docker_data/share_dir:/data busybox:latest / # hostname # 往數據卷中寫文件 share-volume1 / # while true;do echo "$(date) from $(hostname)" >> /data/file;sleep 0.5 ;done
# 啓動第二個容器,並設置主機名爲 share-volume2 [root@docker-server ~]# docker run --name share-volume2 --hostname share-volume2 --rm -it -v /docker_data/share_dir:/data busybox:latest / # hostname share-volume2 # 往數據卷中寫文件 / # while true;do echo "$(date) from $(hostname)" >> /data/file;sleep 0.5 ;done
【在宿主機上查看文件的寫入狀況】學習
[root@docker-server ~]# tail -f /docker_data/share_dir/file Mon Oct 21 21:09:59 UTC 2019 from share-volume2 Mon Oct 21 21:10:00 UTC 2019 from share-volume2 Mon Oct 21 21:10:00 UTC 2019 from share-volume1 Mon Oct 21 21:10:00 UTC 2019 from share-volume2 Mon Oct 21 21:10:00 UTC 2019 from share-volume1 Mon Oct 21 21:10:01 UTC 2019 from share-volume2 Mon Oct 21 21:10:01 UTC 2019 from share-volume1 ... ...
能夠看到兩個容器與宿主機同時對數據卷具備讀寫權限。
【建立第一個使用數據卷的容器】code
[root@docker-server ~]# docker run --name volume-from-demo1 --hostname volume-from-demo1 --rm -it -v /docker_data/share_dir2:/data busybox:latest / # hostname volume-from-demo1 / # while true;do echo "$(date) from $(hostname)" >> /data/file;sleep 0.5 ;done
【基於第一個容器卷建立第二個容器】server
# 注意建立語法 [root@docker-server ~]# docker run --name volume-from-demo2 -it --hostname volume-from-demo2 --rm --volumes-from volume-from-demo1 busybox:latest / # hostname volume-from-demo2 # 讀取與寫入數據 / # tail -n 5 -f /data/file Mon Oct 21 21:40:33 UTC 2019 from volume-from-demo1 Mon Oct 21 21:40:34 UTC 2019 from volume-from-demo1 Mon Oct 21 21:40:34 UTC 2019 from volume-from-demo1 Mon Oct 21 21:40:35 UTC 2019 from volume-from-demo1 Mon Oct 21 21:40:35 UTC 2019 from volume-from-demo1 / # while true;do echo "$(date) from $(hostname)" >> /data/file;sleep 0.5 ;done
【宿主機查看數據寫入狀況】文檔
[root@docker-server ~]# tail -f /docker_data/share_dir2/file Mon Oct 21 21:46:17 UTC 2019 from volume-from-demo1 Mon Oct 21 21:46:18 UTC 2019 from volume-from-demo2 Mon Oct 21 21:46:18 UTC 2019 from volume-from-demo1 Mon Oct 21 21:46:18 UTC 2019 from volume-from-demo2
那這兩種方式有什麼區別嗎?咱們能夠經過 docker inspect
來查看下 Mounts
信息,發現是同樣的。官方文檔並無像以前建立數據卷那樣並列的給出兩種或三種建立方式,只不過在某個知識點中有所說起,剛好兩種方式均可以用來建立共享數據卷。以下是經過兩種不一樣的方式建立的四個容器,關於 Mounts
的信息。get
[root@docker-server ~]# docker inspect volume-from-demo2 "Mounts": [ { "Type": "bind", "Source": "/docker_data/share_dir2", "Destination": "/data", "Mode": "", "RW": true, "Propagation": "rprivate" } ],
[root@docker-server ~]# docker inspect volume-from-demo1 "Mounts": [ { "Type": "bind", "Source": "/docker_data/share_dir2", "Destination": "/data", "Mode": "", "RW": true, "Propagation": "rprivate" } ],
[root@docker-server ~]# docker inspect share-volume1 "Mounts": [ { "Type": "bind", "Source": "/docker_data/share_dir", "Destination": "/data", "Mode": "", "RW": true, "Propagation": "rprivate" } ],
[root@docker-server ~]# docker inspect share-volume2 "Mounts": [ { "Type": "bind", "Source": "/docker_data/share_dir", "Destination": "/data", "Mode": "", "RW": true, "Propagation": "rprivate" } ],
注:更多技術博客請關注 字節教育官網,若是在學習或者本身實驗的過程當中遇到問題,及時與做者溝通。【QQ羣 374106486】博客