学习笔记
前言
学会了搭建Docker私有镜像仓库后了解容器卷相关内容
一、容器卷是什么,能做什么?
卷就是目录或文件,存在于一个或者多个容器中, 由docker挂载到容器,但不属于联合文件系统,因此能绕过Union File System提供一些用于持续存储或共享数据的特性。卷的设计目的就是数据的持久化,完全独立于容器的生存周期,因此Docker不会在容器删除时删除其挂载的数据卷。
作用:
映射,容器内的数据备份+持久化到本地主机目录。
二、容器卷操作步骤(例子)
特别注意 :加入 - - privileged=true
#用于提供容器中的进程对主机系统的完全访问权限
1 . 宿主和容器之间映射添加容器卷
① 直接命令添加
② 命令
公式:docker run -it -v /宿主机目录:/容器内目录 镜像名
- 验证数据是否同步(双向验证)
docker run -it --name myu3 --privileged=true -v /tmp/myHostData:/tmp/myDockerData ubuntu /bin/bash
cd /tmp/myDockerData/ //进入容器内目录
touch dockerin.txt //在容器内目录新建一个文档
cd /tmp/myHostData/ //进入宿主机目录
ls //查看目录
touch hostin.txt //在主机目录创建一个文档
//返回容器内目录 ls -l 查看
提示:其中输入的目录会自动创建,且ubuntu后不写/bin/bash时会默认shell不影响</font>
- 查看数据卷是否挂载成功
docker inspect 容器ID
docker inspect 289c742ccb90
思考:如果docker容器stop,主机修改,docker重启后数据是否同步?
docker stop 289c742ccb90
touch c.txt //在主机目录中创建
docker start 289c742ccb90
docker exec -it 289c742ccb90 /bin/bash
cd /tmp/myDockerData/
ls -l
//结果发现与宿主机目录内容相同,存在- c.txt -文件
显然数据仍然是同步的 ^ _ ^
2 . 读写规则映射
docker run -it --privileged=true -v /宿主机绝对路径目录:/容器内目录:rw 镜像名
rw = read + write
*不单独说明时默认为 rw
- 设置只读
/容器目录:ro 镜像名(容器只能读取不能写)
ro = read only
3 . 卷的继承和共享
- 在容器1完成和宿主机的映射
docker run -it --privileged=true -v /mydocker/u:/tmp --name u1 ubuntu
- 容器2继承容器1的卷规则
语法:docker run -it --privileged=true –volumes-from 父类 --name u2(目录) ubuntu(镜像名)
docker run -it --privileged=true -volumes from u1 --name u2 ubuntu
// u2 继承了u1 的内容
在容器2中更改内容在宿主机和容器1中均会同步,实现数据的共享传递。
中途删除容器1,在容器2中更改添加内容依旧同步在宿主机,恢复容器1,数据也会同步。
总结
容器卷是一种非常有用的工具,可以帮助开发人员更好地管理容器中的数据,并提高容器的性能和安全性。