大家好,今天我们分享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 容器数据卷实战就到这里了,谢谢大家