docker volume相关命令:docker 卷操作命令
[root@localhost haokai]# docker volume --help
Usage: docker volume COMMAND
Manage volumes
Commands:
create Create a volume
inspect Display detailed information on one or more volumes
ls List volumes
prune Remove all unused local volumes
rm Remove one or more volumes
Run 'docker volume COMMAND --help' for more information on a command.
[root@localhost haokai]#
# 查看本地所有卷(VOLUME):可以看到很多随机字符串的VOLUME NAME,这都是没起名字的VOLUME
[root@localhost haokai]# docker volume ls
DRIVER VOLUME NAME
local 6ef90004b73f2054d68d099db7184d562c919460fcf84c2299f36d8a5fcd366e
local 60ce60654306d7b961c6cfac43d0f23d28faf7a2369cded201f5ca3ceded131e
local 6624be7964546816814bfa7a2c4b3a888fbad350c935d864b316b7550e48b988
local 62028db544996cef73eb436f926e25bf6dfbe1bf264d106436159bb49cf9074d
# 匿名挂载:(不指定主机目录,只指定容器目录,会自动生成主机的挂载目录)
-v 直接容器内路径
docker run -d -P --name nginx02 -v /etc/nginx/ nginx
# 参数解析
-P 大P,随机映射端口
查看挂载的信息
[root@localhost haokai]# docker volume ls
DRIVER VOLUME NAME
local 6ef90004b73f2054d68d099db7184d562c919460fcf84c2299f36d8a5fcd366e
local 60ce60654306d7b961c6cfac43d0f23d28faf7a2369cded201f5ca3ceded131e
local 6624be7964546816814bfa7a2c4b3a888fbad350c935d864b316b7550e48b988
local 62028db544996cef73eb436f926e25bf6dfbe1bf264d106436159bb49cf9074d
local b4522b1160ba112980d000a42f98975d4caca8a4586440f849b10b773082a138
具名挂载是不能再额外指定本机目录:否则会报错docker: Error response from daemon: invalid mode: /usr/local/apache-tomcat9.0.39/webapps/test.
# -v 卷名(给挂载的木有第目录起个名字代替随机字符串):/容器内路径
# 注意:起名字是不带/的,带/表示绝对路径
# -v 本机路径(/home/...):容器路径(/local/...)
# 具名挂载是不能再额外指定本机目录:否则会报错docker: Error response from daemon: invalid mode: /usr/local/apache-tomcat9.0.39/webapps/test.
docker run -d -P --name nginx03 -v juming-nginx:/etc/nginx/ nginx
查看挂载的信息
[root@localhost haokai]# docker volume ls
DRIVER VOLUME NAME
local 6ef90004b73f2054d68d099db7184d562c919460fcf84c2299f36d8a5fcd366e
local 60ce60654306d7b961c6cfac43d0f23d28faf7a2369cded201f5ca3ceded131e
local 6624be7964546816814bfa7a2c4b3a888fbad350c935d864b316b7550e48b988
local 62028db544996cef73eb436f926e25bf6dfbe1bf264d106436159bb49cf9074d
local b4522b1160ba112980d000a42f98975d4caca8a4586440f849b10b773082a138
local juming-nginx
查看挂载的信息
# 查看VOLUME NAME的挂载信息
docker volume inspect VOLUME NAME
[root@localhost haokai]# docker volume ls
DRIVER VOLUME NAME
local 6ef90004b73f2054d68d099db7184d562c919460fcf84c2299f36d8a5fcd366e
local 60ce60654306d7b961c6cfac43d0f23d28faf7a2369cded201f5ca3ceded131e
local 6624be7964546816814bfa7a2c4b3a888fbad350c935d864b316b7550e48b988
local 62028db544996cef73eb436f926e25bf6dfbe1bf264d106436159bb49cf9074d
local b4522b1160ba112980d000a42f98975d4caca8a4586440f849b10b773082a138
local juming-nginx
[root@localhost haokai]# docker volume inspect juming-nginx
[
{
"CreatedAt": "2022-01-06T21:34:49-05:00",
"Driver": "local",
"Labels": null,
"Mountpoint": "/var/lib/docker/volumes/juming-nginx/_data",
"Name": "juming-nginx",
"Options": null,
"Scope": "local"
}
]
[root@localhost haokai]#
所有docker容器内的卷,没有指定目录的情况下都是在"/var/lib/docker/volumes/卷名(VOLUME NAME)/_data";
通过具名挂载的方式,可以快速找到一个卷,大多数情况都使用具名挂载。
# 如何确定是具名挂载、匿名挂载、指定路径挂载
-v 容器内路径 匿名挂载
-v 卷名:容器内路径 具名挂载
-v /容器外路径:/容器内路径 指定路径挂载,看前面是否有/
# 通过 -v 容器内路径:ro(readonly 只读) 或 rw(默认:readwrite 可读可写) 改变读写权限
# 一旦设置了容器权限,这时容器对我们挂载出来的内容就有限定了,针对容器而言。
# ro也就是不能在容器内操作了,只能通过外部改变数据同步容器,容器内不能在进行操作
docker run -d -P --name nginx03 -v juming-nginx:/etc/nginx/:ro nginx
docker run -d -P --name nginx03 -v juming-nginx:/etc/nginx/:rw nginx