docker容器数据卷

容器的数据的持久化,和同步操作,让容器间可以数据共享,即使我们把容器删除也不会影响到我们持久化的数据。

例如:我们创建的redis容器,我们把数据库持久化后的文件使用数据卷的方式挂载,即使我们把redis删除也没有关系,我们只需要重新运行一个redis容器,持久化的又可以读取到。

在创建容器时,我们可以把需要修改的配置文件使用数据卷的方式挂载,这样我们就可以在宿主机上直接修改,然后重启一下容器,配置就修改好了。

  • 挂载数据卷语法
docker run -v [主机目录]:[容器目录] --name myubuntu --privileged=true ubuntu
  • 测试

创建一个ubuntu容器,挂载目录/tmp/docker_data到主机目录/tmp/host_data,然后在主机目录创建一个文件test.txt,进入容器内查看是否test.txt文件。

docker run -it -v /tmp/host_data:/tmp/docker_data --name myubuntu --privileged=true ubuntu /bin/bash
  • 查看挂载信息
docker inspect myubuntu

# 找到Mounts字段
 "Mounts": [
     {
         "Type": "bind",
         "Source": "/tmp/host_data",
         "Destination": "/tmp/docker_data",
         "Mode": "",
         "RW": true,
         "Propagation": "rprivate"
     }
 ]
  • 挂载目录的权限

指定挂载目录的权限,例如:我们只希望容器只能读取docker_data里面的内容,默认为可读可写(rw)

docker run -it -v /tmp/host_data:/tmp/docker_data:ro --name myubuntu --privileged=true ubuntu /bin/bash
  • 挂载目录的继承

如果我们容器挂载了10多个目录,在创建新容器时,我们也需要挂载这些目录,我们可以不用自己再写一遍,可以使用继承的方式来复制挂载的目录。

语法:--volumes-from [父类容器ID/名称]

docker run -it --volumes-from myubuntu --name myubuntu2 --privileged=true ubuntu /bin/bash

这样myubuntu2容器就和myubuntu挂载的目录一样了,即使myubuntu挂了,也不会影响到myubuntu2。

posted @ 2022-07-14 17:37  喵喵扑  阅读(85)  评论(0编辑  收藏  举报