docker和宿主之间的数据共享以及docker间的数据共享仍然是让人头疼和操心的地方。

几个基本概念:

docker: 一种容器管理技术,这里也指既有的开发工具链。

container: 容器

image: 镜像

volum:卷 [ 译者:卷可以理解成计算机中的文件路径 ]

容器中管理数据主要有两种方式:

数据卷(Data Volumes)

数据卷容器(Data Volume Containers)

数据卷

数据卷是一个可供容器使用的特殊目录,它绕过文件系统,可以提供很多有用的特性:

  1. 数据卷可以在容器之间共享和重用;
  2. 对数据卷的修改会立马有效;
  3. 对数据卷的更新,不会影响镜像;
  4. 卷会一直存在,直到没有容器使用。

数据卷的使用,类似于Linux下对目录或文件进行mount操作。

另:docker run参数详解

docker run [OPTIONS] IMAGE [COMMAND] [ARG...]

OPTIONS说明:

-a stdin: 指定标准输入输出内容类型,可选 STDIN/STDOUT/STDERR 三项;

-d: 后台运行容器,并返回容器ID;

-i: 以交互模式运行容器,通常与 -t 同时使用;

-t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;

--name="nginx-lb": 为容器指定一个名称;

--dns 8.8.8.8: 指定容器使用的DNS服务器,默认和宿主一致;

--dns-search example.com: 指定容器DNS搜索域名,默认和宿主一致;

-h "mars": 指定容器的hostname;

-e username="ritchie": 设置环境变量;

--env-file=[]: 从指定文件读入环境变量;

--cpuset="0-2" or --cpuset="0,1,2": 绑定容器到指定CPU运行;

-m :设置容器使用内存最大值;

--net="bridge": 指定容器的网络连接类型,支持 bridge/host/none/container: 四种类型;

--link=[]: 添加链接到另一个容器;

--expose=[]: 开放一个端口或一组端口;

使用镜像nginx:latest以后台模式启动一个容器,将容器的80端口映射到主机的80端口,主机的目录/data映射到容器的/data

docker run -p 80:80 -v /data:/data -d nginx:latest

使用镜像nginx:latest以交互模式启动一个容器,在容器内执行/bin/bash命令。

runoob@runoob:~$ docker run -it nginx:latest /bin/bash

root@b8573233d675:/#

挂载本地的目录到容器里

docker run -v /data:/data -d ubuntu

-v 用来指定挂载目录“:”前面的/data/为本地目录“:”后面的/data1/为容器里的目录不管是把容器停掉、还是删除,数据在本地还是存在的

挂载数据卷

docker run -itd -v /data/:/data1 ubuntu /bin/bash

挂载目录的时候可以指定容器name,如果不指定就随机定义了。比如上面我们没有指定它,就生成了一个名字为tender_euclid,这个名字可以使用命令 Docker ps 看最右侧一列。

docker run -itd --volumes-from tender_euclid ubuntu /bin/bash

这样我们使用ubuntu镜像创建了新的容器,并且使用了tender_euclid容器的数据卷。

数据卷容器

定义数据卷容器

有时候,我们需要多个容器之间相互共享数据,类似于linux里面的NFS。所以就可以搭建一个专门的数据卷容器,然后其他容器直接挂载该数据卷。

首先建立数据卷容器

docker run -itd -v /data/ --name testv ubuntu /bin/bash

注意:这里的/data/是容器的/data目录,并非本地的/data/目录

其他容器挂载该数据卷

docker run -itd --volumes-from testv ubuntu /bin/bash

注意:使用–volumes-from参数所挂载数据卷的容器自身并不需要保持在运行状态

参考博客:http://www.jb51.net/article/97929.htm

最新文章

  1. ICSharpCode.SharpZipLib.dll 移植WP
  2. MySQL常用数据库小结
  3. Spring中Bean的作用域
  4. Asp.net 加载事件(转载)
  5. Leetcode: Design Phone Directory
  6. Win10(win7) 安装vs2015(2012)出现ASP.NET 4.0/4.5 尚未在 Web 服务器上注册 下载这个补丁安装就可以了
  7. 60款开源云应用【Part 2】(60 Open Source Apps You Can Use in the Cloud)
  8. NET Core RC2 and .NET Core SDK Preview
  9. 20_学生选课数据库SQL语句练习题
  10. server.go 源码阅读
  11. Windows苹果安卓手机远程桌面客户端推荐
  12. C# 比较和排序(IComparable和IComparer以及它们的泛型实现)
  13. C# 开发Modbus Rtu客户端 modbus测试Demo,Modbus 串口通信 , 虚拟MODBUS-RTU测试
  14. Vs .Net Framework 灵活配置
  15. 零基础入门到精通:Python大数据与机器学习之Pandas-数据操作
  16. PPT资源
  17. C# 编码规范、命名规则
  18. Scripting.FileSystemObject对象的详细技巧指南
  19. 【BZOJ】 3238: [Ahoi2013]差异
  20. sprinboot之mongodb

热门文章

  1. pat1055. The World's Richest (25)
  2. Vue汇总(搬砖)
  3. 美团Java面试154道题
  4. U盘小偷——C++实现U盘插入检测和文件扫描拷贝
  5. javascript中Array常用方法
  6. 初学树套树:线段树套Treap
  7. gearmand 编译 could not find gperf
  8. MFC-[转]基于MFC的ActiveX控件开发
  9. java设计模式——单例模式(二)
  10. Too Rich HDU - 5527 (贪心+dfs)