docker 系列: 具名、匿名挂载介绍

目录

匿名挂载

1.1 含义

1.2 匿名挂载示例

1.3 文件同步测试

具名挂载

2.1 含义

2.2 具名挂载示例

查看挂载数据卷命令

4、总结


今天给大家聊聊docker具名、匿名挂载的相关知识,一起来学学吧!

  1. 匿名挂载

1.1 含义

匿名挂载就是指定容器内路径,dockers run 每挂载一个目录就会宿主主机自动创建一个随机字符串的目录。目录/var/lib/docker/volumes/随机字符串。

注意:里面的_data目录和对应容器内目录进行同步

1.2 匿名挂载示例

  1. 运行容器
  2. docker run -d -p 8000:80 --name nginxtest -v /etc/nginx nginx
  3. 查看nginxtest容器目录挂载情况
  4. docker inspect --format="{{json .Mounts}}" 7880ad6076b1

查看挂载内容如下:

  1. [
  2. {
  3. "Type":"volume"undefined
  4. "Name":"6d05e4012610c5427b589f38009ade0d90bd5009896d251f545979ddb736e1b8"undefined "Source":"/var/lib/docker/volumes/6d05e4012610c5427b589f38009ade0d90bd5009896d251f545979ddb736e1b8/_data"undefined
  5. "Destination":"/etc/nginx"undefined
  6. "Driver":"local"undefined
  7. "Mode":""undefined
  8. "RW":trueundefined
  9. "Propagation":""
  10. }
  11. ]

返回参数说明:

  • 容器内路径:Destination:/var/lib/docker/volumes/6d05e4012610c5427b589f38009ade0d90bd5009896d251f545979ddb736e1b8/_data

  • 宿主主机路径:Source:/etc/nginx



1.3 文件同步测试

宿主主机测试命令

  1. #进入挂载目录,创建 1.txt 文件
  2. cd /var/lib/docker/volumes/6d05e4012610c5427b589f38009ade0d90bd5009896d251f545979ddb736e1b8/_data
  3. touch 1.txt

容器内部测试命令

  1. docker exec -it nginxtest /bin/bash
  2. cd /etc/nginx
  3. touch 22.txt

宿主主机

容器内部

  1. 具名挂载

2.1 含义

具名挂载就是挂载的同时指定一个有具体含义的名字,方便后续和容器对应以及后续的运维,便于查找挂载目录。

2.2 具名挂载示例

  1. #运行容器
  2. docker run -d -p 8001:80 --name nginxtest02 -v nginxtest02:/etc/nginx nginx
  3. #查看容器挂载目录
  4. docker inspect --format="{{json .Mounts}}" 4cd1e3241698

查看容器挂载内容

  1. [
  2. {
  3. "Type":"volume"undefined
  4. "Name":"nginxtest02"undefined
  5. "Source":"/var/lib/docker/volumes/nginxtest02/_data"undefined
  6. "Destination":"/etc/nginx"undefined
  7. "Driver":"local"undefined
  8. "Mode":"z"undefined
  9. "RW":trueundefined
  10. "Propagation":""
  11. }
  12. ]

返回参数说明:

容器内路径:Destination:/etc/nginx

宿主主机路径:Source:/var/lib/docker/volumes/nginxtest02/_data

具体的文件同步和匿名挂载一样,大家可以自己测试。

  1. 查看挂载数据卷命令

docker volume ls

4、总结

宿主主机挂载目录对应同步的文件在_data 目录里面。双向实时同步。

指定具体的挂载目录名,便于查找和管理,如果你的容器比较多,都是不可读的字符串,那么可维护性会比较差,建议采用具名挂载。


作者:郝光明 IT技术分享社区


欢迎关注:IT技术分享社区