首页 > 开发 > 云计算 > 正文

Docker 1.11.0 变更日志

2016-07-12 21:18:43  来源:极客头条
  春节过后,时隔两个月,Docker的又一个大版本1.11.0发布,除了功能的不断完善之外,该版本最大的看点无疑在于Docker Daemon的架构由原来一个模块,现在拆分为4个独立的模块组成,
dockercontainerddocker-containerd-shimdocker-runc  作为在生产环境中深度使用Docker的科技型公司,DaoCloud同时也踊跃参与Docker软件的开源社区,为Docker贡献代码,其中本次docker 1.11.0版本的变更日志中,有关info信息的现实,配置文件加载的验证,请求返回码的更正等多个pr,均由DaoCloud的工程师孙宏亮完成实现并合并。
  以下是 Docker 1.11.0版本的完整变更日志。
重要提示  使用Docker 1.11.0时,和往常有很大不同的是,现在Linux平台上Docker的安装,包括4个不同的二进制文件,它们分别是:docker, docker-containerd, docker-containerd-shim 以及 docker-runc。如果在你的环境中,有一些脚本是强依赖于单独一个的docker二进制文件,使用前需要确认更新这些脚本。和Docker Daemon的交互依然和以前保持不变,而其他部分的二进制文件的使用则可以认为对用户透明。另外,在Windows平台上,二进制文件依然以单独的docker.exe形式存在。
镜像构建模块 (Builder)修复了当处理WORKDIR命令时,Docker不能使用uid/gid的Bug修复了通过用户命名空间(userns)不能使用正确的uid/gid的Bug
Docker客户端(Client)Docker客户端(Client)安全参数的划分符,由之前的:改为=在pull,push,build,login和search操作中,可以加入用户代理,以传输至Docker Registry允许通过API分别设定容器的域名名称(DOMAIN_NAME)和主机名docker info命令的执行过程中,如果内核与操作系统信息没有找到,提示警告信息修复了docker stats –no-stream命令输出有可能都是0的Bug修复了有些新启动的容器不会出现在docker stats命令中的Bug在Linux-cgo终端中不再支持后处理(Post Processing)如果–hostname参数不符合RFC1123的话,该参数会被拒绝传入Docker开始支持通过SOCKS代理来转发客户端请求Docker目前支持外部的认证存储docker ps命令现在支持显示被挂载到容器内部的存储卷列表docker info现在支持显示Docker Daemon的根目录地址Docker现在不允许用户登录时输入一个空的用户名,因为空格会被移除Docker的运行事件属性会通过key来排序docker ps命令不再显示已经停止容器的暴露端口Docker现在会自动还原现场,如果一个docker save和docker export操作失败的话docker load命令现在支持显示一个进度条Distribution修复了当下载没有layer的镜像时会发现的恐慌错误修复了使用一个错误配置的token服务来向Docker Registry推送镜像时的恐慌当进行一个受信的镜像推送时,目前需要完成一次全面的授权工作已经支持Registry的OAuth目前docker login使用docker/distribution中的实现来处理token信息docker login不再提示输入邮箱地址Docker如果没有basic auth的信息时,会自动转向docker regsitry v1在网络错误或者超时的情况下,Docker会重新恢复对一个镜像layer的下载修复了推送cross-repository时生成的manifest的媒介类型当Docker Content Trust开启时,当下载一个镜像时,修复了Docker需要请求额外的push认证信息日志模块(logging)修复了jorunald日志驱动的数据临界区冲突当发送日志时,Docker的syslog驱动现在使用RFC-5424的格式Docker的GELF日志驱动现在允许通过gelf-compression-type和gelf- - compression-level参数来制定压缩算法以及压缩级别Docker Daemon开始使用–law-logs参数来保证输入没有着色的日志在微软平台上的Docker,目前包括了ETW (Event Tracing in Windows)的日志驱动,命名为etwlogsJournald日志驱动开始有能力处理标签Fluent日志驱动开始支持以下参数,fluentd-address, fluentd-buffer-limit, fluentd-retry-wait, fluentd-max-retries 和 fluentd-async-connectDocker开始支持向Google Cloud发送日志,主要通过日志驱动gcplogs各式更新(Misc)当通过docker save命令保存链接关系的镜像时,最终docker load命令会以父子的关系,重新保存这些镜像目前Docker Cli的编译工作已经支持OpenBSD标签目前已经可以被添加在网络、存储卷和镜像的创建过程中dockremap目前会被作为默认用户创建修复一部分的响应请求内存泄漏当作为systemd的一项服务时,Docker会管理它的进程cgroupdocker info会回报cgroup内核内存的大小,或者在不支持该参数时发送一个告警docker info目前可以支持cgroup驱动的显示Docker命令的自动补全,已经在PowerShell中得到支持在Docker的世界中,不再存在dockerinit支持在arm64的设备上构建Docker在一个原生的Windows安装过程中,实现构建docker.exe的试验版支持网络修复了一个节点被从一个集群中强制删除时可能出现的恐慌错误修复了在Swarm集群中启动一个容器时,会报“error creating vxlan interface”的错误不管是否用拥有一个运行的容器,docker network inspect会显示所有的endpoint对MacVlan和IPVlan的支持,已经被加入至Docker的试验版本docker network ls的输出现在会以网络名进行排序修复了Docker会允许保留的default名来创建网络的Bugdocker network inspect目前会显示一个网络是否是内部的当创建一个网络时,通过清晰的参数来实现控制IPv6(docker network create –ipv6),这会在docker network inspect中以一个新的域EnableIPv6来实现在内嵌的DNS服务中支持AAAA记录,也就是IPv6的服务发现修复了Bug,从而不向外部主机转发docker域内IPv6查询请求为轮询的DNS策略,从嵌入的DNS服务器中支持多种A/AAAA纪录在非正常的docker重启之后,修复了endpoint的数量不一致将暴露端口和端口映射关系的所属权,从Endpoint移至Sandbox当主机的配置有ipv6.disable=1时,修复了不能docker reload的Bug在IPAM网络地址管理驱动中添加了nil的内置实现修复了iptables.Exists()逻辑中的Bug修复使用overlay网络时,veth 网络接口的内存泄漏问题修复了在关闭过程中一个网络删除后,阻止docker reload操作的Bug确保iptables链在firewalld重新加载过程中被重新创建在配置重新加载的过程中允许传入全部的数据存储仓库地址对于匿名的容器,对IP与名称的映射使用别名,比如:DNS PTR record修复从/etc/hosts文件删除一项时有可能产生的程序恐慌从容器的网络命名空间中找到被转发的DNS查询在docker daemon重新加载配置时,为网桥网络获取网络的内部网络模式配置在docker daemon重新加载配置时,获取原先的IPAM网络地址管理驱动插件修复了每次罗列插件时都会出现的文件描述符泄漏修复了面对大量数据时,authz插件有可能会使payload body崩溃的BugDocker Daemon 运行时修复了通过无效的参数启动一个容器之后还原现场可能存在的程序恐慌修复了事件计时器提前停止可能出现临界区冲突修复了layer存储中存在的数据临界区问题,该问题有可能导致map对象的失效以及docker daemon进程的崩溃在mount时,对于宿主机文件的自动创建功能由重新恢复,此前在Docker 1.9版本时,该功能已经被弃用当用户命名空间启动时,现在可以让容器间共享NET和IPC命名空间docker inspect 命令目前已经可以支持显示rootfs的layerWindows上的Docker现在已经支持了一个top命令的最简单实现当一个容器不能通过Docker的命令启动时,Docker将会报告这个错误如果udev sync不可用时,Docker将拒绝运行device mapper当配置被重新加载时,修复了不验证配置有效性的Bug修复了出现夯机的现象,当初始启动失败后的attach操作修复了Docker配置文件中的Registry服务参数没有被正常考虑的问题修复了exec和resize操作有可能造成的临界区数据访问冲突问题修复了在docker事件中,没有正确考虑的纳秒计算问题修复了当传入一个64位ID时,Docker命令的处理问题Docker会返回一个204 status code,当删除网络成功的时候修复了杀死进程时该进程已经自己退出时,Docker Daemon有可能无限期等待的Bugdevicemapper驱动开始支持参数dm.min_free_space,如果映射的设备剩余空间到达了设定值,那么新设备的创建也会被禁止Docker现在支持通过参数–security-opt=no-new-privileges,禁止容器内的进程获取新的privilege的权限带有参数–device启动一个容器时,现在将会重新解析符号链接Docker现在开始通过containerd和runc来创建新的容器修复了Docker配置重新加载只检索配置文件中选项的问题当网络参数–net=host时,Docker现在允许为容器再设定一个hostname当–privileged和新的–userns=host参数被指定时,Docker目前允许运行 - privileged容器时使用参数–userns-remap当容器崩溃后重启时,修复了该情况下Docker不会清洗现场的Bug当重新加载配置文件,读到一个没有定义的配置项时,Docker将会报告这个错误,修复了Docker Daemon重启时,容器加载过程中依赖与插件的错误docker update操作支持更新一个容器的重启策略docker inspect现在返回一个新的State状态,包含了可读的容器状态。Docker开始支持限制容器的运行进程个数,一旦容器的PID Cgroups被启动的话,可以通过参数pids-limit来实现,当然这需要Linux内核版本的支持docker load命令新添加了一个–quiet参数,来使得缓解运行输出修复了IPv6点对点通信时的邻点发现问题修复了如果容器通过无效参数启动时,清理过程中有可能出现的运行恐慌修复了当运行终端被关闭之后,容器不能被停止的Bug安全拥有类型pcp_pmcd_t的对象,目前已经授予了访问/var/lib/docker的管理权限restart_syscall,copy_file_range和mlock2已经作为容器允许的系统调用,被加入至默认的seccomp文档中send,recv和x32已经加入至容器允许的系统调用,从而使得容器可以安装32位的软件包Docker Content Trust目前可以向服务端发送请求,以实现签名快照将对于YubiKeys的支持移出了试验部分(experimental)存储卷命令docker volume ls的输出目前已经按照存储卷的名称来排序本地的存储卷驱动(local driver)目前可以接受与mount命令类似的参数修复了一个Bug,使得只有一个字母的文件夹可以被用来作为存储卷的源地址在docker run -v命令中,新添加一个新的flag,名为nocopy。这个标识符告知Docker Daemon不要拷贝容器中的内容到存储卷之中(原先这是一个默认的行为)   作者简介:孙宏亮,DaoCloud技术合伙人,主要负责DaoCloud企业级容器云平台的研发。目前已出版《Docker 源码分析》一书,也是国内第一批研究及实践Docker的工程师,同时也是国内社区极具影响力的Docker布道者。
  2016年4月22日-23日,由CSDN重磅打造的SDCC 2016数据库&架构技术峰会将在深圳举行,目前18位讲师和议题已全部确认。两场峰会大牛讲师来自百度、腾讯、阿里、京东、小米、唯品会、滴滴出行、携程等知名互联网公司,共同探讨高可用/高并发/高稳定/高流量的系统架构设计、秒杀系统架构、搜索架构、中小企业架构之道、数据平台系统演进历程和技术剖析、传统数据库与分布式数据库选型/备份/恢复原理及优化实践、大数据应用实战等领域的热点话题与技术。【目前限时6折,点击这里抢票