Docker(5)容器数数据卷

容器卷

小坑

报错 : cannot open directory.:Permission denied

解决方案 : 命令后推荐添加 --privileged=true

原因 : CentOS7安全模块会比之前的系统版本加强,不安全的会被禁止,目录挂载的情况默认会被认为是不安全行为,
在SELinux里面挂载目录被禁止掉,如果要开启就需要使用 –privileged=true 命令,扩大容器权限解决。
使用这个参数在容器内的root才真正拥有了root权限,否则容器内的root在外部只是一个普通用户权限

容器卷简介

是什么

数据卷就是目录或文件,存在一个或多个容器中,由docker挂载到容器,但不属于联合文件系统,因此能够绕过Union File
System提供的一些用于持续存储或共享数据的特性

什么用

  • 完成数据持久化
    • 我们使用registry创建私有库的时候,如果容器被关掉,我们将会失去库中内容 这时可以使用容器数据卷做备份

      如以下命令 我们使用-v 将本机/usr/local/myregistry/当做备份储存了存到宿主机

      docker run -d -p 5000:5000 -v /usr/local/myregistry/:/usr/local/doregistry --privileged=true --name=registry
      registry

其他小知识

  • 数据卷可以字容器之间共享或重用数据
  • 卷中的更改可以直接实时生效
  • 数据卷中的更改不会包含在镜像的更新中
  • 数据卷的生命周期一直持续到没有容器使用它为止

容器卷案例

乌班图容器和宿主机的数据共享

# 启动ubuntu容器 并使用数据卷
docker run -it --name myu --privileged=true -v /tmp/host_data:/tmp/docker_data ubuntu bash

# 进入绑定目录
cd /tmp/docker_data

# 创建数据
echo 'hello docker'>a.txt
# 查看数据
cat a.txt

# 返回宿主机 ctl + p + q
cd /tmp/host_data
vim a.txt

# 发现a.txt被同步到了宿主机 我们再插入数据
'hello docker'

# 重新进入容器
docker exec -it myu bash
cd /tmp/docker_data
cat a.txt
'hello world'
'hello docker'

数据卷持久化

# 将刚刚的ubuntu停止
docker stop myu

# 检查是否停止
docker ps 

# 启动刚刚的容器
docker start myu

# 进入容器
docker exec -it myu bash

# 查看数据是否还存在
cd /tmp/docker_data
cat a.txt

容器被删除也可复原,只需要run的时候把目录写对就可

启动两个容器目录相同,可以实现数据共享的操作

通过:rw 和 :ro 可以控制容器读写权限

容器卷常用命令

docker inspect 容器id或容器名

在返回数据中查找Mounts就能看到挂载的信息

"Mounts": [
            {
                "Type": "bind",
                "Source": "/tmp/host_data",
                "Destination": "/tmp/docker_data",
                "Mode": "",
                "RW": true,
                "Propagation": "rprivate"
            }
        ],

读写控制

# 在目录后添加:rw (默认)为读写模式
docker run -it --name myu --privileged=true -v /tmp/host_data:/tmp/docker_data:rw ubuntu bash
# ro 为只读模式
docker run -it --name myu --privileged=true -v /tmp/host_data:/tmp/docker_data:ro ubuntu bash

数据卷的继承

–volumes-from 父类

# 继承myu 跑一个 myu2
docker run -it --privileged=true --volumes-from myu --name myu2 ubuntu

# 自行查看绑定目录 发现文件还有
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值