Docker 1.13新功能

Docker 1.13在去年年底发布,是一个重要的版本。以下是Top 10新增功能:

  1. 正式支持服务栈: docker stack
  2. 正式支持插件: docker plugin
  3. 添加在Swarm集群环境下对密码、密钥管理的secret管理服务docker secret
  4. 增加docker system命令
  5. 可以直接使用docker-compose.yml进行服务部署
  6. 添加docker service滚动升级出现故障后回滚的功能
  7. 增加强制再发布选项docker service update --force
  8. 允许docker service create映射宿主端口,而不是边界负载均衡网络端口
  9. 允许docker run炼乳制定的swarm mode的overlay网络
  10. 解决中国GFW墙掉docker-engine apt/yum源的问题

Docker 1.13安装

官方的安装文档在内容也做了更新。

  • 安装yum-utils

    1yum install -y yum-utils
    
  • 安装docker 1.13的repository

    1yum-config-manager \
    2--add-repo \
    3https://docs.docker.com/v1.13/engine/installation/linux/repo_files/centos/docker.repo
    
  • 更新yum package index

    1yum makecache fast
    
  • 查看版本

    1yum list docker-engine.x86_64  --showduplicates |sort -r
    2docker-engine.x86_64               1.13.0-1.el7.centos               docker-main
    3docker-engine.x86_64               1.12.6-1.el7.centos               docker-main
    
  • 安装指定版本的docker engine

    1yum -y install docker-engine-<VERSION_STRING>
    2
    3yum -y install docker-engine-1.13.0
    4
    5systemctl start docker
    6systemctl enable docker
    
  • 验证安装

    1docker run hello-world
    

Docker 1.13之走马观花

下面快速过一遍docker 1.13的新功能。

Builder

  • 从已有镜像获取构建缓存

    docker 1.13位docker build增加了新的参数--cache-from,可以利用指定镜像中的历史来判断某一层是否需要重新构建。下面的命令在构建镜像myimage:v1.1时,如果myimage:v1.1中存在没有修改的层,就会使用myimage:v1.0中的该层做缓存。

    1docker pull myimage:v1.0
    2docker build --cache-from myimage:v1.0 -t myimage:v1.1 .
    
  • squash镜像

    这目前还作为docker 1.13的实验功能,为docker build增加一个--squash的参数,当指定此参数时,Dockerfile中的所有操作将会被压缩为一层,但同时会保留docker history。

    不推荐使用这个参数,在编写Dockerfile时建议还是遵循保持镜像小巧的最佳实践,例如将多个RUN命令用\合并为一个,同时确保合适的清理工作。

  • docker build增加--network指定网络

    docker build的--network参数用于指定构建时的网络,例如下面命令构建的镜像将使用宿主的网络命名空间。

    1docker build --network=host
    

Remote API(v1.25) & Client

  • docker stats增加--format参数

    使用下面的docker stats命令可以打印容器的名字

    1{% raw %}
    2 docker stats --format 'table {{.Name}}\t{{.CPUPerc}}\t{{.MemUsage}}\t{{.MemPerc}}\t{{.NetIO}}\t{{.BlockIO}}\t{{.PIDs}}'
    3{% endraw %}
    

Runtime

  • 增加docker system命令

    • docker system df 显示磁盘使用情况
    • docker image prune 删除无用的镜像
    • docker container prune 删除无用的容器
    • docker volume prune 删除无用的卷
    • docker network prune 删除无用的网络
    • docker system prune 删除无用的镜像、容器、卷、网络

DEPRECATION

  • 标记docker daemon为废弃,改由单独的dockerd替代
  • 废弃 Dockerfile 中的 MAINTAINER 指令,可以用 LABEL maintainer=<…> 代替

参考