技术分享
Docker 容器数据卷
00 分钟
2024-6-5
2024-6-8
type
status
date
slug
summary
tags
category
icon
password
❌可能会遇到的坑,容器卷记得加入:
Docker挂载主机目录访问 如果出现cannot open directory.:Permission denied
解决办法:在挂载目录后多加一个--privileged=true参数即可
如果是CentOS7安全模块会比之前系统版本 加强,不安全的会先禁止,所以目录挂载的情况被默认为不安全的行为,在SELinux里面挂载目录被禁止掉了,如果要开启,我们一般使用--privileged=true命令,扩大容器的权限解决挂载目录没有权限的问题,也即使用该参数,container内的root拥有真正的root权限,否则,container内的root只是外部的一个普通用户权限。

是什么

卷就是目录或文件,存在于一个或多个容器中,由docker挂载到到容器,但不属于联合文件系统,因此能够绕过Union File System提供
一些用于持续存储或共享数据的特性:
卷的设计目的就是数据的持久化,完全独立于容器的生存周期,因此Docker不会在容器删除时删除其挂载的数据卷
  1. 一句话:有点类似我们Redis里面的rdb和aof文件
  1. 将docker容器内的数据保存进宿主机的磁盘中
  1. 运行一个带有容器卷存储功能的容器实例

能干嘛

  • 将运用与运行的环境打包镜像,run后形成容器实例运行,但是我们对数据的要求希望是持久化的
Docker容器产生的数据,如果不备份,那么当容器实例删除除后,容器内的数据自然也就没有了
为了能保存数据在docker中我们使用卷。
特点:
  1. 数据卷可在容器之间共享或重用数据
  1. 卷中的更改可以直接实时生效,爽
  1. 数据卷中的更改不会包含在镜像的更新中
  1. 数据卷的生命周期一直持续到没有容器使用它为止
notion image

容器卷ro和rw读写规则

容器实例内部被限制,只能读取不能写
notion image
"Docker inspect" 命令用于获取有关Docker对象(如容器、镜像、网络等)的详细信息。它提供了一个逐层分析
Docker对象的功能,可以查看其所有的属性和配置。
"Docker inspect"命令的作用如下:
  1. 获取对象信息:通过"Docker inspect"命令,可以获取指定Docker对象的详细信息。这包括对象的ID、名称、标签、创建时间等基本信息。
  1. 查看配置和属性:通过"Docker inspect"命令,可以查看Docker对象的配置和属性。例如,对于容器对象,可以查看容器的网络设置、挂载的卷、环境变量等配置信息。
  1. 调试和故障排除:"Docker inspect"命令还可以用于调试和故障排除。通过查看对象的详细信息,可以了解对象的状态、运行参数等,帮助定位和解决问题。
  1. 与其他命令结合使用:"Docker inspect"命令可以与其他Docker命令结合使用,以获取更详细的信息并进行更复杂的操作。例如,可以使用它来获取容器的IP地址,然后与其他容器进行通信。
使用示例:
其中,"<object_id>"是目标Docker对象的ID或名称。通过指定对象的ID或名称,可以获取该对象的详细信息。
需要注意的是,Docker对象的详细信息以JSON格式返回。因此,可以使用适当的工具(如jq)来解析和处理返回的JSON数据,以提取所需的信息。

容器卷之间的继承

上一篇
Ubuntu 22.04 上启用SSH远程服务
下一篇
Python字符串的常用操作