Docker学习之镜像,数据卷之类的操作

docker镜像原理

在这里插入图片描述

联合文件系统:UnionFS

略 ...

在这里插入图片描述

镜像commit

提交容器副本使之成为新的镜像

docker commit 
docker commit -m="提交的描述信息" -a="作者" 容器ID 要创建的目标镜像名字:[标签名]

容器数据卷

在容器停止时,将容器需要的数据,保存到主机目录中的概念
主要进行数据共享,数据持久化工作.
例如: 可以将 mysql 的 配置文件:my.cnf 映射到 宿主机的目录.之后. 可以在宿主机修改,
docker 会将修改 同步到 容器内的mysql 的 my.cnf配置文件

俩种方式: 命令添加,DockerFile 编写
docker run -it -v /宿主机绝对路径目录:/容器内目录 镜像名

docker run -it -v/myData:/etc/mysql mysql

查看数据卷是否挂在成功

docker inspect 容器ID

在这里插入图片描述
我们在容器中修改创建的一切行行为都会反映到宿主机中
我们在宿主机的修改 也会同步到 容器内. 就算容器已经停止,再次启动时会 进行同步
带权限

docker run -it -v /myData:/conMyData:ro 镜像ID

容器数据卷的数据只支持宿主机查看修改

DockerFile添加数据卷

这里没有接触到DockerFile的编写. 这里简单介绍一下
这里使用DockerFile添加数据卷,不能指定宿主机映射目录
在这里插入图片描述

编写DockerFile

FROM  centos
VOLUME ["/dataVolumeContainer1","/dataVolumetainer2"]
CMD echo "finished,------success"
CMD /bin/bash

build DockerFile

docker build -f mycentos -t 命名空间 .
-f: 指docker file 在哪里
-t 生成的镜像名字
.  指当前目录

使用

docker run -it /bin/bash

在这里插入图片描述
因为运行并没有指定 数据卷映射目录. docker 自动在宿主机默认了数据卷的目录

不能写错误

在数据卷内,不能建立文件或编译文件

在这里插入图片描述
遇到不能写错误,在 run 最后添加 --privikeged=true 参数即可

数据卷容器

命名的容器挂在数据卷. 其他的容器通过挂在这个 容器,实现数据共享. 成为数据卷容器
--volumes-from

案例

1. 启动父容器
docker run -it --name doc1 mycentos
touch 01.txt
2. 容器实例2 继承容器1,来自 mycentos 镜像
docker run -it --name doc2 --volumes-from doc1 mycentos
3. 运行第三个容器
docker run -it doc3 --volumes-from doc1 mycentos

在这里插入图片描述
图片是 命令执行流程

删除测试

删除 doc1 容器. doc2 和 doc3 的数据卷数据还在. 而且数据还可以共享.
在运行 doc4 容器. 之后将 doc3 删除. doc4 还会存在. 数据卷共享功能还能继续使用
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值