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 几个 ...
随机推荐
- Java调用Zookeeper
watch机制 Zookeeper watch是一种监听通知机制,可以随时监听一些数据的变化,从而实现数据的及时性. Zookeeper所有的读操作getData(), getChildren()和 ...
- 嵌入式ARM汇编详解
文章目录 零.预备知识 1.ARM与X86 2.ARM中指令的执行 3.ARM的九种寻址方式 立即数寻址 寄存器寻址 寄存器间接寻址 寄存器偏移寻址 寄存器基址变址寻址 批量寄存器寻址 相对寻址 堆栈 ...
- SQL 练习32
查询不及格的课程 SELECT * from Course WHERE CId IN (SELECT cid from sc WHERE score < 60 GROUP BY cid)
- FPGA学习过程(一)
前言 终于有时间折腾这块fpga开发板了,不知不觉又熬夜了. 正文 实现一个呼吸灯的项目 打开quartus ii 建立工程 步骤就不讲了 新建一个pwm.v文件内容 module PWM ( inp ...
- 09.SpringMVC之类型转换
一. 类型转换器 前端传入的值,从表单中传入的值,都是字符串或者是字符串数组的形式传入的,在后端需要进行手动的转换类型,然后才能正确的使用. 框架一般对常见的数据类型的转换进行了封装提供,如字符串转换 ...
- (一)响应式web设计。。。freecodecamp笔记
HTML基础 HTML 的全称是 HyperText Markup Language(超文本标记语言),它是一种用来描述网页结构的标记语言. h1用作主标题,h2用作副标题,还有h3.h4.h5.h6 ...
- mzy对于反射的复习
反射其实就是指在超脱规则的束缚,从强引用到弱相关,在上帝视角做事情,对于写配置文件,和一些框架的源码,得到调用上至关重要,java带有解释器的语法特性,使得泛型一类的语法糖和反射配合之后更如鱼得水! ...
- 理解ASP.NET Core - [01] Startup
注:本文隶属于<理解ASP.NET Core>系列文章,请查看置顶博客或点击此处查看全文目录 准备工作:一份ASP.NET Core Web API应用程序 当我们来到一个陌生的环境,第一 ...
- Oracle存储过程锁表
存储过程: 解决方法如下: 1:查V$DB_OBJECT_CACHE SELECT * FROM V$DB_OBJECT_CACHE WHERE name='CRM_LASTCHGINFO_DAY' ...
- PyQT5基础布局管理
绝对定位布局 使用move(x, y)可以对窗口进行布局,以窗口左上角为原点,向右为 x 轴正方向,向下为 y 轴正方向,移动(x,y); import sys from PyQt5.QtGui im ...