Docker系列(18)- 具名挂载和匿名挂载
容器数据卷挂载方式
- 容器的数据卷可以看成就是容器的挂载方式;一个宿主机有多个容器,多个容器挂载方式不同,因此宿主机就有多个卷
- 每一个挂载方式在宿主机上都有一个名称,即卷名
- 宿主机如何查看这些卷,对使用匿名以及具名挂载的,没有给出宿主机路径的挂载方式,如何查看在本地的映射目录;对这些挂载方式(容器数据卷)如何管理,添加、删除等:
#命令,查看容器的数据卷(简称卷)
docker volume 选项
#选项
[root@localhost ~]# 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.
#具体选项里面还有子选项,比如creat,具体大家可以看下官网https://docs.docker.com/engine/reference/commandline/volume/

容器数据卷通过选项-v进行挂载,有三种挂载方式:
具名和匿名挂载
匿名挂载
# 匿名挂载
-v 容器内路径
docker run -d -P --name nginx01 -v /etc/nginx nginx # 查看所有的卷(volume)的情况
[root@localhost ~]# docker volume ls
DRIVER VOLUME NAME
local 1c19af3018726ca5cd78efc57e2a31f8ceb8b811c20b958b8803d6c4f439788a
# 查看匿名挂载卷的挂载路径
[root@localhost ~]# docker volume inspect 1c19af3018726ca5cd78efc57e2a31f8ceb8b811c20b958b8803d6c4f439788a
[
{
"CreatedAt": "2021-08-26T15:32:08+08:00",
"Driver": "local",
"Labels": null,
"Mountpoint": "/var/lib/docker/volumes/1c19af3018726ca5cd78efc57e2a31f8ceb8b811c20b958b8803d6c4f439788a/_data", #宿主机挂载路径
"Name": "1c19af3018726ca5cd78efc57e2a31f8ceb8b811c20b958b8803d6c4f439788a",
"Options": null,
"Scope": "local"
}
]
#这里发现,匿名这种挂载,我们在-v 只写了容器内的路径,没有写容器外的路径;匿名卷的卷名都是随机的一串数字

# 问题?
# 我们知道卷就是容器的挂载方式,我现在有一个需求,我要装10个容器,宿主机和容器上的挂载路径都在各自/home目录下,难道我每run一个的时候加一下-v 宿主机路径:容器内路径 频繁的输入路径? # 上述问题可以通过docker volume creat 建一个通用的卷(挂载方式),run的时候加上卷名即可(卷名没有的,自动新增),这就是具名挂载。
# docker volume creat新建用的比较少,一般直接run的时候定义卷名,没有就自动生成,下次可以不断复用
具名挂载(经常用)
# 具名挂载
# -v 卷名:容器内路径
[root@localhost ~]# docker run -d -P -v juming:/etc/nginx --name nginx007 nginx
db303069c9a62acdcf0ea26f4b53036b0022c7d0ddd4a068f4a41c2d690a527b
[root@localhost ~]# docker volume ls
DRIVER VOLUME NAME
local 1c19af3018726ca5cd78efc57e2a31f8ceb8b811c20b958b8803d6c4f439788a
local juming
[root@localhost ~]# docker volume inspect juming
[
{
"CreatedAt": "2021-08-26T20:01:45+08:00",
"Driver": "local",
"Labels": null,
"Mountpoint": "/var/lib/docker/volumes/juming/_data", #宿主机挂载路径
"Name": "juming",
"Options": null,
"Scope": "local"
}
]

