上都海奶茶馆 发表于 2019-2-20 10:57:02

Docker存储卷

  docker存储卷:

docker容器卷的使用方式:
1 Docker 管理卷:
docker run -it --name [名称] -v [镜像名称]
具体使用:
docker run -it --name testvolume -d -v /data/mydata 75835a67d134
查看存储卷映射的目录:
命令:docker inspect f878a628f152
"Mounts": [
{
"Type": "volume",
"Name": "dd91ef9ae17175499d490c36e70033e4701a2d66337f8e6435503bd9ddd1811b", --卷的uuid
"Source": "/var/lib/docker/volumes/dd91ef9ae17175499d490c36e70033e4701a2d66337f8e6435503bd9ddd1811b/_data", --宿主机中的所在位置
"Destination": "/data/mydata", --容器中的目录
"Driver": "local",
"Mode": "",
"RW": true,
"Propagation": ""
}
测试验证是否关联:
在宿主机目录中创建测试文件:
#pwd
/var/lib/docker/volumes/dd91ef9ae17175499d490c36e70033e4701a2d66337f8e6435503bd9ddd1811b/_data
#echo "holle world" > test.html
在容器中相对应目录查询:
# cd data/mydata/
# ls
# ls
test.html
在容器中添加一些内容:
# echo hello yl >> test.html
# cat test.html
holle world
hello yl
在宿主机中查看:
#cat test.html
holle world
hello yl
当使用--rm 一次性启动的时候退出时候,会一并删除宿主机目录中的数据
当使用 -d 做后台进入运行的时候,退出后删除容器不会 目录中数据不会丢失!
2 绑定挂载卷:
docker run -it -v [宿主机中目录]:[容器中目录] --name [名称] [镜像名称]
具体使用:
docker run -it -v /data/dockerdir:/data/mydata --name b2 75835a67d134
查看卷信息:
"Mounts": [
{
"Type": "bind",
"Source": "/data/dockerdir", ---宿主机目录
"Destination": "/data/mydata", --容器中目录
"Mode": "",
"RW": true,
"Propagation": "rprivate"
}
当容器删除后,数据依然存在:
#docker ps -a
CONTAINER ID      IMAGE               COMMAND             CREATED             STATUS                      PORTS               NAMES
d05a6a77992a      75835a67d134      "/bin/bash"         5 minutes ago       Exited (0) 22 seconds ago                     b2
#docker rm b2
b2
#docker ps -a
CONTAINER ID      IMAGE               COMMAND             CREATED             STATUS            PORTS               NAMES
#ls
test.html
#cat test.html
hello world
hello yl
再次启动时即是更换容器内部绑定目录也可以使用数据:
#docker run -it -v /data/dockerdir:/data/web --rm--name b2 75835a67d134
# ls
anaconda-post.logbindatadevetchomeliblib64mediamntoptprocrootrunsbinsrvsystmpusrvar
# cd data/
# ls
web
# cd web/
# ls
test.html
..................................................................
使用模板方式过滤信息:
docker inspect -f {{.Mounts}} [镜像名称]
.................................................
多个docker容器可以关联到一个宿主机目录!
测试:
启用两个容器:
docker run -it --name b1 -d -v /data/dockerdir:/data/web 75835a67d134
docker run -it --name b2 -d -v /data/dockerdir:/data/web 75835a67d134
#docker ps
CONTAINER ID      IMAGE               COMMAND             CREATED             STATUS            PORTS               NAMES
84c3bd9718e0      75835a67d134      "/bin/bash"         5 seconds ago       Up 4 seconds                            b2
d8a8f4203f13      75835a67d134      "/bin/bash"         16 seconds ago      Up 15 seconds                           b1
进入目录后分别在两个目录中创建文件:
b1中创建文件:
# echo hello jim > test12.txt
# ls
index.htmltest12.txttest.html
# cat test12.txt
hello jim
b2中创建文件:
# echo hello test > index.html
# ls
index.htmltest.html
宿主机目录中查看:
#cd /data/dockerdir/
#ls
index.htmltest12.txttest.html
删除docker后查看宿主机目录数据一样存在!
...............................................................
docker复制存储卷路径:
如何复制:具体使用
容器b1:
docker run -it --name b2 -d -v /data/dockerdir:/data/web 75835a67d134
不用启动,只需要存在即可!
容器b2:
docker run -it --name b2 --volumes-from b1 75835a67d134
在共享网络:
docker run --name t2 --network container:t1 -it --rm b2


页: [1]
查看完整版本: Docker存储卷