Docker 1.10版本发布

简介: 本文讲的是Docker 1.10版本发布,【编者的话】Docker 1.10于二月初发布了,这是容器社区最近的重大事件,除了修复很多bug和功能增强之外,Docker1.10还引入了几个我们一直期待的重大改进和特性。在本文中我将会着重阐述我个人认为最有用和最令人兴奋的特性。
本文讲的是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版本发布
目录
相关文章
|
5月前
|
Docker 容器
Docker安装稳定版及指定版本
Docker安装稳定版及指定版本
567 0
|
7月前
|
Ubuntu 关系型数据库 MySQL
M1 macos docker获取x86 x64 amd 等指定架构版本linux ubuntu mysql 容器并启动容器
M1 macos docker获取x86 x64 amd 等指定架构版本linux ubuntu mysql 容器并启动容器
|
5月前
|
Docker 容器
docker重命名镜像名称以及tag版本
docker重命名镜像名称以及tag版本
223 0
|
2月前
|
Nacos Docker 容器
启动2.2.4版本的Nacos Docker
【2月更文挑战第7天】启动2.2.4版本的Nacos Docker
58 8
|
2月前
|
Java Linux 流计算
【极数系列】Flink环境搭建&Docker版本(04)
【极数系列】Flink环境搭建&Docker版本(04)
|
4月前
|
jenkins 持续交付 Docker
docker版下载最新稳定版本的jenkins
docker版下载最新稳定版本的jenkins
|
9月前
|
Java Linux Shell
centos7内网离线安装face_recognition、python、pip、CMake、dlib,离线升级gcc/切换gcc,文末有face_recognition的docker版本
公司项目需要人脸识别,本来app自带人脸识别,结果api支持的设备试了一圈就一个同事的华为Mate40Pro可以,所以使用无望。接着找了一下免费的java离线人脸识别sdk,发现虹软的确实简单好用,一会就在linux上弄好并测试通过了,然而在准备集成进去开写代码时,不小心看到了一眼首次激活需联网,后续方可离线使用,好吧,我们内网机器首次都不可能的,接着看了下离线激活方法,首先需要企业认证,这一步我们肯定没法做的,毕竟不是之前的小公司了,营业执照啥的随便给我肯定不行,直接放弃了。后来在同事推荐下看了下face_recognition这个项目,之前基本没用过python,于是有了漫长的踩坑之旅。
351 1
|
4月前
|
并行计算 Linux 计算机视觉
DeepFace【部署 04】轻量级人脸识别和面部属性分析框架deepface使用Docker部署CPU+GPU两个版本及cuDNN安装
DeepFace【部署 04】轻量级人脸识别和面部属性分析框架deepface使用Docker部署CPU+GPU两个版本及cuDNN安装
192 0
|
4月前
|
Kubernetes 安全 Ubuntu
Kubernetes学习笔记-Part.02 Docker版本
Part.01 Kubernets与docker Part.02 Docker版本 Part.03 Kubernetes原理 Part.04 资源规划 Part.05 基础环境准备 Part.06 Docker安装 Part.07 Harbor搭建 Part.08 K8s环境安装 Part.09 K8s集群构建 Part.10 容器回退
56 0
|
4月前
|
Docker 容器
Centos7-Docker卸载旧的更新到新版本
Centos7-Docker卸载旧的更新到新版本
44 0