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 几个 ...
随机推荐
- Mysql数据库优化(1)
1.尽量不要留null select id from t where num is null,可以,但尽量不要留null,null也占空间:使用not null填充数据库,像varchar(100)这 ...
- Linux部署达梦数据库(完全版)
环境准备 数据库下载去http://www.dameng.com 1.下载好达梦数据库iso上传(通过xftp)到你自己存在的目录(/opt) 2.将你上传的iso文件挂载到其它的目录下面(mount ...
- 简单实现Linux服务器重启后自动启动Tomcat以及MongoDB
1.场景描述 做一个网站差不多都会用到tomcat,用阿里云镜像市场提供的镜像里的tomcat是方便的,但是自己喜欢折腾,所以就自己在服务器里装了一个tomcat 但是有一次服务器被关了,然后自己要到 ...
- Spring中的@Transactional必须要了解的概念
spring中的@Transactional基于动态代理的机制,提供了一种透明的事务管理机制,方便快捷解决在开发中碰到的问题. 一般使用是通过如下代码对方法或接口或类注释: 1 @Transactio ...
- NOIP 模拟 6 大佬
这道题是一道数学期望,考场上想的是,每相邻 \(k\) 天之间有 \(k-1\) 天是重合的,所以每两端之间肯定是有影响的. 结果啪啪打脸 这道题其实不用考虑每两段之间的影响,因为在上一段的每种排法, ...
- Docker中安装了gitlab,忘记了管理员密码,进行管理员密码重置
重置docker中gitlab中root账号的密码 一.进入Docker的gitlab容器中 1.查看所有容器 docker ps 2.进入gitlab容器中 docker exec -it gitl ...
- 安装 iperf和服务器之间测速
安装 # https://downloads.es.net/pub/iperf/iperf-3.1.3.tar.gz wget https://iperf.fr/download/source/ipe ...
- Java异常与异常处理
异常体系结构 1.所有异常都继承于Throwable类,其下有两大子类: (1)Error类:错误,一般编程人员不太接触,如虚拟机错误.线程死锁.硬伤:使程序崩溃 (2)Exception类:异常,编 ...
- ES6两种静态属性的书写方法
1.这种可以不用实例化对象就能输出. class Car{ constructor(){ } } Car.tool=4 console.log(Car.tool);//4 2.必须实例化后才能输出.但 ...
- VS2017 Debug时候出现 Script Error An error has occurred in the script on this page. 解决办法
解决办法: Menu -> Debug -> Options -> Debugging/General -> 取消最后面的Enable Diagnostic Tools whi ...