本文讲的是Docker 1.10版本发布,【编者的话】Docker 1.10于二月初发布了,这是容器社区最近的重大事件,除了修复很多bug和功能增强之外,Docker1.10还引入了几个我们一直期待的重大改进和特性。在本文中我将会着重阐述我个人认为最有用和最令人兴奋的特性。

Docker Compose对于网络和卷的支持
Docker Compse 1.6是与Docker 1.10一起发布的,在Docker 1.9中引入了完全重新设计的网络和卷系统后,这一版中增加了对于将网络和卷作为顶级实体的支持。
最新版本的Docker Compose向后兼容老的文件格式,为了迁移到Docker Compose的Version 2文件格式,在顶部增加了version:’2’ 这一行,将所有已存在的服务定义移动到新的service:分段中,并且可选择性地为网络和卷创建volumn:network:分段。
通过这些新增加的特性,用户可以在docker-compose.yml文件中定义更加复杂的网络和存储设置,在这些环境中开发应用程序,只需要使用Docker Compose和Docker Swarm就可以在持续集成、测试和最终的生产环境中采用相同的设置,这是非常神奇的!
docker-compose.yml文件中一个小而美的语义上的改进就是用户可以为一个容器定义镜像名字和构建目录,并且保存一段时间,如果已经存在了,那么就不需要每次都重建了。

网络相关的甜点
在Docker 1.10版本中添加了更多与网络相关的特性,如下所示:
* 内部网络,可以用来创建限制内外流量的网络
* 容器可以分配自定义的IP地址
* 容器间的连接可以使用各种类型的网络,不仅仅是默认的桥接网络
* 默认使用内嵌的DNS服务,代替了早期使用的基于/etc/host文件的解决方案,因为DNS的扩展性更好。

Docker 1.10的新的安全特性
作为Docker 1.10发行版的一部分,几个关键的安全改进也被添加了进来。Seccomp模板(Linux系统调用过滤)、内容可寻址的镜像ID和User Namespace是最其中重要的几点。

Docker中的User Namespace
Linux 命名空间(UTS、PID、NET、MNT和IPC)是允许我们创建Linux容器的其中之一的概念,这个概念允许我们在不同的上下文环境中用相同的名字调用不同的东西,就像编程语言的命名空间,User Namespace(简写为USER)是添加到Linux内核中的最新的容器命名空间。
在User Namespace引入到Docker之前,容器中的Root用户与宿主机系统的Root用户具有相同的UID,其它容器可能也是如此,这显然是一个安全问题。借助于User Namespace,容器提供了UID和GID的映射,这就允许容器中的进程认为自己以UID 0运行(通常是Root用户),而实际上它们是以UID 1234、42或者其它的一些UID运行的,这意味着这些进程从容器的角度而言具有Root访问权限,但是从宿主机系统角度而言不具备这个权限的。
黑客将会经历更加艰难的破解时间(也许是更加有趣)来再次打破容器的安全限制。
目前UID和GID的映射是在Docker守护进程级别指定的(使用flag —userns-remap),然而,未来我们可以期望努力实现在每个容器上允许有不同的映射集,这样就可以在一个Docker主机上实现安全的多租户了。

Docker中的安全计算模式
安全计算模式或者简写为seccomp是Linux内核的沙盒机制,出现自2.6.12内核版本,所以这不是一个新概念。
Seccomp本质上允许用户过滤有效进程的系统调用,它可以显著降低攻击面,只使能应用程序/进程实际需要使用其功能的那些系统调用。你的每个PHP应用平均需要访问300个以上的有效系统调用吗?也许不用。
在Docker 1.10中,用户要么使用完整的默认seccomp模板以JSON文件来定义他们自己的配置并且使用参数 security-opt传给容器,要么不用任何seccomp模板(不推荐)运行容器。

内容可寻址的IDs
每一个Docker镜像代表一个镜像层的堆栈,这些镜像层是镜像文件系统的快照,存在于对最初的Dockerfile文件docker build过程中的每一步命令执行之后,这些镜像层,要么是从Docker Registry拉取的,要么是本地构建的,都是只读的对象,在它们的顶层增加一个读写层就创建了一个容器。
在过去版本的Docker中,镜像层(以及容器)是通过一个随机的UUID来识别的,从Docker 1.10版本开始,镜像层是通过一个内容的哈希来识别的,这使得在对镜像拉取、推送、载入和保存之后的完整性校验更加容易和透明,因为没有两个不同的镜像层意外地具有相同的ID,反之亦然。
由早期版本的Docke构建的现有镜像不得不迁移,当升级到Docker 1.10版本后,Docker守护进程会自动将同一主机上的所有镜像作迁移,如果有很多镜像需要做哈希的话,这会持续几分钟。如果你不想等待那样长的时间,有一个离线迁移的脚本。
注意:在Docker 1.10中容器ID仍然是随机的UUID。

更多的更新
这一版本中还有更多的甜点。添加了命令docker update,该命令允许更新已运行容器的资源约束,在更改资源约束配置文件之后,不需要重启Docker守护进程。资源约束用于磁盘的I/O,下载/更新管理器也被重构允许更快的镜像拉取和并行推送等等。

总结
Docker 1.10是一个非凡的发行版。一周前我已经迁移所有的主机到了新版本,没有遇到任何问题(就像我上次升级到1.9后)。我鼓励每个人都考虑升级。

