目錄
- 一、Bind Mounts方式共享數(shù)據(jù)
- 二、Volumes方式數(shù)據(jù)共享
- 三、Volume container(數(shù)據(jù)卷容器)方式
- 3.1.創(chuàng)建數(shù)據(jù)卷容器
- 3.2.使用數(shù)據(jù)卷容器
我們本節(jié)為大家介紹的容器數(shù)據(jù)共享,是指在同一臺(tái)服務(wù)器宿主機(jī)的容器之間的數(shù)據(jù)共享。如果涉及到跨服務(wù)器容器的數(shù)據(jù)共享,實(shí)際上是涉及到服務(wù)器之間的數(shù)據(jù)同步或分布式文件系統(tǒng),基本不屬于docker技術(shù)范疇。
一、Bind Mounts方式共享數(shù)據(jù)
使用下面的命令行啟動(dòng)一個(gè)容器,名稱是nginx80,宿主機(jī)映射端口是80
docker run -d --name nginx80 \ -p 80:80 \ -v /root/nginx/html:/usr/share/nginx/html/ \ nginx:latest
然后修改上面的腳本,使用--name nginx81
與 -p 81:80
啟動(dòng)一個(gè)容器,使用--name nginx82
與 -p 82:80
再啟動(dòng)一個(gè)容器。
這樣我們就啟動(dòng)了三個(gè)nginx容器,映射的宿主機(jī)磁盤目錄都是/root/nginx/html
。后續(xù)我們只要把需要部署的html文件放入宿主機(jī)的/root/nginx/html
目錄即可影響三個(gè)nginx web服務(wù)。
二、Volumes方式數(shù)據(jù)共享
Volumes方式數(shù)據(jù)共享與Bind Mounts方式共享數(shù)據(jù)幾乎是一樣的,只是-v
的宿主機(jī)文件數(shù)據(jù)卷指定為Volume:nginx-html。
docker run -d --name nginx80 \ -p 80:80 \ -v nginx-html:/usr/share/nginx/html/ \ nginx:latest
然后修改上面的腳本,使用--name nginx81
與 -p 81:80
啟動(dòng)一個(gè)容器,使用--name nginx82
與 -p 82:80
再啟動(dòng)一個(gè)容器。可以參考下面的這張圖,理解Volumes方式數(shù)據(jù)共享。
三、Volume container(數(shù)據(jù)卷容器)方式
3.1.創(chuàng)建數(shù)據(jù)卷容器
除了上面提到的2種方式,我們還可以創(chuàng)建一個(gè)數(shù)據(jù)卷容器。數(shù)據(jù)卷容器的核心在于數(shù)據(jù)卷,只不過(guò)以容器的方式存在。特別適用于當(dāng)一組容器有多個(gè)相同的數(shù)據(jù)卷映射關(guān)系時(shí)(即多個(gè)-v
) ,我們把多個(gè)-v
數(shù)據(jù)卷映射關(guān)系組成一個(gè)數(shù)據(jù)卷組(即數(shù)據(jù)卷容器)。
docker create \ -v nginx-html:/usr/share/nginx/html/ \ -v /root/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \ --name vc_nginx_html busybox
- 只是create容器,并未運(yùn)行容器,因?yàn)槲覀儾⒉恍枰萜鬟\(yùn)行,我們需要的只是數(shù)據(jù)卷(組)
- 命名方式最好和普通的容器區(qū)分開,如“vc_”前綴
- 之所以使用busybox鏡像,是因?yàn)樗亲钚。畈徽伎臻g的鏡像。
容器創(chuàng)建完成之后,可以使用docker ps -a
查看容器,也可以通過(guò)docker inspect vc_nginx_html
查看該容器的多個(gè)數(shù)據(jù)卷。
3.2.使用數(shù)據(jù)卷容器
docker run -d --name nginx81 \ -p 81:80 \ --volumes-from vc_nginx_html nginx:latest
使用上面的腳本創(chuàng)建一個(gè)容器,讓它的數(shù)據(jù)卷映射(掛載)關(guān)系與vc_nginx_html相同,即:
--volumes-from vc_nginx_htm 等同于 -v nginx-html:/usr/share/nginx/html/ \ -v /root/nginx/conf/nginx.conf:/etc/nginx/nginx.conf \
結(jié)合下圖理解一下數(shù)據(jù)卷容器,數(shù)據(jù)卷容器一般只提供數(shù)據(jù)卷的定義,不真實(shí)運(yùn)行。