docker学习(8) docker数据卷

        我们首先来回顾一下docker的理念,就是将应用和环境打包成一个镜像,那数据呢就存在于容器中,如果容器被删,那数据就会丢失,因此我们有一个希望数据可以长久保存的需求,就算容器被删,也能找回数据,尽力减少删库跑路带来的损失。实际上容器之间有一种数据共享的技术,使得docker容器产生的数据,直接同步到本地,这就是docker数据卷技术。

一 docker数据卷技术概念

  实现数据的持久化和同步操作,实际上就是目录的挂载,将容器内的目录挂载到容器外的目录 ,即linux上面,例子如下图所示。容器内的Mysql文件系统放在/usr/mysql目录下,通过数据卷技术,可以自动同步到容器外的/home/mysql.

 二 数据卷使用

方式1.直接使用-v: docker run -it -v 主机目录:容器内目录 镜像  /bin/bash

//目录挂载
[root@wangstudy ~]# docker run -it centos /bin/bash
[root@56364a55ad50 /]# cd /home
[root@56364a55ad50 home]# ls
[root@56364a55ad50 home]# [root@wangstudy ~]# docker run -it -v /home/ceshi:/home centos /bin


//通过docker inspect 容器id查找到挂载信息
"Mounts": [
            {
                "Type": "bind",
                "Source": "/home/ceshi",
                "Destination": "/home",
                "Mode": "",
                "RW": true,
                "Propagation": "rprivate"
            }
        ],

 测试:

我们在容器内home目录下添加了文件test.txt

 然后去查看容器外/home/ceshi,也发现了test.txt

说明已经挂载成功。 

再测试:停止容器后修改文件也能同步

     1.停止容器

[root@wangstudy ceshi]# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
d13e77bcdb8b        centos              "/bin/bash"         7 minutes ago       Up 7 minutes                            zealous_hellman
[root@wangstudy ceshi]# docker stop d13e77bcdb8b
d13e77bcdb8b
[root@wangstudy ceshi]# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

2. 修改test.txt内容,添加了wang
 

3.重启docker centos镜像并进入查看test.txt看到,同步成功

这表明我们要修改容器内的文件,可以通过数据卷技术在容器外挂载的目录下修改对应文件而无需进入到容器内 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章