首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >6. Volume 提供独立于容器之外的持久化存储、容器间数据互通

6. Volume 提供独立于容器之外的持久化存储、容器间数据互通

作者头像
友儿
发布2022-09-11 13:08:11
发布2022-09-11 13:08:11
3960
举报
文章被收录于专栏:友儿友儿

Volume 提供独立于容器之外的持久化存储

1.1 在容器中的任何改动是不会被保存的,Volume 提供容器的持久化存储。 1.2 可以提供容器之间数据共享。

第一种运行方式

代码语言:javascript
复制
vagrant@ubuntu-xenial:/data/www/d2$ docker run -d --name nginx-1.0  -v /usr/share/nginx nginx     #以守护进程的方式启动一个name为nginx-1.0 指定nginx的解析路径       
5efac15b31ba860101d49f5864c8c998347aa8ea7a748ba9b3d02d9777519c3a
vagrant@ubuntu-xenial:/data/www/d2$ docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                NAMES
5efac15b31ba        nginx               "/docker-entrypoint.…"   6 seconds ago       Up 5 seconds        80/tcp               nginx-1.0
44eac38c0fe2        dockerfiel/nginx    "/usr/sbin/nginx -g …"   17 minutes ago      Up 17 minutes       0.0.0.0:80->80/tcp   romantic_ishizaka


vagrant@ubuntu-xenial:/data/www/d2$ docker inspect nginx-1.0    # 查看nginx-1.0 的元信息
[
    {
        "Mounts": [
            {
                "Type": "volume",
                "Name": "1c923bce076155554f06705fbfaeaca0c3d6cad3c8211602138cf48c77b13e8b",
                "Source": "/var/lib/docker/volumes/1c923bce076155554f06705fbfaeaca0c3d6cad3c8211602138cf48c77b13e8b/_data",
                "Destination": "/usr/share/nginx",                                                                         
                "Driver": "local",
                "Mode": "",
                "RW": true,
                "Propagation": ""
            }
        ]
    }
]

Source:"/var/lib/docker/volumes/1c923bce076155554f06705fbfaeaca0c3d6cad3c8211602138cf48c77b13e8b/_data" #宿主机的这个物理路径 Destination:"/usr/share/nginx" #挂载到nginx-1.0的解析路径 下面我们修改一下宿主机的这个物理路径下的文件,然后去进入到nginx-1.0的解析目录看看修改的内容是否一样

代码语言:javascript
复制
vagrant@ubuntu-xenial:/data/www/d2$ sudo chmod -R 775 /var/lib/docker/volumes/
vagrant@ubuntu-xenial:/data/www/d2$ cd /var/lib/docker/volumes/1c923bce076155554f06705fbfaeaca0c3d6cad3c8211602138cf48c77b13e8b/_data/html/
vagrant@ubuntu-xenial:/var/lib/docker/volumes/1c923bce076155554f06705fbfaeaca0c3d6cad3c8211602138cf48c77b13e8b/_data/html$ ls
50x.html  index.html
vagrant@ubuntu-xenial:/var/lib/docker/volumes/1c923bce076155554f06705fbfaeaca0c3d6cad3c8211602138cf48c77b13e8b/_data/html$ sudo vi index.html

清空内容 使用vi命令gg以及dG清空内容 写入

代码语言:javascript
复制
docker
docker
docker

进入容器

代码语言:javascript
复制
vagrant@ubuntu-xenial:/data/www/d2$ docker exec -it   nginx-1.0  /bin/bash    # docker exec -it   容器名称  /bin/bash
root@5efac15b31ba:/# cat /usr/share/nginx/html/index.html     # 容器内部
docker
docker
docker

显然验证了。

其他运行方式

代码语言:javascript
复制
docker run -d -v $PWD/html:/usr/share/nginx/html nginx-1.0

解释一下:$PWD 就是当前目录
vagrant@ubuntu-xenial:/data/www/d2$ echo $PWD
/data/www/d2
vagrant@ubuntu-xenial:/data/www/d2$

创建一个仅仅有数据的容器并把这个数据容器挂载到其他容器里面去

代码语言:javascript
复制
vagrant@ubuntu-xenial:/data/www$ sudo mkdir -m 755 data  && cd  data

vagrant@ubuntu-xenial:/data/www/data$ docker create -v $PWD/data:/var/mydata  --name data_container ubuntu   #data_container 挂载到ubuntu
2f6145f1627a6fa33e2f588c804228515d19cdba87e20ff3b926adcb9b7c8aa7

vagrant@ubuntu-xenial:/data/www/data$ docker run -it --volumes-from data_container ubuntu  /bin/bash

root@b08eb5b02ce0:/# mount
/dev/sda1 on /var/mydata type ext4 (rw,relatime,data=ordered)      #挂载显示

root@b08eb5b02ce0:/var/mydata# touch index.txt
root@b08eb5b02ce0:/var/mydata# ls
index.txt


root@b08eb5b02ce0:/var/mydata#
root@b08eb5b02ce0:/var/mydata# exit
exit
vagrant@ubuntu-xenial:/data/www/data$ ls
data
vagrant@ubuntu-xenial:/data/www/data$ cd data/
vagrant@ubuntu-xenial:/data/www/data/data$ ls
index.txt

仅有数据的容器可以被多个容器挂载,这样就达到了容器间的数据互通

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档