容器数据卷挂载方式

  • 容器的数据卷可以看成就是容器的挂载方式;一个宿主机有多个容器,多个容器挂载方式不同,因此宿主机就有多个卷
  • 每一个挂载方式在宿主机上都有一个名称,即卷名
  • 宿主机如何查看这些卷,对使用匿名以及具名挂载的,没有给出宿主机路径的挂载方式,如何查看在本地的映射目录;对这些挂载方式(容器数据卷)如何管理,添加、删除等:
#命令,查看容器的数据卷(简称卷)
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)- 具名挂载和匿名挂载的更多相关文章

  1. [Linux] PHP程序员玩转Linux系列-腾讯云硬盘扩容挂载

    1.PHP程序员玩转Linux系列-怎么安装使用CentOS 2.PHP程序员玩转Linux系列-lnmp环境的搭建 3.PHP程序员玩转Linux系列-搭建FTP代码开发环境 4.PHP程序员玩转L ...

  2. Docker Toolbox在window 10 home 下挂载宿主机目录到容器的正确操作

    由于我是window 10 home 而不是 pro版本,只能使用Docker Toolbox,其实docker for window对windows的支持更好,还有GUI,home版本安装Docke ...

  3. 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 ...

  4. Docker系列07—Dockerfile 详解

    本文收录在容器技术学习系列文章总目录 1.认识Dockerfile 1.1 镜像的生成途径 基于容器制作  dockerfile,docker build 基于容器制作镜像,已经在上篇Docker系列 ...

  5. Docker系列08—搭建使用私有docker registry

    本文收录在容器技术学习系列文章总目录 1.了解Docker Registry 1.1 介绍 registry 用于保存docker 镜像,包括镜像的层次结构和元数据. 启动容器时,docker dae ...

  6. Docker系列之实战:3.安装MariaDB

    环境 [root@centos181001 ~]# cat /etc/centos-release CentOS Linux release 7.6.1810 (Core) [root@centos1 ...

  7. Docker系列(20)- 数据卷容器

    数据卷容器 什么是数据卷容器? 容器和容器之间实现数据共享 一个容器先于宿主机创建挂载方式,宿主机就会有改卷的目录 第二个容器使用命令--volumes-from 第一个容器,共享使用了第一个容器与宿 ...

  8. Docker 系列二(操作镜像).

    一.镜像管理 1.拉取镜像 docker pull [选项] [Docker Registry 地址[:端口号]/]仓库名[:标签] -- Docker 镜像仓库地址 :一般是 域名或者IP[:端口号 ...

  9. Docker系列之MySQL安装教程

    Docker系列之MySQL安装教程 有了前面的基础教程Docker系列之常用命令操作手册之后,本博客记录一篇mysql的安装教程 mysql镜像查询命令 docker search mysql 几个 ...

随机推荐

  1. pikachu 不安全的url跳转

    不安全的url跳转问题可能发生在一切执行了url地址跳转的地方.如果后端采用了前端传进来的(可能是用户传参,或者之前预埋在前端页面的url地址)参数作为了跳转的目的地,而又没有做判断的话就可能发生&q ...

  2. 陀螺仪、加速度计与MPU6050的关系

    文章目录 一.引言 二.陀螺仪 三.加速度计 四.MPU6050 一.引言 要开始做俩轮平衡小车了,所以需要补充一些关于平衡小车的知识,首先就是如何让小车保持平衡,这是要依据小车当前的三轴角度和平衡位 ...

  3. uniapp scroll-view 组件横向滑动失效(ios问题出的最多)

    注意事项(做好以下几点就很难出问题): 一.scroll-view组件必须有固定高度,不可出现高度坍塌或让高度消失等现象;(重中之重) 二.一般问题出的多的就是在nvue环境下去使用的scroll-v ...

  4. Centos7 出现Welcome to emergency mode!【紧急模式】

    Centos7 出现Welcome to emergency mode![紧急模式] 做mount挂载时,修改了  /etc/fstab 文件,导致Centos7重启时出现如下图所示错误:   输入r ...

  5. C#中IEumerable的简单了解

    参考网址:https://blog.csdn.net/qq_39806817/article/details/115024666 一.IEnumerable简单介绍IEnumerable是可枚举类型, ...

  6. Java中除数为0的情况

    转自http://blog.csdn.net/alanzyy/article/details/8591534 在数学中,规定被除数不能为0 那么在Java程序中一旦出现除数为0时,会出现什么情况呢: ...

  7. Windows系统搭建Redis集群三种模式(零坑、最新版)

    目录 主从复制 修改配置文件 启动各节点 验证 哨兵模式 修改配置文件 启动实例 验证 集群模式 修改配置文件 启动实例 验证 主从复制 新建以下三个目录,用来部署一主二从 redis 的安装在另外一 ...

  8. centos 搭建jenkins+git+maven

      git+maven+jenkins持续集成搭建 发布人:[李源]  2017-12-08 04:33:37   一.搭建说明 系统:centos 6.5 jdk:1.8.0_144 jenkins ...

  9. rabbitMq消费死循环

    消费过程发生错误容易造成死循环 1.控制重发次数 2.try+catch+手动ack 3.try+catch+手动ack+死信队列(重试次数就失效了,因为捕捉确认后被打入了相应的死信队列) void ...

  10. jdbc操作mysql(四):利用反射封装

    前言 有了前面利用注解拼接sql语句,下面来看一下利用反射获取类的属性和方法 不过好像有一个问题,数据库中的表名和字段中带有下划线该如何解决呢 实践操作 工具类:获取connection对象 publ ...