文章目录

  • 一、具名挂载和匿名挂载是什么?
  • 二、使用步骤
    • 1.具名挂载
    • 2.匿名挂载
    • 3.指定路径挂载
    • 4.扩展
  • 总结

一、具名挂载和匿名挂载是什么?

具名挂载的顾名思义就是有名字,这个名字是我们自己给取的,使用了具名挂载之后,我们可以通过命令查看自己制定的这个名字。

匿名挂载的意思就是不指定名字,让系统给他默认生成一个长长的字符串作为名字。

两者都可以实现把docker容器内部的目录挂载到主机上来,以防止数据的丢失,然后也可以通过宿主机操作容器内部的数据,这样的话,会更加方便,不过最主要的还是体现在第一点,确保安全性。

二、使用步骤

1.具名挂载

#以具名挂载的方式启动容器,需要注意的是,p需要大写,没有写端口的话,就是随机分配端口
# 格式:-v 具名名称:/容器内路径
[root@iZbp10d5h2h0qbsabf055iZ ~]# docker run -d -P --name nginx02 -v juming-nginx:/etc/nginx nginx
e056ecd764d8d96c97d4b8bb3172fc569151fd60ff897195d5a6d813113487e8

nginx容器已经成功运行起来了

[root@iZbp10d5h2h0qbsabf055iZ ~]# docker ps
CONTAINER ID   IMAGE     COMMAND                  CREATED          STATUS         PORTS                   NAMES
e056ecd764d8   nginx     "/docker-entrypoint.…"   10 seconds ago   Up 9 seconds   0.0.0.0:49153->80/tcp   nginx02

接下来通过docker volume ls查看卷挂载的情况,可以看到确实有一个叫做juming-nginx的卷挂载。

[root@iZbp10d5h2h0qbsabf055iZ ~]# docker volume ls
DRIVER    VOLUME NAME
local     d4eea76262dd14ccdf40faae90d916a98f2e97241c9faa463ed8e2e1c057eecd
local     e8db426c1ca6978fabeaae31c88a9285a8ee009e2422ef36d2969bf243f8f09e
local     juming-nginx
[root@iZbp10d5h2h0qbsabf055iZ ~]#

查看juming-nginx这个具体的卷

#Mountpoint代表宿主机路径,默认情况下,在容器内的路径全部挂载这宿主机的这个位置。
[root@iZbp10d5h2h0qbsabf055iZ ~]# docker volume inspect juming-nginx
[{"CreatedAt": "2021-02-23T18:55:44+08:00","Driver": "local","Labels": null,"Mountpoint": "/var/lib/docker/volumes/juming-nginx/_data","Name": "juming-nginx","Options": null,"Scope": "local"}
]
[root@iZbp10d5h2h0qbsabf055iZ ~]# 

查看一下宿主机上对应的位置。

[root@iZbp10d5h2h0qbsabf055iZ ~]# cd /var/lib/docker/volumes/
[root@iZbp10d5h2h0qbsabf055iZ volumes]# ls    #显示所有的卷信息
backingFsBlockDev                                                 juming-nginx
d4eea76262dd14ccdf40faae90d916a98f2e97241c9faa463ed8e2e1c057eecd  metadata.db
e8db426c1ca6978fabeaae31c88a9285a8ee009e2422ef36d2969bf243f8f09e
[root@iZbp10d5h2h0qbsabf055iZ volumes]# cd juming-nginx/
[root@iZbp10d5h2h0qbsabf055iZ juming-nginx]# ls
_data
[root@iZbp10d5h2h0qbsabf055iZ juming-nginx]# cd _data/
[root@iZbp10d5h2h0qbsabf055iZ _data]# ls
conf.d  fastcgi_params  koi-utf  koi-win  mime.types  modules  nginx.conf  scgi_params  uwsgi_params  win-utf
[root@iZbp10d5h2h0qbsabf055iZ _data]# cat nginx.conf    #查看这个配置文件user  nginx;
worker_processes  1;error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;events {worker_connections  1024;
}http {include       /etc/nginx/mime.types;default_type  application/octet-stream;log_format  main  '$remote_addr - $remote_user [$time_local] "$request" ''$status $body_bytes_sent "$http_referer" ''"$http_user_agent" "$http_x_forwarded_for"';access_log  /var/log/nginx/access.log  main;sendfile        on;#tcp_nopush     on;keepalive_timeout  65;#gzip  on;include /etc/nginx/conf.d/*.conf;
}
[root@iZbp10d5h2h0qbsabf055iZ _data]#

2.匿名挂载

以匿名的方式启动了一个容器,同样是挂载容器内容的/etc/nginx目录