总结
所有的docker容器内的卷,宿主机没有指定目录的情况下都是在 /var/lib/docker/volumes/xxxxx/_data
我们通过具名挂载可以方便的找到我们的一个卷,大多数情况下使用的具名挂载
# 如何确定是具名挂载还是匿名挂载,还是指定路径挂载
-v 容器路径 #匿名挂载
-v 卷名:容器内路径 #具名挂载
-v /宿主机路径:容器内路径 #指定路径挂载
拓展
# 命令
-v 容器内路径:ro(或者rw) #改变读写权限
ro readonly #只读
rw readwrite #可读可写 # 一旦这个设置了权限,容器对我们挂载出来的内容就有了限定了
docker run -d -P --name nginx02 -v juming-nginx:/etc/nginx:ro nginx
docker run -d -P --name nginx02 -v juming-nginx:/etc/nginx:rw nginx
# ro 只要看到ro就说明这个路径只能通过宿主机来操作,容器内部是无法操作的!
Docker系列(18)- 具名挂载和匿名挂载的更多相关文章
- [Linux] PHP程序员玩转Linux系列-腾讯云硬盘扩容挂载
1.PHP程序员玩转Linux系列-怎么安装使用CentOS 2.PHP程序员玩转Linux系列-lnmp环境的搭建 3.PHP程序员玩转Linux系列-搭建FTP代码开发环境 4.PHP程序员玩转L ...
- Docker Toolbox在window 10 home 下挂载宿主机目录到容器的正确操作
由于我是window 10 home 而不是 pro版本,只能使用Docker Toolbox,其实docker for window对windows的支持更好,还有GUI,home版本安装Docke ...
- docker安装redis 5.0.7并挂载外部配置和数据
环境 CentOS Linux release 7.7.1908 (Core) 拉取redis 5.0.7 镜像 docker pull redis:5.0.7 创建挂载目录 mkdir -p /ho ...
- Docker系列07—Dockerfile 详解
本文收录在容器技术学习系列文章总目录 1.认识Dockerfile 1.1 镜像的生成途径 基于容器制作 dockerfile,docker build 基于容器制作镜像,已经在上篇Docker系列 ...
- Docker系列08—搭建使用私有docker registry
本文收录在容器技术学习系列文章总目录 1.了解Docker Registry 1.1 介绍 registry 用于保存docker 镜像,包括镜像的层次结构和元数据. 启动容器时,docker dae ...
- Docker系列之实战:3.安装MariaDB
环境 [root@centos181001 ~]# cat /etc/centos-release CentOS Linux release 7.6.1810 (Core) [root@centos1 ...
- Docker系列(20)- 数据卷容器
数据卷容器 什么是数据卷容器? 容器和容器之间实现数据共享 一个容器先于宿主机创建挂载方式,宿主机就会有改卷的目录 第二个容器使用命令--volumes-from 第一个容器,共享使用了第一个容器与宿 ...
- Docker 系列二(操作镜像).
一.镜像管理 1.拉取镜像 docker pull [选项] [Docker Registry 地址[:端口号]/]仓库名[:标签] -- Docker 镜像仓库地址 :一般是 域名或者IP[:端口号 ...
- Docker系列之MySQL安装教程
Docker系列之MySQL安装教程 有了前面的基础教程Docker系列之常用命令操作手册之后,本博客记录一篇mysql的安装教程 mysql镜像查询命令 docker search mysql 几个 ...
随机推荐
- 页面模型 PageModel
Razor页面中的程序处理方法 OnGet 和 OnGetAsync是同样的处理程序,因此不能共存,否则会报错. 视图数据 ViewData 视图数据是从页面模型向内容页面传递数据的容器.视图数据是以 ...
- NOIP 模拟 $16\; \rm God Knows$
题解 \(by\;zj\varphi\) 对于这道题,不难想到可以用 \(dp\),就是求一个最小权极长上升子序列 设 \(dp_i\) 表示最后一个选 \(i\) 时,覆盖前 \(i\) 条边的最小 ...
- 【C#】GC和析构函数(Finalize 方法)
析构函数: (来自百度百科)析构函数(destructor) 与构造函数相反,当对象脱离其作用域时(例如对象所在的函数已调用完毕),系统自动执行析构函数.析构函数往往用来做"清理善后&quo ...
- 【mysql】单表使用索引常见的索引失效
1. 全值匹配我最爱 全值匹配我最爱指的是,查询的字段按照顺序在索引中都可以匹配到! SQL 中查询字段的顺序,跟使用索引中字段的顺序,没有关系.优化器会在不影响SQL 执行结果的前提下,给 你自动地 ...
- Python使用flask架构、跨域
from flask import Flask import json from flask_cors import CORS Server = Flask(__name__) cors = CORS ...
- 关于 java编程思想第五版 《On Java 8》
On Java 8中文版 英雄召集令 这是该项目的GITHUB地址:https://github.com/LingCoder/OnJava8 广招天下英雄,为开源奉献!让我们一起来完成这本书的翻译吧! ...
- 映射Map、队列Queue、优先级队列PriorityQueue
映射Map 将对象映射到其他对象的能力是解决编程问题的有效方法.例如,考虑一个程序,它被用来检查 Java 的 Random 类的随机性.理想情况下, Random 会产生完美的数字分布,但为了测试这 ...
- Spring之JDBC Template
时间:2017-2-5 18:16 --Spring对不同持久化技术的支持Spring为各种支持的持久化技术都提供了简单操作的模板和回调.ORM持久化技术: JDBC: org.s ...
- MongoDB学习笔记一(MongoDB介绍 + 基本指令 + 查询语句)
什么是MongoDB MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统. 在高负载的情况下,添加更多的节点,可以保证服务器性能. MongoDB 旨在为WEB应用提供可扩 ...
- roslaunch 启动时修改参数
启动命令: roslaunch beginner_tutorials turtlemimic.launch arg1:=3.0 查询命令: rosparam get /param1 可以看到param ...