一、不指定宿主机目录
首先运行一个nginx容器
docker run -d --name mynginx -p 8080:80 -v /usr/share/nginx/html nginx
--name 指定容器名字
-v 表示把docker里面的目录/usr/share/nginx/html映射出来
通过inspect命令查看宿主机对应的目录
docker inspect mynginx
省略部分输出
"Mounts": [
{
"Type": "volume",
"Name": "fd6a85bb7a90ad465de3c5720d65576bff273b15b112cd3e62bb0d9d3f4a0c7a",
"Source": "/var/lib/docker/volumes/fd6a85bb7a90ad465de3c5720d65576bff273b15b112cd3e62bb0d9d3f4a0c7a/_data",
"Destination": "/usr/share/nginx/html",
"Driver": "local",
"Mode": "",
"RW": true,
"Propagation": ""
}
]
可以看到docker里面的目录/usr/share/nginx/html对应到宿主机的目录为/var/lib/docker/volumes/354d406d5ec7f55bf445d70ac5f0534e1d185207a3f0b37e381af531a1d9ce37/_data
修改宿主机的文件
cd /var/lib/docker/volumes/354d406d5ec7f55bf445d70ac5f0534e1d185207a3f0b37e381af531a1d9ce37/_data
ls
50x.html index.html
vi index.html
<html>
<p1>hello, I am nginx.</p1>
</html>
进入到docker目录
docker exec -it mynginx /bin/bash
cd /usr/share/nginx/html/
cat index.html
<html>
<p1>hello, I am nginx.</p1>
</html>
可以看到docker里面同步也进行了更改,打开网页http://10.40.16.61:8080/
二、指定宿主机目录
cd /tmp
mdkir html
vi html/index.html
<html>
<p1>hello, I change index file.</p1>
</html>
docker run -d --name mynginx1 -p 8081:80 -v $PWD/html:/usr/share/nginx/html nginx
$PWD表示当前路径
通过inspect命令查看宿主机对应的目录
docker inspect mynginx1
省略部分输出
"Mounts": [
{
"Type": "bind",
"Source": "/tmp/html",
"Destination": "/usr/share/nginx/html",
"Mode": "",
"RW": true,
"Propagation": "rprivate"
}
]
三、卷组给多个容器共享
mkdir myvolumes
cd myvolumes
mkdir data
docker create -v $PWD/data:/var/mydata --name data_container centos
# docker create只创建容器但不运行
docker run -it --volumes-from data_container centos /bin/bash
# -it以交互方式运行
mount | grep data
/dev/sda2 on /var/mydata type xfs (rw,relatime,attr2,inode64,noquota)
可以看到容器data_container的/var/mydata目录同样也在新的容器的下
cd /var/mydata
touch nothing
exit
ls /data
nothing
可以看到宿主机下面也有nothing这个文件,可以实现卷组给多个容器共享