原文链接:Docker 1.10(翻译:胡震)

原文发布时间为: 2016-02-27
本文作者:国会山上的猫TuxHu 
本文来自云栖社区合作伙伴DockerOne,了解相关信息可以关注DockerOne。
原文标题:Docker 1.10版本发布

Docker 1.10版本发布相关推荐

  1. ​苏宁回应股权质押给淘宝:正常合作;苹果App Store被越狱商店指控垄断;Docker 20.10.0发布|极客日报...

    整理 | 郑丽媛 头图 | CSDN 下载自东方 IC 快来收听极客头条音频版吧,智能播报由出门问问「魔音工坊」提供技术支持. 「极客头条」-- 技术人员的新闻圈! CSDN 的读者朋友们早上好哇,「 ...

  2. 极客日报第 28 期:苹果为取代高通芯片,开始研发蜂窝网调制解调器;Docker 20.10.0 发布

    文章目录 互联网快讯 程序员专属 Github 每日精选 CSDN 社区优质博文精选 互联网快讯 1.360 周鸿祎:用户对个人信息使用应享有知情权.选择权 近日,360 集团董事长兼 CEO 周鸿祎 ...

  3. Node.js v0.10版本发布

    Node.js研发团队发布了node.js v0.10版本,它是个基于Javascript.用于构建高性能异步服务器的平台.该版本主要更新如下:更易于使用的数据流处理模块,通过域更好地处理错误,此外还 ...

  4. beego 最新版本_优麒麟20.10版本发布--简而美,华而实

    原标题:优麒麟版本发布--简而美,华而实 北京时间 2020 年 10 月 23 日,优麒麟团队很高兴地宣布优麒麟(Ubuntu Kylin)开源操作系统 版本(代号Groovy Gorilla)正式 ...

  5. beego 最新版本_优麒麟20.10版本发布-

    北京时间 2020 年 10 月 23 日,优麒麟团队很高兴地宣布优麒麟(Ubuntu Kylin)开源操作系统 版本(代号Groovy Gorilla)正式发布. 是优麒麟发布的第 16 个版本,提 ...

  6. mageia linux 5.1 内核,Linux 5.10 LTS发布 为近期最重要的内核版本之一

    原标题:Linux 5.10 LTS发布 为近期最重要的内核版本之一 正如人们所期待的那样,Linus Torvalds今天正式发布了Linux 5.10. 除了是2020年的最后一个内核发布,这也是 ...

  7. Ubuntu 20.10 Beta 版本发布

    Ubuntu 20.10 "Groovy Gorilla" 的 Beta 版本发布了,这是开发周期计划中唯一的 Beta 版本. 此 Beta 版本构建于最新的 Linux ker ...

  8. ​苹果或于明年9月发布电动汽车;10家头部平台紧急下架互联网存款产品;Go 1.16首个Beta版本发布|极客头条​...

    整理 | 郑丽媛 头图 | CSDN 下载自东方 IC 快来收听极客头条音频版吧,智能播报由出门问问「魔音工坊」提供技术支持. 「极客头条」-- 技术人员的新闻圈! CSDN 的读者朋友们早上好哇,「 ...

  9. 《铜豌豆 Linux》10.7.1 版本发布

    <铜豌豆 Linux>10.7.1 版本发布 2020-12-09 https://www.atzlinux.com/News/2020/20201209.htm 此次发布主要为增加硬件固 ...

最新文章

  1. 清华发布《AI芯片技术白皮书》:新计算范式,挑战冯诺依曼、CMOS瓶颈
  2. ELK6.0已取消filebeat配置document_type
  3. python zipfile 模块下中文乱码 '╡┌╥╗╒┬_╒╨▒Ω╣½╕µ.docx'
  4. P5221 Product(反演)
  5. mac中如何从vim文本编辑器退回到命令
  6. python获取文件读写权限_Python 查看文件的读写权限方法
  7. 【Python】Tkinter图形界面设计(GUI)
  8. SPH算法(求最小代价树)
  9. [Leetcode]Next Permutation
  10. 一天搞定DXUT三步曲之一:DXUT框架
  11. 苹果Mac环境如何配置定时任务?
  12. Java7 和 C# 2.0
  13. Python3 函数参数
  14. python导入鸢尾花数据集_决策树分类鸢尾花数据集python实现
  15. oracle密码过期修改
  16. 电商与ERP集成方案
  17. postgres链接太多(sorry, too many clients already)
  18. 伦敦国王学院计算机申请要求,2020年伦敦国王学院高级计算机专业研究生申请条件及世界排名|学费介绍...
  19. HR website
  20. 【Vmware】 CentOS 8 安装教程

热门文章

  1. Shell-实际业务操作02
  2. 复习(二)—— Makefile工具使用
  3. 复习笔记(四)——C++继承
  4. 分类mysql_MySql分类
  5. python opencv ImportError: libGL.so.1: cannot open shared object file: No such file or directory
  6. mongodb一致性协议_mongodb副本集用一致性快照方法添加从节点步骤
  7. python转csv_python如何将列表存储为csv文件
  8. error java on syntax token_解决Java“syntax error on token enum”问题
  9. 【c++】0.C++笔记
  10. String hashCode 方法为什么选择数字31作为乘子