Volume 提供独立于容器之外的持久化存储
1.1 在容器中的任何改动是不会被保存的,Volume 提供容器的持久化存储。
1.2 可以提供容器之间数据共享。第一种运行方式
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的解析目录看看修改的内容是否一样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清空内容
写入docker docker docker
进入容器
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
显然验证了。
其他运行方式
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$
创建一个仅仅有数据的容器并把这个数据容器挂载到其他容器里面去
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
仅有数据的容器可以被多个容器挂载,这样就达到了容器间的数据互通
Last modification:October 12, 2020
© Allow specification reprint
Comment here is closed