docker中的volumes
volumes:- /var/run/:/host/var/run/- ./channel-artifacts:/var/hyperledger/configs- ./fabric_logs:/tmp/fabric_logs/
把容器中/tmp/fabric_logs目录映射到宿主机当前目录下的./fabric_logs目录下。这两个目录会共享数据。
1、运行命令:
docker run --name test -it -v /home/xqh/myimage:/data ubuntu /bin/bash
其中的 -v 标记 在容器中设置了一个挂载点 /data(就是容器中的一个目录),并将主机上的 /home/xqh/myimage
目录中的内容关联到 /data下。
这样在容器中对/data目录下的操作,还是在主机上对/home/xqh/myimage的操作,都是完全实时同步的,因为这两个目录实际都是指向主机目录。
2、运行命令:
docker run --name test1 -it -v /data ubuntu /bin/bash
上面-v的标记只设置了容器的挂载点,并没有指定关联的主机目录。这时docker会自动绑定主机上的一个目录。通过docker inspect
命令可以查看到。“Mounts”: [
{
“Name”: “2aebfaef1bb42f2486ed236abe897441f64a3e880c64c012fca113022d3aec50”,
“Source”: “/local/docker/var/lib/docker/volumes/2aebfaef1bb42f2486ed236abe897441f64a3e880c64c012fca113022d3aec50/_data”,
“Destination”: “/local/daasdocker/sofeware”,
“Driver”: “local”,
“Mode”: “”,
“RW”: true,
“Propagation”: “”
},上面 Mounts下的每条信息记录了容器上一个挂载点的信息,“Destination”
值是容器的挂载点,"Source"值是对应的主机目录。可以看出这种方式对应的主机目录是自动创建的,其目的不是让在主机上修改,而是让多个容器共享。
二、通过dockerfile创建挂载点
上面介绍的通过docker run命令的-v标识创建的挂载点只能对创建的容器有效。
通过dockerfile的 VOLUME 指令可以在镜像中创建挂载点,这样只要通过该镜像创建的容器都有了挂载点。
还有一个区别是,通过 VOLUME 指令创建的挂载点,无法指定主机上对应的目录,是自动生成的。
语法:
VOLUME ["/var/log/"]
VOLUME /var/log
VOLUME /var/log /var/db
VOLUME ["/data1","/data2"]
上面的dockfile文件通过VOLUME指令指定了两个挂载点 /data1 和 /data2.
我们通过docker inspect 查看通过该dockerfile创建的镜像生成的容器
可以看到两个挂载点的信息。
三、容器共享卷(挂载点)
docker run --name test1 -it myimage /bin/bash
上面命令中的 myimage是用前面的dockerfile文件构建的镜像。 这样容器test1就有了 /data1 和 /data2两个挂载点。
下面我们创建另一个容器可以和test1共享 /data1 和 /data2卷 ,这是在 docker run中使用 --volumes-from标记,如:
可以是来源不同镜像,如:
docker run --name test2 -it --volumes-from test1 ubuntu /bin/bash
也可以是同一镜像,如:
docker run --name test3 -it --volumes-from test1 myimage /bin/bash
上面的三个容器 test1 , test2 , test3 均有 /data1 和 /data2 两个目录,且目录中内容是共享的,任何一个容器修改了内容,别的容器都能获取到。
docker中的volumes相关推荐
- Docker中的Docker volumes与Persistent Volume借鉴
文章目录 <Docker中的Docker volumes与Persistent Volume借鉴> 引言 技术原理及概念 2.1. 基本概念解释 2.2. 技术原理介绍:算法原理,操作步骤 ...
- Docker的使用(五:Docker中的网络与数据管理)
实验环境 三台运行有Ubuntu 16.04 操作系统的虚拟机,并每台主机中已安装docker环境: 学习目标 docker的网络管理 docker Swarm集群的使用 Volume数据卷的使用 实 ...
- 你在 Docker 中跑 MySQL?恭喜你,可以下岗了!
欢迎关注方志朋的博客,回复"666"获面试宝典 容器的定义:容器是为了解决"在切换运行环境时,如何保证软件能够正常运行"这一问题. 目前,容器和 Docker ...
- docker部署python web应用_在 Docker 中运行一个 Python 的 Web 应用
几周前, Elastic Beanstalk声明在AWS云中配置和管理Docker容器.在本文中,我们通过一个简单的注册表单页面应用去理解Docker部署过程,该表单使用Elastic Beansta ...
- 不建议在Docker中部署数据库
近 2 年 Docker 非常的火热,各位开发者恨不得把所有的应用.软件都部署在 Docker 容器中,但是您确定也要把数据库也部署的容器中吗? 这个问题不是子虚乌有,因为在网上能够找到很多各种操作手 ...
- mysql自动从另外表取数_你在 Docker 中跑 MySQL?恭喜你,好下岗了!
容器的定义:容器是为了解决"在切换运行环境时,如何保证软件能够正常运行"这一问题. 目前,容器和 Docker 依旧是技术领域最热门的词语,无状态的服务容器化已经是大势所趋,同时也 ...
- 如果在docker中部署tomcat,并且部署java应用程序
2019独角兽企业重金招聘Python工程师标准>>> 如果在docker中部署tomcat,并且部署java应用程序 博客分类: docker 1.先说如何在docker中部署to ...
- docker 发布tomcat项目_在docker中部署tomcat并且部署java应用程序的步骤详解
1.先说如何在docker中部署tomcat 第一步:root用户登录在系统根目录下创建文件夹tomcat7,命令如:mkdir tomcat7,并且切换到该目录下:cd tomcat7: 第二步:创 ...
- docker -v 挂载文件_浅谈关于docker中数据卷的操作,附带案例
Volume数据卷的由来: Docker镜像是由多个文件系统(只读层)叠加而成.当我们启动一个容器的时候,Docker会加载只读镜像层并在其上添加一个读写层.如果运行中的容器修改了现有的一个已经存在的 ...
最新文章
- 'unicodeescape' codec can't decode bytes in position 16-17: malformed \N character escape
- C++11:move移动语义
- 2017年计算机基础知识答题宝典,2017年全国职称计算机考试答题技巧分享
- xml、网络编程、 反射
- linux shell脚本字符串 字段分隔符 存入数组 根据下标取值
- linux常用进程管理工具及查看
- gstreamer之RTSP Server一个进程提供多路不同视频
- 8086汇编语言程序设计典型题目
- 专业PLC数据采集软件PLC-Recorder通过ADS通讯进行倍福TwinCAT2和TwubCAT3数据采集的介绍
- matlab频率响应怎么求零极点,离散系统的频率响应分析和零极点分布.doc
- 会让你变得与众不同的22个技巧
- 排队器拦截_如何绕过浏览器的弹窗拦截机制
- 使用zxing生成彩色或带图片的二维码
- 运用selenium库写淘宝抢购详解【3】(文末附带源码)
- 从 Forces 开始分析责任链模式:「写一个 Discord 对话机器人」
- 新鲜新奇事物_用新鲜形容事物很新奇的句子
- 电影(0x05 排序)
- 插图 引用 同一行两个插图_案例研究产品设计中的动画插图
- 在这家不加班的 IT 公司里,我们是这样加班的
- angular中安装ng-alain 插件