开发者学堂课程【Docker 快速入门:Docker 容器数据卷 volumes-from】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/850/detail/14044
Docker 容器数据卷 volumes-from
内容介绍
一.数据卷容器是什么
二.数据卷容器总体介绍
三.容器间传提共享
一.数据卷容器是什么
数据卷是数据持久化的一个操作,什么是数据卷容器呢?
命名的容器挂载数据卷,其它容器通过挂载这个(父容器)实现数据共享,挂载数据卷的容器,称之为数据卷容器。
一句话讲解就是:
活动硬盘上面挂活动硬盘,实现数据的传递依赖。
班长的活动硬盘挂在老师的机器上,这就是前面讲的主机到容器,容器到主机。比方说一组二组三组的组长也有三个活动硬盘,假设又挂在班长的活动硬盘上面。这个就可以进行数据的传递。
二.数据卷容器总体介绍
-以上一步新建的镜像 zzyy/centos 为模板并运行容器 dc01/dc02/dc03
假设1是父容器,有点像主从父制,一号机有了,另外那个机器也会有。
-它们已经具有容器卷
/dataVolumeContainer1
/dataVolumeContainer2
三.容器间传提共享
- 先启动一个父容器 dc01 ——在 dataVolumeContainer2 新增内容
[root@atguigu /]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATU US PORTS NAMES
[root@atguigu /]#
说明当前没有正在运行的容器了。
[root@atquigu /]# dockerrun-it--name dc01zzyy/centos
[root@5ae43b1bcf46 /]#
ll
total 52
lrwxrwxrwx. 1 root root 7 May 31 18:02 bin->usr/bin
drwxr-xr-x. 2 root root 4096 Jul 13 03:55 dataVolumeContainer1
drwxr-xr-x. 2 root root 4096 Jul 1303:55dataVolumeContainer2
drwxr-xr-x. 5 root root 380 Jul 13 03:55 dev
drwxr-xr-x. 47 root root 4096 Jul 13 03:55 etc
drwxr-xr-x. 2 root root 4096 Apr 11 04:59 home
lrwxrwxrwx. 1 root root 7 May 31 18:02 lib -> usr/lib
lrwxrwxrwx. 1 root root 9 May 31 18:02 2 lib64 -> usr/lib64
drwxr-xr-x. 2 root root 4096 Apr 11 04:59 media
drwxr-xr-x. 2 root root 4096 Apr 11 04:59 mnt
drwxr-xr-x. 2 root root 4096 Apr 11 04:59 opt
dr-xr-xr-x. 295 root root 0 Jul 13 03:55 proc
dr-xr-x---. 2 root root 4096 May 31 18:03 root
drwxr-xr-x. 10 root root 4096 May 31 18:03 run
lrwxrwxrwx. 1 root root 8 May 31 18:02 sbin -> usr/sbin
drwxr-xr-x. 2 root root 4096 Apr 11 04:59 srv
drwxr-xr-x 13 root root 0 Jul 13 01:45 sys
drwxrwxrwt. 7 root root 4096 May 31 18:03 tmp
drwxr-xr-x. 13 root root 4096 May 3118:02 usr
drwxr-xr-x. 18 root root 4096 May 31 18:02var
[root@5ae43b1bcf46 /]#cd dataVolumeContainer
[root@5ae43b1bcf46 dataVolumeContainer2]#pwd
/
dataVolumeContainer2
[
root@5ae43b1bcf46 dataVolumeContainer2]#ll total 0
[root@5ae43b1bcf46 dataVolumeContainer2]#touch dc01 add.txt
[root@5ae43b1bcf46 dataVolumeContainer2]#
[
root@5ae43b1bcf46 dataVolumeContainer2]#[root@atguigu/]#
[root@atguigu /]# docker ps
[root@atguigu /]#
- dc02/dc03 继承自 dc01
——volumes-from
——命令 ——dc02/dc03 分别在 dataVolumeContainer2 各自新增内容
[root@5ae43b1bcf46 dataVolumeContainer2]#[root@atguigu/]#
[root@atguigu /]# docker ps
[root@atguigu /]# docker run -it--name dc02 T-volumes-from dc01 zzyy/centos
[root@9784bd77d033/#ll
total 52
Lrwxrwxrwx. 1root root 7 May 31 18:02 bin -> usrfbin
drwxr-xr-x. 2 root root 4096 Jul 13 03:55 dataVolumeContainer1
arwxr-xr-x. 2 root root 4096 Jul 13 03:55 dataVolumeContainer2
drwxr-xr-x. 5 root root 380 Jul 13 03:57 dev
drwxr-xr-x. 47 root root 4096 Jul 13 03:57 etc
drwxr-xr-x. 2 root root 4096 Apr 11 04:59 home
Lrwxrwxrwx. i root root 7 May 31 18:02 2 lib -> usr/lib
Lrwxrwxrwx. i root root 9 May 31 18:02 lib64 -> usr/lib64
drwxr-xr-x. 2 root root 4096 Apr 11 04:59 media
drwxr-xr-x. 2 root root 4096 Apr 11 04:59 mnt
drwxr-xr-x. 2 root root 4096 Apr 11 04: 59 opt
dr-xr-xr-x.301 root root0 Jul 13 03:57 proc
dr-xr-X---. 2 root root 4096 May 31 18:03root
drwxr-xr-x. 10 root root 4096 May 31 18:03run
rwxrwxrwx. 1 root root 8 May 31 18:02 sbin -> usr/sbin
drwxr-xr-x. 2 root root 4096 Apr 11 04:59srv
drwxr-xr-x 13 root rooto Jul 13 01:45 sys
drwxrwxrwt. 7 root root 4096 May 31 18:03 tmp
drwxr-xr-x. 13 root root 4096 May 31 18:02 usr
drwxr-xr-x. 18 root root4096 May 31 18:02 var
[root@9784bd77d033 dataVolumeContainer2]# touch dc02_add. txt
[root09784bd77d033 dataVolumeContainer2]#
Exit 退出
[root@atguigu /]# docker ps
[
root@atguigu /]#docker run-it--namedc03--volumes-from dc1zzyy/centos [root@11ddcf53de8c/]#cddataVolumeContainer2 [root@11ddcf53de8c dataVolumeContainer2]#ll
total 0
-rw-r--r--. 1 root root 0 Jul 1303:55 dco1.add.txt
-rw-r--r-- 1 root root 0 Jul 1303:58 dc02.add.txt [root@11ddcf53de8cdataVolumeContainer2]#
[root@atguigu /]# docker ps
[root@atguigu /]#
里面添加了以后,会不会又影响一和二呢?那么这个时候我们 Docker touch 既达到了继承,又达到了共享和传递数据相关的目的,这样 docker 容器会非常的强大,父到子子到父,可以互相传递:
- 回到 dc01 可以看到02/03各自添加的都能共享了
- 删除 dc01,dc02 修改后 dc03 可否访问
[
root@atguigu/# docker attache dc02
docker: 'attache’is not a docker command.
See'docker—help’
[root@atguigu /]# docker attach dc02
[root
@
9784bd77d033dataVolumeContainer2]#ll
total 0
-rw-r--r- 1 root root 0 Jul 13 03:55 dc01_addtxt
rw-r root root 0 Jul 13 03:58 dc02_addtxt
rw-r pot root 0 Jul 13 03:58 dc03_add.txt
root 033 dataVolumeContainer2]#
删除 dc02 后 dc03 可否访问
大家都知道2和3继承1,
[root@atguigu /]#dockerattach dc02
[
root@9784bd77d033 dataVolumeContainer2]# pwd dataVolumeContainer2
[root@9784bd77d033 dataVolumeContainer2]#ll
total 0
-rw-r--r--. 1 root root 0 Jul 1303:55 dc01addtxt
rw-r--r--. 1 root root 0 Jul 1303:58 dc02_addtxt
rw-r--r--. 1 root root 0 Jul 1303:58 dc03addtxt
[root@9784bd77d033dataVolumeContainer2]#dc02_update.txt
bash: dc02_updatetxt: command not found
[root@970 77d033 dataVolumeContainer2# touch dc02_upd
现在2没有受到影响,不用验证单也不会受到影响。但是问题是我二和三都几乘于一,现在没有1在二上面修改啦。
新建 dc04继承 dc03后再删除 dc03
[root@atguigu /]# docker attach dc03
[root@11ddcf53de8cdataVolumeContainer2]#pwd dataVolumeContainer2
[root@11ddcf53de8cdataVolumeContainer2]#ll
total 0
结论:容器之间配置信息的传递,数据卷的生命周期一直持续到没有容器使用它为止。