[root@iZbp10d5h2h0qbsabf055iZ _data]# docker run -d -P --name nginx03 -v /etc/nginx nginx
ade532db323816d8de574ca694fb4c493a9a84afbfc35f9ccc3c8323d2fc7d68
[root@iZbp10d5h2h0qbsabf055iZ _data]# docker ps
CONTAINER ID   IMAGE     COMMAND                  CREATED          STATUS          PORTS                   NAMES
ade532db3238   nginx     "/docker-entrypoint.…"   8 seconds ago    Up 7 seconds    0.0.0.0:49154->80/tcp   nginx03
e056ecd764d8   nginx     "/docker-entrypoint.…"   11 minutes ago   Up 11 minutes   0.0.0.0:49153->80/tcp   nginx02
[root@iZbp10d5h2h0qbsabf055iZ _data]#

因为是匿名挂载,那么卷的名字就是一串随机的字符串。

[root@iZbp10d5h2h0qbsabf055iZ _data]# docker volume ls
DRIVER    VOLUME NAME
local     d4eea76262dd14ccdf40faae90d916a98f2e97241c9faa463ed8e2e1c057eecd
local     e8db426c1ca6978fabeaae31c88a9285a8ee009e2422ef36d2969bf243f8f09e
local     f35392c7f10e8984efe460f77c0a9db1fc5a5aab995e674659f31c82a357bdbf
local     juming-nginx
[root@iZbp10d5h2h0qbsabf055iZ _data]#

查看一下这个卷,docker inspect 卷名称

[root@iZbp10d5h2h0qbsabf055iZ _data]# docker inspect f35392c7f10e8984efe460f77c0a9db1fc5a5aab995e674659f31c82a357bdbf
[{"CreatedAt": "2021-02-23T19:06:52+08:00","Driver": "local","Labels": null,"Mountpoint": "/var/lib/docker/volumes/f35392c7f10e8984efe460f77c0a9db1fc5a5aab995e674659f31c82a357bdbf/_data","Name": "f35392c7f10e8984efe460f77c0a9db1fc5a5aab995e674659f31c82a357bdbf","Options": null,"Scope": "local"}
]
[root@iZbp10d5h2h0qbsabf055iZ _data]#

3.指定路径挂载

#-v 宿主机路径:容器内路径
[root@iZbp10d5h2h0qbsabf055iZ _data]# docker run -d -P --name nginx04 -v /test/a:/etc/nginx nginx
1d3a4675e6b55b39365bb723be684492e84a762a677f64ab9a6b0fe035b234f0

我们可以看到,nginx确实也启动了。

[root@iZbp10d5h2h0qbsabf055iZ _data]# docker ps -a
CONTAINER ID   IMAGE           COMMAND                  CREATED          STATUS                        PORTS                               NAMES
1d3a4675e6b5   nginx           "/docker-entrypoint.…"   3 minutes ago    Exited (1) 3 minutes ago                                          nginx04
ade532db3238   nginx           "/docker-entrypoint.…"   8 minutes ago    Up 8 minutes                  0.0.0.0:49154->80/tcp               nginx03
e056ecd764d8   nginx           "/docker-entrypoint.…"   19 minutes ago   Up 19 minutes                 0.0.0.0:49153->80/tcp               nginx02

去查看一下指定的目录。

[root@iZbp10d5h2h0qbsabf055iZ /]# cd test/
[root@iZbp10d5h2h0qbsabf055iZ test]# ls
a
[root@iZbp10d5h2h0qbsabf055iZ test]# cd a
[root@iZbp10d5h2h0qbsabf055iZ a]# l
-bash: l: command not found
[root@iZbp10d5h2h0qbsabf055iZ a]# ls
[root@iZbp10d5h2h0qbsabf055iZ a]#

4.扩展

ro代表read only ,它的意思是一旦使用了ro,那么就只能读,也就是容器内容只能读,不能写数据,而宿主机可以进行读写的操作。

#增加权限,-v 具名名称:容器内路径:容器权限
[root@iZbp10d5h2h0qbsabf055iZ a]# docker run -d -P --name nginx06 -v jumpming1-nginx:/etc/nginx:ro nginx
eb8582385154f0ee7be529b7b8fb175d3283f1782254b63b1816b694b0e21e1f
[root@iZbp10d5h2h0qbsabf055iZ a]#

rw代表可读可写,容器内部可以读也可以写,宿主机可以读也可以写。默认就是rw模式。

[root@iZbp10d5h2h0qbsabf055iZ a]# docker run -d -P --name nginx07 -v jumpming1-nginx:/etc/nginx:rw nginx
8197eed6941c349f50e8d054e62d36e342a861b6a5317e274514a94dfe87d004
[root@iZbp10d5h2h0qbsabf055iZ a]#

总结

  • 具名挂载:-v 具名名称:/容器内路径
  • 匿名挂载:-v /容器内路径
  • 指定路径:-v /宿主机路径:/容器内路径

一些命令

  • docker volume ls查看所有的卷
  • docker inspect 查看指定的卷

