系列14 docker 数据管理 下(以及进入容器)

一.数据卷容器

  如果用户需要在多个容器之间共享一些持续更新的数据,最简单的方式是使用数据卷容器。数据卷容器也是一个容器,但是它的目的是专门提供数据卷给其它容器挂载。

  首先创建一个数据卷容器dbdata,并在其中创建一个数据卷挂载到/dbdata:

[root@k8s-host opt]# docker run -it -v /dbdata  --name dbdata  ubuntu
root@9fbad9a78ac8:/# ls 
bin  boot  dbdata  dev  etc  home  lib  lib32  lib64  libx32  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
root@9fbad9a78ac8:/# cd dbdata
root@9fbad9a78ac8:/dbdata# 

  通过-v  将当前工作目录安装到容器中。 在容器中可以看到创建了一个dbdata文件夹。这个文件夹用来做多个容器之间的共享目录。

  注意:上篇中容器数据进行持久化, 数据文件是挂载映射在宿主本机目录,而这里是专门创建一个容器,用来进行数据持久化以及容器之间数据共享。

     这里创建容器是基于ubuntu镜像。

  文档:docker run -v

  然后其它容器中使用--volumes-from来挂载dbdata容器中的数据卷,例如创建db1和db2两个容器,并从dbdata容器挂载数据卷:

[root@k8s-host /]# docker run -it --volumes-from dbdata  --name db1  ubuntu
root@58a3f566c64d:/# cd dbdata
root@58a3f566c64d:/dbdata# exit
exit
[root@k8s-host /]# docker run -it --volumes-from dbdata  --name db2  ubuntu
root@fd7b5462fb65:/# cd dbdata
root@fd7b5462fb65:/dbdata# exit
exit

  上面db1和db2二个容器共享dbdata容器中的dbdata目录。在dbdata容器中创建一个test文件,在db1和db2容器中都能看到,如下所示:

  查看容器id, 容器退出了(是后台进程,待分析)

[root@k8s-host /]# docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                      PORTS                     NAMES
fd7b5462fb65        ubuntu              "/bin/bash"              4 minutes ago       Exited (0) 3 minutes ago                              db2
58a3f566c64d        ubuntu              "/bin/bash"              4 minutes ago       Exited (0) 4 minutes ago                              db1
9fbad9a78ac8        ubuntu              "/bin/bash"              14 minutes ago      Exited (0) 13 minutes ago                             dbdata

  会话窗口A , 启动dbdata容器,创建一个test文件,如下所示:

[root@k8s-host /]# docker start 9fbad9a78ac8 
9fbad9a78ac8
[root@k8s-host /]# docker exec -it 9fbad9a78ac8 /bin/bash 
root@9fbad9a78ac8:/# cd /dbdata
root@9fbad9a78ac8:/dbdata# touch test
root@9fbad9a78ac8:/dbdata# ls
test
root@9fbad9a78ac8:/dbdata# 

  会话窗口B, 启动db2容器,可以查看到共享目录文件,如下所示:

[root@k8s-host ~]# docker start fd7b5462fb65
fd7b5462fb65
[root@k8s-host ~]# docker exec -it fd7b5462fb65  /bin/bash 
root@fd7b5462fb65:/# cd dbdata
root@fd7b5462fb65:/dbdata# ls
test
root@fd7b5462fb65:/dbdata# 

  

 

posted on 2022-12-27 11:06  花阴偷移  阅读(2)  评论(0编辑  收藏  举报

导航