docker的挂载分为:
docker挂载的磁盘有一个默认的路径,也可以手动指定绝对路径完成挂载。
默认的挂载路径为:/var/lib/docker/volumes/
若为匿名挂载就是在挂载的时候,不指定挂载磁盘的名称,这样磁盘的名称将会有一串随机数代替。
[root@localhost data]# docker run -d -P --name nginx01 -v /etc/nginx nginx
2cb05e153b0982a647ad80eea8cef52332c17f442e81eb4e0051ce19624d1cb5
参数说明:
-P:随机端口映射
-v:这里没有指定宿主机磁盘的名称,则会产生随机名称。
[root@localhost data]# docker volume ls #查看挂载的磁盘
DRIVER VOLUME NAME
local 0f175a688227543ae22a470054c1da2d93376277da68387608f421f5a16bee43
local 1e8b4ce6d61660e8e95e946fc5b14786aa2f8daafa0135d4be5c0ed731caa6d6
通过命令可以看到具体的路径:
[root@localhost _data]# docker volume inspect 1e8b4ce6d61660e8e95e946fc5b14786aa2f8daafa0135d4be5c0ed731caa6d6
[
{
"CreatedAt": "2021-04-01T00:43:07-04:00",
"Driver": "local",
"Labels": null,
"Mountpoint": "/var/lib/docker/volumes/1e8b4ce6d61660e8e95e946fc5b14786aa2f8daafa0135d4be5c0ed731caa6d6/_data",
"Name": "1e8b4ce6d61660e8e95e946fc5b14786aa2f8daafa0135d4be5c0ed731caa6d6",
"Options": null,
"Scope": "local"
}
]
若挂载的时候指定名称,则名具名挂载。参考如下:
[root@localhost data]# docker run -d -P --name nginx02 -v test-nginx:/etc/nginx nginx
f132a2edcf332c80a3a74945162115d9169918f94e80407a396352cf617116bb
参数说明:
-v:这里指定了名称,但是不是一个绝对路径,所以仍然会放在默认位置。
[root@localhost data]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f132a2edcf33 nginx "/docker-entrypoint.…" 4 seconds ago Up 2 seconds 0.0.0.0:49154->80/tcp nginx02
2cb05e153b09 nginx "/docker-entrypoint.…" 53 seconds ago Up 51 seconds 0.0.0.0:49153->80/tcp nginx01
440a5df74aa3 mysql:5.7 "docker-entrypoint.s…" About an hour ago Up About an hour 33060/tcp, 0.0.0.0:3310->3306/tcp mysql01
3cf493d3feb0 portainer/portainer "/portainer" 18 hours ago Up 18 hours 0.0.0.0:8088->9000/tcp clever_kowalevski
[root@localhost data]# docker volume ls
DRIVER VOLUME NAME
local 0f175a688227543ae22a470054c1da2d93376277da68387608f421f5a16bee43
local 1e8b4ce6d61660e8e95e946fc5b14786aa2f8daafa0135d4be5c0ed731caa6d6
local test-nginx
[root@localhost data]# docker volume inspect test-nginx
[
{
"CreatedAt": "2021-04-01T00:43:56-04:00",
"Driver": "local",
"Labels": null,
"Mountpoint": "/var/lib/docker/volumes/test-nginx/_data",
"Name": "test-nginx",
"Options": null,
"Scope": "local"
}
]
[root@localhost data]# cd /var/lib/docker/volumes/test-nginx/_data
[root@localhost _data]# ll
total 36
drwxr-xr-x. 2 root root 26 Apr 1 00:43 conf.d
-rw-r--r--. 1 root root 1007 Mar 30 10:47 fastcgi_params
-rw-r--r--. 1 root root 2837 Mar 30 10:47 koi-utf
-rw-r--r--. 1 root root 2223 Mar 30 10:47 koi-win
-rw-r--r--. 1 root root 5231 Mar 30 10:47 mime.types
lrwxrwxrwx. 1 root root 22 Mar 30 10:58 modules -> /usr/lib/nginx/modules
-rw-r--r--. 1 root root 643 Mar 30 10:58 nginx.conf
-rw-r--r--. 1 root root 636 Mar 30 10:47 scgi_params
-rw-r--r--. 1 root root 664 Mar 30 10:47 uwsgi_params
-rw-r--r--. 1 root root 3610 Mar 30 10:47 win-utf
挂载的时候可以限制容器的权限:
[root@localhost volumes]# docker run -d -P --name nginx03 -v test-nginx:/etc/nginx:ro nginx 73158e359693547285686bcea7e291194081500bd1124ef6ca56ef30261ed017 参数说明: -v: test-nginx:/etc/nginx:ro后面的ro描述readonly,也可以为rw。
另外在build镜像的时候也可以挂载。
原文:https://www.cnblogs.com/tortoise512/p/14605845.html