Docker 容器数据卷——容器内添加数据卷(方式一)
一、Docker容器数据卷是什么?将运用与运行的环境打包形成容器运行 ,运行可以伴随着容器,但是我们对数据的要求希望是持久化的,容器之间希望有可能共享数据Docker容器产生的数据,如果不通过docker commit生成新的镜像,使得数据做为镜像的一部分保存下来,那么当容器删除后,数据自然也就没有了。为了能保存数据在docker中我们使用卷。二、Docker容器数据卷能干嘛容器的...
一、Docker容器数据卷是什么?
- 将运用与运行的环境打包形成容器运行 ,运行可以伴随着容器,但是我们对数据的要求希望是持久化的,容器之间希望有可能共享数据
- Docker容器产生的数据,如果不通过docker commit生成新的镜像,使得数据做为镜像的一部分保存下来,那么当容器删除后,数据自然也就没有了。
- 为了能保存数据在docker中我们使用卷。
二、Docker容器数据卷能干嘛
- 容器的持久化
- 容器间继承+共享数据
卷就是目录或文件,存在于一个或多个容器中,由docker挂载到容器,但不属于联合文件系统,因此能够绕过Union File System提供一些用于持续存储或共享数据的特性:
卷的设计目的就是数据的持久化,完全独立于容器的生存周期,因此Docker不会在容器删除时删除其挂载的数据卷
三、Docker容器数据卷特点
- 数据卷可在容器之间共享或重用数据
- 卷中的更改可以直接生效
- 数据卷中的更改不会包含在镜像的更新中
- 数据卷的生命周期一直持续到没有容器使用它为止
四、方式一:直接添加命令
直接添加命令: docker run -it -v /宿主机绝对路径目录:/容器内目录 镜像名
1、宿主机(即:虚拟机linux环境根目录)目录如下:
2、容器内目录(即:docker中启动centos镜像的容器目录)如下:
[root@localhost ~]# docker run -it centos /bin/bash
3、执行 docker run -it -v /宿主机绝对路径目录:/容器内目录 镜像名 命令:会在步骤1和步骤2的目录中生成宿主机绝对路径目录和容器内目录,如下图:
[root@localhost ~]#docker run -it -v /myDataVolume:/dataVolumeContainer centos
[root@/f89b5db98ede]#
1)、宿主机目录下会生成myDataVolume目录
2)容器内目录下会生成dataVolumeContainer目录
4、查看数据卷是否挂载成功命令:出现下图红框部分表示成功挂载数据卷
[root@localhost ~]#docker inspect f89b5db98ede
5、查看容器和宿主机之间数据共享
1)在宿主机myDataVolume目录下创建host.txt文件
[root@localhost myDataVolume]# touch host.txt
[root@localhost myDataVolume]# ll
总用量 0
- rw- r- - r - -. 1 root root 0 7月 05 12 22;56 host.txt
2)在容器中的dataVolumeContainer目录下也有host.txt文件
[root@f89b5db98ede dataVolumeContainer]# ll
total 0
- rw- r- - r - -. 1 root root 0 Jul 13 02;56 host.txt
以上1)和2)两步骤说明容器和宿主机之间数据共享
注意:
- 在宿主机myDataVolume目录下创建host.txt文件中添加和修改数据,在容器中的dataVolumeContainer目录下的host.txt文件中的内容和宿主机myDataVolume目录下创建host.txt文件中内容一样
- 在容器中的dataVolumeContainer目录下的host.txt文件中添加和修改数据,在宿主机myDataVolume目录下创建host.txt文件中的内容和容器中的dataVolumeContainer目录下的host.txt文件中内容一样
6、容器停止退出后,主机修改后数据是否同步
1)退出容器,并停止
[root@f89b5db98ede dataVolumeContainer]# exit
[root@localhost /]#
2)主机修改数据
[root@localhost myDataVolume]# touch host02.txt
[root@localhost myDataVolume]# vim host02.txt
[root@localhost myDataVolume]#
3)重启启动容器,并进入容器的dataVolumeContainer目录查看
[root@localhost ]# docker start f89b5db98ede
f89b5db98ede
[root@localhost ]# docker attsch f89b5db98ede
[root@f89b5db98ede /]# cd /dataVolumeContainer/
[root@f89b5db98ede dataVolumeContainer]# ll
4)
[root@f89b5db98ede dataVolumeContainer]# cat hosts02.txt
host update 01
[root@f89b5db98ede dataVolumeContainer]#
结论:容器停止退出后,主机修改后数据是同步的
7、命令(带权限)
docker run -it -v /宿主机绝对路径目录:/容器内目录:ro 镜像名
1)命令中不带:ro ,容器中的文件可读可写,如下图:
2)命令中带有:ro ,容器中的文件只读,如下图:
更多推荐
所有评论(0)