Docker 数据卷管理
bind mount 将主机上的目录mount到容器里
docker run -d --name web1 -p 80:80 -v /opt/website:/usr/share/nginx/html nginx
打开容器访问不到数据因为没有写入数据
cd /opt/website/
vim index.html
再次访问可以看到数据,在容器里面也可以写入数据但是用attach连接不上是因为没有交互的shell
docker exec -it web1 bash 使用此命令
进入容器可以可追加写入
默认的读写挂载,手动指令只读挂载
docker run -it --name vm1 -v /opt/data1:/data1 -v /opt/data2:/data2:ro ubuntu
只读不可以创建
宿主机可以创建。容器可以查看不可以删除
也可以挂载文件yum
docker run -it --name vm3 -v /etc/yum.repos.d/hh.repo:/etc/yum.repos.d/hh.repo:ro rhel7 bash #没有shell的交互界面ro只读比较的安全
Docker managed volume
Bind mount 必须指定host文件系统路径,限制了移植性
Docker managed volume 不需要mount源,docker会自动创建数据卷目录
默认的数据卷 /var/lib/docker/volume
docker run -d --name web1 -p 80:80 -v /usr/share/nginx/html nginx 运行容器
docker inspect web1
数据会被直接复制到此文件夹,内容可以直接被修改
因为文件夹名字较长可以自定义文件夹
docker run -d --name web2 -p 80:80 -v website2:/usr/share/nginx/html nginx
docker inspect web2
docker volume ls
docker rm web2 web1
docker volume rm 388121f1750f25906402371110b30d43be3c41b59094ff630b4df88a6eb02e7e
docker volume prune 删除不使用的数据卷
docker run -d --name web1 -p 80:80 -v webdata:/usr/share/nginx/html nginx #运行容器
cd /var/lib/docker/volumes/webdata/ _data/
修改文件查看,把原来的数据自动复制到本地的目录
docker run -d --name web2 -p 80:80 -v webdata:/usr/share/nginx/html nginx
docker run -d --name web3 -p 80:80 -v webdata:/usr/share/nginx/html nginx
可以挂载多个
卷插件
卷插件应用 convoy
搭建nfs服务:
yum install nfs-utils.x86_64 -y
systemctl start rpcbind
netstat -antlp | grep :111
vim /etc/exports
mkdir /mnt/nfs
systemctl start nfs
exportfs -v
cd /mnt/nfs/
touch file1
server2:
yum install nfs-utils.x86_64 -y
systemctl start rpcbind
netstat -antlp | grep :111
mkdir /mnt/nfs
showmount -e 172.25.13.1
mount 172.25.13.1:/mnt/nfs/ /mnt/nfs/
cd /mnt/nfs/
部署插件
部署插件server1和server2配置一样
tar zxf convoy.tar.gz
cp convoy convoy-pdata_tools /usr/local/bin/ 设置环境变量
convoy daemon --drivers vfs --driver-opts vfs.path=/mnt/nfs &
convoy create vol1 创建一个卷
convoy list
convoy inspect vol1 查看
cd /mnt/nfs/
docker run -it --name vm1 -v vol1:/data ubuntu #运行容器
创建文件
server1:查看
server2:查看
Down掉sever1容器 在server2上重创建容器文件依然在
删除先删除容器,然后删除vol1卷
docker rm vm1
convoy delete vol1
convoy list 查看
Ps ax kill关闭