Skip to content

Docker Volume

查看容器存储卷挂载情况使用:docker inspect -f 【【.Mounts】】 ID

Volume 数据共享

容器busybox2共享使用busybox2的数据卷

docker create --name busybox1 -v /data/test1:/data/test1 busybox

docker run -itd --name busybox2 --volumes-from busybox1 busybox
docker create --name busybox1 -v /data/test1:/data/test1 busybox

docker run -itd --name busybox2 --volumes-from busybox1 busybox

可以挂载多个共享卷,使用多个--volumes-from参数即可.

Volume 数据备份与恢复

ℹ️实用性不高。。。

备份:

docker run --rm --volumes-from busybox1 -v $(pwd):/backup busybox \
  tar cvf /backup/backup.tar /data/test1/
docker run --rm --volumes-from busybox1 -v $(pwd):/backup busybox \
  tar cvf /backup/backup.tar /data/test1/

恢复:

docker run -itd -v --name busybox3 /data/ busybox /bin/sh
docker run --volumes-from busybox1 -v /data/backup/:/backup busybox tar xf /backup/backup.tar
docker run -itd -v --name busybox3 /data/ busybox /bin/sh
docker run --volumes-from busybox1 -v /data/backup/:/backup busybox tar xf /backup/backup.tar

Volume 使用外部存储(NFS)

简单配置 NFS 服务器(172.16.1.128):

yum install nfs-utils rpcbind -y
mkdir -p /data/nfs/docker
echo "/data/nfs *(rw,no_root_squash,sync)">>/etc/exports
exportfs -r
systemctl start rpcbind nfs-server
# 查看 NFS 状态
showmount -e localhost
yum install nfs-utils rpcbind -y
mkdir -p /data/nfs/docker
echo "/data/nfs *(rw,no_root_squash,sync)">>/etc/exports
exportfs -r
systemctl start rpcbind nfs-server
# 查看 NFS 状态
showmount -e localhost

客户端(也就是容器端):

# 确保主机安装了 nfs 的客户端工具
yum install -y nfs-utils rpcbind

# 创建 NFS 挂载卷
docker volume create --driver local \
  --opt type=nfs \
  --opt o=addr=172.16.1.128,rw \
  --opt device=:/data/nfs \
  volume-nfs
# 确保主机安装了 nfs 的客户端工具
yum install -y nfs-utils rpcbind

# 创建 NFS 挂载卷
docker volume create --driver local \
  --opt type=nfs \
  --opt o=addr=172.16.1.128,rw \
  --opt device=:/data/nfs \
  volume-nfs

查看并使用 NFS 外部存储:

# 查看
docker volume ls
docker volume inspect volume-nfs

# 使用 NFS
docker run -itd --name busybox4 -v volume-nfs:/nfs busybox
# 查看容器挂载情况
docker inspect -f 【【.Mounts】】 busybox4
# 查看
docker volume ls
docker volume inspect volume-nfs

# 使用 NFS
docker run -itd --name busybox4 -v volume-nfs:/nfs busybox
# 查看容器挂载情况
docker inspect -f 【【.Mounts】】 busybox4

删除挂载卷:

docker rm -f -v volume-nfs
# 或者
docker volume rm volume-nfs
docker rm -f -v volume-nfs
# 或者
docker volume rm volume-nfs