工资群发助手在哪里(工资群发助手收费的吗)
838
2022-05-29
docker容器数据卷
前言
是什么?
Docker的理念
能干嘛
数据卷(在容器内添加)
方式
直接命令添加
DockerFile添加
数据卷容器
是什么
总体介绍
容器间传递共享(--volumes-from)
总结
前言
这篇博文介绍的是Docker容器数据卷,关于这部分内容也许是我们学习和使用docker的核心知识。学习了这部分知识,我们就可以制作自己的将镜像,运行自己定制的容器,可以随自己的需要任意使用docker,实实在在的解决我们的工作痛点,提高我们的工作效率,这就是docker技术存在的意义。
有需要的同学可以了解一下这篇文章,谢谢。
是什么?
Docker的理念
将运用与运行的环境打包形成容器运行,运行可以伴随着容器,但是我们对数据的要求希望是持久化的
容器之间希望有可能共享数据
Docker容器产生的数据,如果不通过Docker commit生成新的镜像,使得数据作为镜像的一部分保存下来,那么当容器删除后,数据自然也就没有了
为了能保存数据在docker中我们使用卷
一句话:有点类似我们redis里面的rdb和aof文件
能干嘛
容器的持久化
容器间继承+共享数据
卷就是目录或文件,存在于一个或多个容器中,有docker挂载到容器,但不属于联合文件系统,因此能够绕过Union File system 提供一些用于持续存储或共享数据的特性:
卷的设计目的就是数据的持久化,完全独立于容器的生存周期,因此Docker不会在容器删除时删除其挂在的数据卷
数据卷可在容器之间共享或重用数据,也可以完成容器与主机之间的数据共享。
卷中的更改可以直接生效
数据卷中的更改不会包含在镜像的更新中
数据卷的生命周期一直持续到没有容器使用它为止
docker cp 从容器内拷贝文件到主机上
数据卷(在容器内添加)
方式
直接命令添加
DockerFile添加
直接命令添加
命令: docker run -it -v /宿主机绝对路径目录:/容器内目录 镜像名
查看数据卷是否挂载成功
容器和宿主机之间数据共享
容器停止退出后,主机修改后数据是否同步
命令(带权限)
docker run -it -v /宿主机绝对路径目录:/容器内目录:ro 镜像名
解释
ro:只读
docker inspect 获取容器/镜像的元数据。
docker inspect是docker客户端的原生命令,用于查看docker对象的底层基础信息。包括容器的id、创建时间、运行状态、启动参数、目录挂载、网路配置等等。另外,该命令也可以用来查看docker镜像的信息。
docker inspect [OPTIONS] NAME|ID [NAME|ID…]
OPTIONS说明:
-f :指定返回值的模板文件。
-s :显示总的文件大小。
–type :为指定类型返回JSON。
# 查看redis:latest镜像信息 docker inspect --type=image redis # 查看redis容器信息 docker inspect redis
1
2
3
4
5
DockerFile添加
根目录下新建mydocker文件夹并进入
可在Dockerfile中使用VOLUME指令来给镜像添加一个或多个数据卷
File构建
# volume test FROM centos VOLUME ["/dataVolumeContainer1","/dataVolumeContainer2"] CMD echo "finised,---------success1" CMD "/bin/bash"
1
2
3
4
5
翻译一下,大致是以下意思:
docker run -it -v /host1:/dataVolumeContainer1 -v /host2:/dataVolumeContainer2 /bin/bash
1
build后生成镜像:获得了一个新的镜像【zzyy/centos】
run容器
通过上述步骤,容器内的卷目录地址已经知道对应的主机目录地址哪??
主机对应默认地址
使用docker inspect [IMAGE_ID]
数据卷容器
是什么
命名的容器挂载数据卷,其它容器通过挂载这个(父容器)实现数据共享,挂载数据卷的容器,称之为数据卷容器
总体介绍
以上一步新建的镜像zzyy/centos为模板并运行容器dc01/dc02/dc03
它们已经具有容器卷:/dataVolumeContainer1和/dataVolumeContainer2
容器间传递共享(–volumes-from)
先启动一个父容器dc01:在dataVolumeContainer2新增内容
dc02/dc03继承dc01
–volumes-from :继承
命令:dc02/dc03分别在dataVolumeContainer2各自新增内容
回到dc01可以看到02/03各自添加的都能共享了
删除dc01,在dc02修改后dc03可否访问
可以访问,父容器dc01删除之后,子容器dc02和dc03也可以进行数据共享。
删除dc02后dc03可否访问 --可以访问
新建dc04继承dc03后再删除dc03 --可以访问
结论:容器之间配置信息的传递,数据卷的生命周期一直持续到没有容器使用它为止。
总结
欢迎加关注,谢谢!!!!
Docker Redis 容器
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。