zoukankan      html  css  js  c++  java
  • docker容器的数据管理之二(数据卷容器)

    在Docker的使用过程中往往需要对数据进行持久化,或者需要在多个容器之间进行数据共享,所以这就涉及到Docker容器的数据操作。 
    容器中数据管理主要有两种方式:数据卷和数据卷容器。

    数据卷(Data Volumes) ,是将容器内数据直接映射到本地宿主机。

    数据卷容器(Data Volume Containers),则是使用特定容器来维护数据卷。

    数据卷容器

    命名的容器挂载数据卷,其他容器通过挂载这个父容器实现数据共享,挂载数据卷的这个容器称为数据卷容器。

    1.启动dc01容器:docker run -it --name dc01 imageName

    [root@izbp13m488196e5hna361rz ~]# docker run -it --name dc01 nick/centos 
    [root@84db6b10578b /]# ls
    bin  dataVolumeContainer1  dataVolumeContainer2  dev  etc  home  lib  lib64  lost+found  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var

    由于镜像nick/centos是通过dockerfile添加了数据卷,所以dc01中有dataVolumeContainer1和dataVolumeContainer2两个数据卷

    2.启动dc02容器,继承自dc01:docker run -it --name dc02 --volumes-from dc01 imageName

    启动dc03容器,继承自dc01:docker run -it --name dc03 --volumes-from dc01 imageName

    [root@izbp13m488196e5hna361rz ~]# docker ps
    CONTAINER ID   IMAGE         COMMAND                  CREATED         STATUS         PORTS     NAMES
    4c5c595a66f1   nick/centos   "/bin/sh -c /bin/bash"   2 minutes ago   Up 2 minutes             dc03
    14997363df5e   nick/centos   "/bin/sh -c /bin/bash"   2 minutes ago   Up 2 minutes             dc02
    84db6b10578b   nick/centos   "/bin/sh -c /bin/bash"   9 minutes ago   Up 9 minutes             dc01
    [root@izbp13m488196e5hna361rz ~]# docker exec -it 14997363df5e ls /
    bin                   dev   lib         media  proc  sbin  tmp
    dataVolumeContainer1  etc   lib64       mnt    root  srv   usr
    dataVolumeContainer2  home  lost+found  opt    run   sys   var
    [root@izbp13m488196e5hna361rz ~]# docker exec -it 84db6b10578b ls /
    bin                   dev   lib         media  proc  sbin  tmp
    dataVolumeContainer1  etc   lib64       mnt    root  srv   usr
    dataVolumeContainer2  home  lost+found  opt    run   sys   var

    可见,dc02和dc03由于继承了dc01,所以也有dataVolumeContainer1和dataVolumeContainer2两个数据卷。

    3.在dc01、dc02、dc03的数据卷中随意修改其中一个,其余的两个都将同步

    [root@izbp13m488196e5hna361rz ~]# docker ps
    CONTAINER ID   IMAGE         COMMAND                  CREATED      STATUS          PORTS     NAMES
    4c5c595a66f1   nick/centos   "/bin/sh -c /bin/bash"   2 days ago   Up 17 minutes             dc03
    14997363df5e   nick/centos   "/bin/sh -c /bin/bash"   2 days ago   Up 17 minutes             dc02
    84db6b10578b   nick/centos   "/bin/sh -c /bin/bash"   2 days ago   Up 18 minutes             dc01
    [root@izbp13m488196e5hna361rz ~]# docker exec 4c5c595a66f1 touch /dataVolumeContainer2/dc03add
    [root@izbp13m488196e5hna361rz ~]# docker exec 4c5c595a66f1 ls /dataVolumeContainer2/dc03add
    /dataVolumeContainer2/dc03add
    [root@izbp13m488196e5hna361rz ~]# docker exec 14997363df5e ls /dataVolumeContainer2/dc03add
    /dataVolumeContainer2/dc03add
    [root@izbp13m488196e5hna361rz ~]# docker exec 84db6b10578b ls /dataVolumeContainer2/dc03add
    /dataVolumeContainer2/dc03add

    4.删除dc01后,修改dc02,dc03还是同步dc02

    [root@izbp13m488196e5hna361rz ~]# docker ps
    CONTAINER ID   IMAGE         COMMAND                  CREATED      STATUS          PORTS     NAMES
    4c5c595a66f1   nick/centos   "/bin/sh -c /bin/bash"   2 days ago   Up 23 minutes             dc03
    14997363df5e   nick/centos   "/bin/sh -c /bin/bash"   2 days ago   Up 23 minutes             dc02
    84db6b10578b   nick/centos   "/bin/sh -c /bin/bash"   2 days ago   Up 23 minutes             dc01
    [root@izbp13m488196e5hna361rz ~]# docker rm -f 84db6b10578b
    84db6b10578b
    [root@izbp13m488196e5hna361rz ~]# docker exec -it 14997363df5e touch /dataVolumeContainer1/dc02add
    [root@izbp13m488196e5hna361rz ~]# docker exec -it 14997363df5e ls /dataVolumeContainer1/dc02add
    /dataVolumeContainer1/dc02add
    [root@izbp13m488196e5hna361rz ~]# docker exec -it 4c5c595a66f1 ls /dataVolumeContainer1/dc02add
    /dataVolumeContainer1/dc02add

    结论:容器之间配置信息的传递,数据卷的生命周期一直持续到没有容器使用它为止。

  • 相关阅读:
    利用python脚本统计和删除redis key
    利用expect交互完成多台linux主机ssh key推送
    iptables -L很慢的原因
    tomcat各个端口的作用
    rabbitmq集群搭建
    ping 没有回icmp reply
    go mod 无法下载依赖问题
    0/1 nodes are available: 1 node(s) had taint
    go 编译:build constraints exclude all Go files in
    k8s单机部署
  • 原文地址:https://www.cnblogs.com/xulan0922/p/14339863.html
Copyright © 2011-2022 走看看