0
点赞
收藏
分享

微信扫一扫

docker 容器数据卷实战,很详细

龙毓七七 2022-03-12 阅读 67

大家好,今天我们分享docker 数据卷的使用

首先,我们要知道docker的实质:就是将应用于环境打包成一个镜像,可以供下次单独使用

而镜像本身运行的时候,就变成了一个容器

在程序的运行过程当中,很多的时候,需要保存数据信息,如果这些数据信息就单单放在容器当中,当容器出现问题的时候,这些数据将会丢失,这就给容器的使用带来了很大的不安全性

而今天要分享的docker容器数据卷的使用,就弥补了这样的不安全

docker容器数据卷,说白了,就是在容器之外(即Linux系统上),为容器做一个挂载目录,使得容器自身的数据信息可以在本地系统上(即Linux)上同步共享与存放。

在这里插入图片描述

对应一个路径就可以了,这就是我们的docker容器数据卷

另外,容器之间,也可以数据共享

使用数据卷:
方法一 : -v 直接使用命令来挂载:

命令格式:

[root@localhost ~]# docker run -it -v   主机目录:容器里的一个目录

接下来,做个实例:

确定我的/home目录下没有别的东西
(你也可以是其它的目录)

[root@localhost ~]# cd /home/
[root@localhost home]# ls
456.txt  admin  daqing  zhangsan
[root@localhost home]# 

将Linux主机上的/home/ceshi 挂载到centos 容器上的/home下

[root@localhost home]# docker run -it -v /home/ceshi:/home centos /bin/bash
[root@a49e8df910bb /]# 

查看本地主机的目录:多了一个 ceshi 文件(在本地系统)

[root@localhost ~]# cd /home/
[root@localhost home]# ls
456.txt  admin  ceshi  daqing  zhangsan
[root@localhost home]# 

在我们centos 容器里的/home 目录下没有东西(正常的)

[root@a49e8df910bb /]# cd /home/
[root@a49e8df910bb home]# ls
[root@a49e8df910bb home]# 

至此,我们在centos 容器当中,/home 目录下做的操作或是数据,在Linux 主机上(在容器之外)的/home/test
可以同步和接收 ,反过来也一样

在Linux主机上查看一下docker 的系统信息

[root@localhost home]# docker inspect a49e8df910bb

这样就说明,已经挂载成功

 "Mounts": [
            {
                "Type": "bind",
                "Source": "/home/ceshi",
                "Destination": "/home",
                "Mode": "",
                "RW": true,
                "Propagation": "rprivate"
            }
        ],

注意这俩行(它俩是映射关系)

"Source": "/home/ceshi",      //这是Linux主机上的目录位置
 "Destination": "/home",      //这是docker   容器里对应的目录位置

进入容器,容器里的/home目录下,什么都没有

[root@a49e8df910bb home]# ls
[root@a49e8df910bb home]# 

在容器上新建一个文件

[root@a49e8df910bb home]# touch  1.txt
[root@a49e8df910bb home]# ls
1.txt
[root@a49e8df910bb home]# 

在Linux主机上查看

[root@localhost home]# cd  ceshi/
[root@localhost ceshi]# ls
1.txt
[root@localhost ceshi]# 

在Linux主机上新建文件 shuaige.txt

[root@localhost ceshi]# touch  shuaige.txt
[root@localhost ceshi]# ls
1.txt  shuaige.txt

在容器上查看:(这种同步,是双向的)

[root@a49e8df910bb home]# ls
1.txt  shuaige.txt
[root@a49e8df910bb home]# 

查看一下我们现在正在运行的容器:

[root@localhost ~]# docker ps
CONTAINER ID   IMAGE          COMMAND       CREATED          STATUS          PORTS     NAMES
a49e8df910bb   centos         "/bin/bash"   34 minutes ago   Up 34 minutes             jolly_rosalind
6d6fa6a4c6d7   5d0da3dc9764   "/bin/bash"   24 hours ago     Up 24 hours               nice_panini

停止centos容器

[root@localhost ~]# docker  stop a49e8df910bb  
a49e8df910bb
[root@localhost ~]# 

容器已经停止了,我们Linux主机上新建文件

[root@localhost ~]# cd /home/ceshi/
[root@localhost ceshi]# ls
1.txt  shuaige.txt
[root@localhost ceshi]# vim zhuji
[root@localhost ceshi]# 
[root@localhost ceshi]# vim zhuji
bbdhdjgffoifofi
djhyiduidyfufiflfo
shdydajiyeneg
~                   

wq保存退出

查看docker 镜像

[root@localhost home]# docker images
REPOSITORY    TAG       IMAGE ID       CREATED        SIZE
tomcat04      1.0       12b32b1a124d   17 hours ago   685MB
nginx         latest    605c77e624dd   2 months ago   141MB
tomcat        9.0       b8e65a4d736d   2 months ago   680MB
tomcat        latest    fb5657adc892   2 months ago   680MB
mysql         latest    3218b38490ce   2 months ago   516MB
hello-world   latest    feb5d9fea6a5   5 months ago   13.3kB
centos        latest    5d0da3dc9764   5 months ago   231MB

启动并且进入容器:

[root@localhost home]# docker run -it centos /bin/bash
[root@ed47db739a45 /]# 

观测容器 目录的文件

[root@3e70714e66dc home]# ls
1.txt  shuaige.txt  zhuji

看配置信息

[root@3e70714e66dc home]# cat zhuji 
bbdhdjgffoifofi
djhyiduidyfufiflfo
shdydajiyeneg
[root@3e70714e66dc home]# 

就是说,docker容器与Linux主机之间做了数据卷(目录挂载) ,即使是在docker容器关闭的情况下,本地主机在对应的目录中,所做的操作,docker容器也可以接收到

docker 容器数据卷的好处:

在于,有了docker容器数据卷,我们就可以在Linux主机上操作docker容器,而不需要再进去
同时可以双向保存数据信息

好了,有关于docker 容器数据卷实战就到这里了,谢谢大家

举报

相关推荐

0 条评论