docker run -it --rm -v /data1:/data1 -v /data2:/data2:ro -v /etc/yum.repos.d/dvd.repo:/mnt/dvd.repo:ro busybox
可以看到/data1可以建立文件,/data2只有r权限,/mnt没有x权限
bind mount默认权限是读写,可以在挂载是指定只读ro
docker run -d --name demo nginx
docker inspect demo
此时curl 172.17.0.2可以看到发布目录
docker volume create webdata
docker rm -f demo
docker run -d --name demo -v /data1:/usr/share/nginx/html nginx
docker inspect demo
echo www.westos.org > index.html
curl 172.17.0.2
docker volume create webdata
docker rm -f demo
docker run -d --name demo -v webdata:/usr/share/nginx/html nginx
docker inspect demo
cd /var/lib/docker/volumes/webdata/_data/
可以看到index.html文件被拷贝过来
cd
docker rm -f demo
docker run -d --name demo -v webdata:/usr/share/nginx/html:ro nginx
此时curl看到的是nginx的默认发布目录
docker exec -it demo bash
可以看到文件被拷贝到了/usr/share/nginx/html/,而且这个目录权限为只读
跨节点数据同步
在server1中
yum install -y nfs-utils
vim /etc/exports
systemctl enable --now nfs
mkdir /nfsdata
chmod 777 /nfsdata/
在server2中
yum install -y nfs-utils
mkdir /nfsdata
mount 172.25.254.1:/nfsdata/ /nfsdata/
建立完成
测试:
在server2的/nfsdata/目录下建立file1文件
此时在server1的/nfsdata/目录下也可以看到file1文件
在server2上下载convoy.tar.gz
tar zxf convoy.tar.gz
cd convoy/
mv convoy* /usr/local/bin
mkdir -p /etc/docker/plugins
cd /etc/docker/plugins/
convoy daemon --drivers vfs --driver-opts vfs.path=/nfsdata &
convoy list
echo “unix:///var/run/convoy/convoy.sock” > /etc/docker/plugins/convoy.spec
在server1中下载convoy.tar.gz
tar zxf convoy.tar.gz
cd convoy/
mv convoy* /usr/local/bin
mkdir -p /etc/docker/plugins
cd /etc/docker/plugins/
convoy daemon --drivers vfs --driver-opts vfs.path=/nfsdata &
echo “unix:///var/run/convoy/convoy.sock” > /etc/docker/plugins/convoy.spec
convoy create vol1
convoy list
此时在server2中也可以list出
cd
将之前的demo删除
docker run -d --name demo -v vol1:/usr/share/nginx/html --volume-driver convoy nginx
此时在/nfsdata/vol1/可以看到容器内的文件被拷贝出来
修改index.html文件
在server1中
docker run -d --name demo -v vol1:/usr/share/nginx/html --volume-driver convoy nginx
此时也可以通过curl访问到172.17.0.2的发布目录