开工啦开工啦!告别热闹的春节,新的一年又开始了,数人云带着干货,与大家共勉^_^
Docker 刚刚发布了 1.13 最新版,新添了很多特性让高可用服务的部署更加简单,同时也引入了一些命令和工作流程来改善 Docker 用户的开发体验。小伙伴可以在 GitHub 上看到完整的版本发布信息,本文为大家将更新的重点梳理出来,做一个总结。
Docker1.13 包含一些在 Swarm Mode 下运行服务的改进更新。现在可以给滚动更新的镜像打上摘要标识(比 tag 更特别),在镜像拉取时服务有了更好的记录,减少了记录中的噪声和日志垃圾。对于docker service logs
实验性的支持也加进来,集群中运行服务的日志观察有了一个更简单的方式。
更新以后,在 Swarm 集群上调度的任务,出错后更容易发现,错误信息也更加明确。调度算法会更平均地分配同类型的任务。
假设有两个容器运行服务 A ,三个容器运行服务 B 。最坏的情况是在一个两节点的集群,所有运行 A 的容器被调度在一个节点,所有运行 B 的容器在另一个。如果一个节点挂了,其中所有的服务都会不可用。通过调整调度器可以避免此种类型工作负载分配的发生。
如果大家像笔者一样,那么docker ps -a | grep 'Exited' | awk '{print $1}' | xargs docker rm
(或者更极端的docker rm -f $(docker ps -aq)
)以及docker rmi -f $(docker images -q)
都是些每天要用上几次的命令,来保证工作空间的整洁。
Docker1.13 引入了prune
命令,帮助确保系统健康,通过轻松删除无用资源减少 Docker 痕迹。运行docker system prune
将会一键删除所有停止的容器,无用的镜像和网络 volume 。
如果你更喜欢rm
命令,那也没关系,它们依旧工作,但是prune
更简单。
Docker 在过去几年成长了许多,每次发布更新都为 CLI 添加了很多新鲜有趣的内容。然而, CLI 快速发展导致很多 Docker 的新用户很难理解它。在 Docker 1.13 , CLI 作出调整,聚焦于顶层资源的所有命令。最大的改变在于docker container
作为容器的一个管理命令。旧的语法仍然可用,但是 Docker 鼓励用户开始使用新管理命令与 CLI 交互。
缓存中毒是一个真正的威胁,从 1.10 版本开始,从远程镜像仓库使用镜像拉取时, Docker 的新特性可以保护镜像免于缓存毒害。在 1.10 之前,在主机创建新镜像时,并不采用从远程登录拉取镜像层。它同样适用于从一个可信源拉取镜像。
在 Docker 1.13 ,可以使用新的运行时标记--cache-from
来指定你希望重建的镜像,使用的是从远程镜像仓库拉下来的镜像缓存。由你来决定镜像缓存是否可靠,从而远离缓存中毒。
此外, docker build 有了两个新标记,--compress
和 --squash
。当 Compress 被发送到 daemon ,它会通过压缩 build context 提升镜像构建速度。--squash
仍然处于实验阶段,它会把镜像压到一层,在一定程度上简化构建过程,但是如果你严重依赖缓存,可能会导致比较难以实现。
Docker 1.13 包含一些全新的东西——一个升级和扩充的 Docker Compose 语法版本。我们把它称为 V3 ,这套语法有点与众不同,因为它是用来将 Docker 服务部署到一个 Swarm 集群。它与 V2 有很多相同之处,但是应该被看做另一个 DSL 。
使用一个 V3 文件,可以通过docker stack deploy --compose-file=docker-compose.yml
轻松部署到 Swarm 集群。 V3 语法可以帮助统一 Docker Compose 文件,在开发和生产环境轻松切换。如果你对 V3 的细节感兴趣,可以在 GitHub repo docker/compose
看其结构。
作者: Laura Frank 文章来源: https://blog.codeship.com/whats-new-docker-1-13/