zoukankan      html  css  js  c++  java
  • Docker容器数据卷volumes-from

    定义4个终端:

    终端host
    终端container dc01
    终端container dc02
    终端container dc03
    各个容器之间的关系:

    1、启动一个父容器dc01
    启动一个父容器dc01,并在 dataVolumeContainer2 新增内容。

    命令格式:docker run -it --name dc01 zzyy/centos

    操作步骤如下:

    终端container dc01:

    创建并启动dc01容器,并在 dataVolumeContainer2 目录中添加 dc01.txt

    [root@localhost mydocker]# docker run -it --name dc01 zzyy/centos
    [root@3caa375ebfd9 /]# ll
    total 12
    -rw-r--r--. 1 root root 12030 Oct 6 19:15 anaconda-post.log
    lrwxrwxrwx. 1 root root 7 Oct 6 19:14 bin -> usr/bin
    drwxr-xr-x. 2 root root 6 Nov 27 03:02 dataVolumeContainer1
    drwxr-xr-x. 2 root root 6 Nov 27 03:02 dataVolumeContainer2
    drwxr-xr-x. 5 root root 360 Nov 27 03:02 dev
    drwxr-xr-x. 1 root root 66 Nov 27 03:02 etc
    drwxr-xr-x. 2 root root 6 Apr 11 2018 home
    lrwxrwxrwx. 1 root root 7 Oct 6 19:14 lib -> usr/lib
    lrwxrwxrwx. 1 root root 9 Oct 6 19:14 lib64 -> usr/lib64
    drwxr-xr-x. 2 root root 6 Apr 11 2018 media
    drwxr-xr-x. 2 root root 6 Apr 11 2018 mnt
    drwxr-xr-x. 2 root root 6 Apr 11 2018 opt
    dr-xr-xr-x. 264 root root 0 Nov 27 03:02 proc
    dr-xr-x---. 2 root root 114 Oct 6 19:15 root
    drwxr-xr-x. 10 root root 130 Oct 6 19:15 run
    lrwxrwxrwx. 1 root root 8 Oct 6 19:14 sbin -> usr/sbin
    drwxr-xr-x. 2 root root 6 Apr 11 2018 srv
    dr-xr-xr-x. 13 root root 0 Nov 27 02:53 sys
    drwxrwxrwt. 7 root root 132 Oct 6 19:15 tmp
    drwxr-xr-x. 13 root root 155 Oct 6 19:14 usr
    drwxr-xr-x. 18 root root 238 Oct 6 19:14 var
    [root@3caa375ebfd9 /]# cd dataVolumeContainer2/
    [root@3caa375ebfd9 dataVolumeContainer2]# ls
    [root@3caa375ebfd9 dataVolumeContainer2]# echo "container dc01 add"> dc01.txt
    [root@3caa375ebfd9 dataVolumeContainer2]# ls
    dc01.txt
    [root@3caa375ebfd9 dataVolumeContainer2]# cat dc01.txt
    container dc01 add
    [root@3caa375ebfd9 dataVolumeContainer2]#
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    终端host:
    验证容器启动情况

    [root@localhost _data]# docker ps
    CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
    3caa375ebfd9 zzyy/centos "/bin/sh -c /bin/bash" 22 minutes ago Up 22 minutes dc01
    [root@localhost _data]#
    1
    2
    3
    4
    2、dc02/dc03继承自dc01
    –volumes-form
    dc02/dc03分别在dataVolumeContainer2各自新增内容

    命令格式
    dc02的 格式:

    docker run -it --name dc02 --volumes-from dc01 zzyy/centos
    1
    dc03的格式:

    docker run -it --name dc03 --volumes-from dc01 zzyy/centos
    1
    操作步骤如下:
    终端container dc02:

    创建并启动dc02容器,并在 dataVolumeContainer2 目录中添加 dc02.txt

    [root@localhost java]# docker run -it --name dc02 --volumes-from dc01 zzyy/centos
    [root@7dbdb68f3e73 /]# ll
    total 12
    -rw-r--r--. 1 root root 12030 Oct 6 19:15 anaconda-post.log
    lrwxrwxrwx. 1 root root 7 Oct 6 19:14 bin -> usr/bin
    drwxr-xr-x. 2 root root 6 Nov 27 03:02 dataVolumeContainer1
    drwxr-xr-x. 2 root root 22 Nov 27 03:09 dataVolumeContainer2
    drwxr-xr-x. 5 root root 360 Nov 27 03:17 dev
    drwxr-xr-x. 1 root root 66 Nov 27 03:17 etc
    drwxr-xr-x. 2 root root 6 Apr 11 2018 home
    lrwxrwxrwx. 1 root root 7 Oct 6 19:14 lib -> usr/lib
    lrwxrwxrwx. 1 root root 9 Oct 6 19:14 lib64 -> usr/lib64
    drwxr-xr-x. 2 root root 6 Apr 11 2018 media
    drwxr-xr-x. 2 root root 6 Apr 11 2018 mnt
    drwxr-xr-x. 2 root root 6 Apr 11 2018 opt
    dr-xr-xr-x. 270 root root 0 Nov 27 03:17 proc
    dr-xr-x---. 2 root root 114 Oct 6 19:15 root
    drwxr-xr-x. 10 root root 130 Oct 6 19:15 run
    lrwxrwxrwx. 1 root root 8 Oct 6 19:14 sbin -> usr/sbin
    drwxr-xr-x. 2 root root 6 Apr 11 2018 srv
    dr-xr-xr-x. 13 root root 0 Nov 27 02:53 sys
    drwxrwxrwt. 7 root root 132 Oct 6 19:15 tmp
    drwxr-xr-x. 13 root root 155 Oct 6 19:14 usr
    drwxr-xr-x. 18 root root 238 Oct 6 19:14 var
    [root@7dbdb68f3e73 /]# cd d
    dataVolumeContainer1/ dataVolumeContainer2/ dev/
    [root@7dbdb68f3e73 /]# cd cd dataVolumeContainer2/
    bash: cd: cd: No such file or directory
    [root@7dbdb68f3e73 /]# cd dataVolumeContainer2/
    [root@7dbdb68f3e73 dataVolumeContainer2]# ls
    dc01.txt
    [root@7dbdb68f3e73 dataVolumeContainer2]# cat dc01.txt
    container dc01 add
    [root@7dbdb68f3e73 dataVolumeContainer2]#
    [root@7dbdb68f3e73 dataVolumeContainer2]# echo "container dc02" > dc02.txt
    [root@7dbdb68f3e73 dataVolumeContainer2]# ls
    dc01.txt dc02.txt
    [root@7dbdb68f3e73 dataVolumeContainer2]#
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    终端container dc03:

    创建并启动dc03容器,并在 dataVolumeContainer2 目录中添加 dc03.txt

    [root@localhost java]# docker run -it --name dc03 --volumes-from dc01 zzyy/centos
    [root@4dfdba337ef2 /]# ls
    anaconda-post.log bin dataVolumeContainer1 dataVolumeContainer2 dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var
    [root@4dfdba337ef2 /]# ll
    total 12
    -rw-r--r--. 1 root root 12030 Oct 6 19:15 anaconda-post.log
    lrwxrwxrwx. 1 root root 7 Oct 6 19:14 bin -> usr/bin
    drwxr-xr-x. 2 root root 6 Nov 27 03:02 dataVolumeContainer1
    drwxr-xr-x. 2 root root 22 Nov 27 03:09 dataVolumeContainer2
    drwxr-xr-x. 5 root root 360 Nov 27 03:33 dev
    drwxr-xr-x. 1 root root 66 Nov 27 03:33 etc
    drwxr-xr-x. 2 root root 6 Apr 11 2018 home
    lrwxrwxrwx. 1 root root 7 Oct 6 19:14 lib -> usr/lib
    lrwxrwxrwx. 1 root root 9 Oct 6 19:14 lib64 -> usr/lib64
    drwxr-xr-x. 2 root root 6 Apr 11 2018 media
    drwxr-xr-x. 2 root root 6 Apr 11 2018 mnt
    drwxr-xr-x. 2 root root 6 Apr 11 2018 opt
    dr-xr-xr-x. 272 root root 0 Nov 27 03:33 proc
    dr-xr-x---. 2 root root 114 Oct 6 19:15 root
    drwxr-xr-x. 10 root root 130 Oct 6 19:15 run
    lrwxrwxrwx. 1 root root 8 Oct 6 19:14 sbin -> usr/sbin
    drwxr-xr-x. 2 root root 6 Apr 11 2018 srv
    dr-xr-xr-x. 13 root root 0 Nov 27 02:53 sys
    drwxrwxrwt. 7 root root 132 Oct 6 19:15 tmp
    drwxr-xr-x. 13 root root 155 Oct 6 19:14 usr
    drwxr-xr-x. 18 root root 238 Oct 6 19:14 var
    [root@4dfdba337ef2 /]# cd dataVolumeContainer2/
    [root@4dfdba337ef2 dataVolumeContainer2]# ls
    dc01.txt
    [root@4dfdba337ef2 dataVolumeContainer2]# ls
    dc01.txt dc02.txt
    [root@4dfdba337ef2 dataVolumeContainer2]# echo "container dc03 addd" > dc03.txt
    [root@4dfdba337ef2 dataVolumeContainer2]# ls
    dc01.txt dc02.txt dc03.txt
    [root@4dfdba337ef2 dataVolumeContainer2]#
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    终端host:
    查看容器运行情况:

    [root@localhost _data]# docker ps
    CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
    4dfdba337ef2 zzyy/centos "/bin/sh -c /bin/bash" 3 minutes ago Up 3 minutes dc03
    7dbdb68f3e73 zzyy/centos "/bin/sh -c /bin/bash" 19 minutes ago Up 19 minutes dc02
    3caa375ebfd9 zzyy/centos "/bin/sh -c /bin/bash" 34 minutes ago Up 34 minutes dc01
    [root@localhost _data]#
    1
    2
    3
    4
    5
    6
    dc01、dc02、dc03运行正常。

    3、回到dc01可以看到02/03各自添加的都能共享
    终端container dc01:

    [root@3caa375ebfd9 dataVolumeContainer2]# ls
    dc01.txt dc02.txt dc03.txt
    [root@3caa375ebfd9 dataVolumeContainer2]#
    1
    2
    3
    4、删除dc01,dc02修改后,dc03可否访问
    终端host:
    删除dc01

    [root@localhost _data]# docker ps
    CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
    4dfdba337ef2 zzyy/centos "/bin/sh -c /bin/bash" 2 hours ago Up 2 hours dc03
    7dbdb68f3e73 zzyy/centos "/bin/sh -c /bin/bash" 3 hours ago Up 3 hours dc02
    3caa375ebfd9 zzyy/centos "/bin/sh -c /bin/bash" 3 hours ago Up 2 hours dc01
    [root@localhost _data]# docker rm -f 3caa375ebfd9
    3caa375ebfd9
    [root@localhost _data]#
    1
    2
    3
    4
    5
    6
    7
    8
    终端container dc02:
    在dc02中添加新文件,并且可以看见dc01虽然被删除了,但是dc01的创建的文件还在。

    [root@7dbdb68f3e73 dataVolumeContainer2]# ls
    dc01.txt dc02.txt dc03.txt
    [root@7dbdb68f3e73 dataVolumeContainer2]# echo "container dc02 add 22" > dc02_update.txt
    [root@7dbdb68f3e73 dataVolumeContainer2]# ls
    dc01.txt dc02.txt dc02_update.txt dc03.txt
    [root@7dbdb68f3e73 dataVolumeContainer2]#
    1
    2
    3
    4
    5
    6
    终端container dc03:
    dc01.txt 还在,dc01.txt中的内容也能获取。
    新创建的 dc02_update.txt 也在。

    [root@4dfdba337ef2 dataVolumeContainer2]# ls
    dc01.txt dc02.txt dc02_update.txt dc03.txt
    [root@4dfdba337ef2 dataVolumeContainer2]# cat dc01.txt
    container dc01 add
    [root@4dfdba337ef2 dataVolumeContainer2]#

    1
    2
    3
    4
    5
    6
    5、删除dc02后,dc03可否访问
    6、新建dc04,继承dc03后,再删除dc03
    结论:容器之间配置信息的传递,数据卷的生命周期一直持续到没有容器使用它为止。
    ---------------------
    作者:xiaojin21cen
    来源:CSDN
    原文:https://blog.csdn.net/xiaojin21cen/article/details/84564973

  • 相关阅读:
    哥德尔不完备定理
    关于欧拉公式证明的一个延拓
    关于贝叶斯定理的一个延拓
    贝克莱悖论
    自然数的公理化理论体系定义的新方法
    关于Spring中的<context:annotation-config/>配置
    <mvc:default-servlet-handler/>的作用
    web.xml context-param配置
    Spring JDBC框架操作mysql数据库
    Spring + JDBC example
  • 原文地址:https://www.cnblogs.com/sucretan2010/p/11014567.html
Copyright © 2011-2022 走看看