默认容器权限是rw可读可写模式,默认路径挂载目录为"/var/lib/docker/volumes/xxxxxx/_data"

docker笔记之具名挂载与匿名挂载相关推荐

  1. docker 的具名挂载与匿名挂载

    大家好,今天我们分享一下docker 的具名挂载与匿名挂载 以这条命令举例 [root@localhost ~]# docker run -d -P --name nginx02 -v /etc/ng ...

  2. 【Docker】7、数据卷详解:具名挂载、匿名挂载、初识DockerFile、数据卷容器

    1.什么是容器数据卷? docker的理念回顾 将应用和环境打包成一个镜像! 如果数据都在容器中,那么容器删除,数据就会丢失!需求:数据可以持久化.如:MySQL,容器删除了,MySQL数据可以存储在 ...

  3. 挂载(具名挂载、匿名挂载)

    1.指定名称挂载 docker run -it -v /home/ceshi:/home centos /bin/bash 2.具名挂载(指定了一个名字):带/代表绝对路径开头 -v 卷名:容器内路径 ...

  4. docker具名挂载与匿名挂载

    文章分为三部分: 什么是具名.匿名和指定路径挂载 匿名挂载 具名挂载 什么是具名.匿名和指定路径挂载 -v 容器内路径 #匿名挂载 -v 卷名 : 容器内路径 #具名挂载 -v 宿主机路径 : 容器内 ...

  5. docker 笔记一

    docker 笔记一 docker 官网:https://www.docker.com/ docker概述 docker 出现的原因,解决了什么问题 在我们接触的传统项目开发中,项目或者说产品的一般拥 ...

  6. Docker笔记整理

    文章目录 docker历史 docker能做什么 Docker的安装 Docker的基本组成 安装Docker 阿里云镜像加速 回顾Hello-World 底层原理 Docker的常用命令 帮助命令 ...

  7. 【狂神说docker笔记】 入门篇(手敲的 网络篇请移步视频)

    Docker概述 Docker为什么出现? 一款产品∶ 开发–上线两套环境!应用环境,应用配置! 开发-运维.问题︰我在我的电脑上可以运行!版本更新,导致服务不可用!对于运维来说,考验就十分大?环境配 ...

  8. 狂神docker笔记1

    docker概述 隔离:Docker核心思想!打包装箱!每个箱子相互隔离! Docker通过隔离机制,可以将服务器利用到极致! Docker历史: 2010年成立公司dotCloud 2013年开源 ...

  9. 狂神说docker笔记(一)

    一.Docker概述 二.安装Docker 环境准备 linux基础 CentOS7 环境查看 #系统内核3.10以上 [root@localhost ~]# uname -r 3.10.0-957. ...

最新文章

  1. 【报告下载】想要评测 Kylin和Vertica的性能?这份基准测试白皮书已经替你做到了...
  2. 对html5的了解,HTML5——对HTML5的认识
  3. iOS之深入定制基于PLeakSniffer和MLeaksFinder的内存泄漏检测工具
  4. 共享单车当废铁卖 ofo回应:已达报废年限
  5. PyQt5 GUI Programming With Python 3.6 (一)
  6. IIS7 请求筛选模块被配置为拒绝超过请求内容长度的请求
  7. postman 配置统一的ip地址
  8. ext3转化为ext4
  9. 360安全卫士默认浏览器设置 360默认浏览器设置 锁定浏览器
  10. Parallel GC
  11. 华为路由器静态路由基本配置
  12. 激励的最佳状态,是让员工在最需要激励的时候,获得最大的心理满足
  13. 国产六大CPU:飞腾、鲲鹏、龙芯、海光、申威、兆芯
  14. coco数据集大小分类_COCO数据集使用
  15. 【打开方式问题解决】该文件没有与之关联的应用来执行该操作。请安装应用,若已经安装应用,请在“默认应用设置“页面中创建关联。
  16. 二阶线性微分方程解的结构(齐次与非齐次)+ 常数变易法 | 高阶微分方程(二)
  17. Matlab笔记(二):Matlab实现高斯函数的三维显示
  18. 收藏 | 100+篇大数据学习资讯,带你玩转大数据分析!
  19. 【大数据存储技术】第7章 MongoDB 的原理和使用
  20. git查看提交修改的文件列表

热门文章

  1. inkscape:图层
  2. 服务器利用scp传输文件
  3. Mac Office启动报错:隐藏模块中出现编译错误:link
  4. android 项目练习:自己的词典app——生词本(一)
  5. 微信中无法直接下载秒借类金融贷款APP的解决方案
  6. android lint 安全检测,Android Lint检查
  7. Eclipse中Java项目转化为Java Web项目
  8. 【qq机器人】东京奥运奖牌
  9. javascript 百度地图定位标点,定位详情
  10. Mysql主从复制和Redis主从复制