自己学Docker:10.Docker.v1.12升级到v1.13.0 正式版
Docker v1.13.0 正式版发布了。重要信息:在 Docker 1.13 中,与在 Docker 1.12 中引入的实验版本相比,管理插件 api 发生了变化.在升级到Docker 1.13 之前,必须卸载使用 Docker 1.12 安装的插件。可通过 docker plugin rm 命令卸载插件.如果已经升级到 Docker 1.13 而不卸载先前安装的插件,则当 Do
Docker v1.13.0 正式版发布了。
重要信息:在 Docker 1.13 中,与在 Docker 1.12 中引入的实验版本相比,管理插件 api 发生了变化.在升级到
Docker 1.13 之前,必须卸载使用 Docker 1.12 安装的插件。可通过 docker plugin rm 命令卸载插件.
如果已经升级到 Docker 1.13 而不卸载先前安装的插件,则当 Docker 守护程序启动时,可能会看到此消息.
Error starting daemon: json: cannot unmarshal string into Go value of type types.PluginEnv
要手动删除所有插件并解决此问题,请执行以下步骤:
- 从 /var/lib/docker/plugins/ 中删除 plugins.json
- 重新启动 Docker,验证 Docker 守护程序启动时是否有错误
- 重新安装插件
Docker 1.13 有一千四百多个 issue/pull request,五千多个 commits,是 Docker 历史上最高的发布版本,这并不是一个简单的小版本变化,里面有大量的更新.具体的内容可以查看更新说明.
Top 10 新增功能 | New Features
- 正式支持服务栈: docker stack
- 正式支持插件:docker plugin
- 添加在 Swarm 集群环境下对密码、密钥管理的 secret 管理服务:docker secret
- 增加 docker system 命令
- 可以直接使用 docker-compose.yml 进行服务部署
- 添加 docker service 滚动升级出故障后回滚的功能
- 增加强制再发布选项 docker service update –force
- 允许 docker service create 映射宿主端口,而不是边界负载均衡网络端口
- 允许 docker run 连入指定的 swarm mode 的 overlay 网络
- 解决中国 GFW 墙掉 docker-engine apt/yum源的问题
升级到v1.13.0
卸载旧版本
首先需要卸载到已有的版本.
sudo apt-get purge docker.io
卸载过程中会提示/etc/docker目录非空,这个目录下有一些我之前使用docker相关的文件,可以选择手动删除.
sudo rm -rf /etc/docker/
执行完成后使用如下命令卸载相关依赖.
sudo apt-get autoremove
更新 apt 源
Docker 默认 APT 仓库中的版本较低,因此要设置 APT 使用 Docker 的官方源,更新包信息,确保 APT 能使用 https 的方式,并安装 CA 证书.
$ sudo apt-get update
$ sudo apt-get install apt-transport-https ca-certificates
添加 GPG 密钥:
sudo apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D
添加源:
在文件 /etc/apt/sources.list.d/docker.list 中添加相应的源。
对应的源有:
- Ubuntu Precise 12.04 (LTS): deb https://apt.dockerproject.org/repo ubuntu-precise main
- Ubuntu Trusty 14.04 (LTS): deb https://apt.dockerproject.org/repo ubuntu-trusty main
- Ubuntu Wily 15.10: deb https://apt.dockerproject.org/repo ubuntu-wily main
- Ubuntu Xenial 16.04 (LTS): deb https://apt.dockerproject.org/repo ubuntu-xenial main
例如,对于 我的系统16.04 而言:
$ echo "deb https://apt.dockerproject.org/repo ubuntu-xenial main" | sudo tee /etc/apt/sources.list.d/docker.list
$ sudo apt-get update
对于 Ubuntu 14.04, 15.10, 16.04,推荐安装 linux-image-extra-* 内核包。这些包能允许我们使用 aufs 存储驱动。
$ sudo apt-get update && sudo apt-get install linux-image-extra-$(uname -r) linux-image-extra-virtual
确保 APT 现在是从设置的仓库中下载 Docker 的.
$ apt-cache policy docker-engine
安装
上面的处理好了后,安装时需要注意的是,docker的名称发生了变化.v1.12的版本叫docker.io,新版本改为docker-engine.
sudo apt-get install docker-engine
执行完成后,查看版本号就会发现已经是最新版v.1.13.0了
sudo docker --version
验证安装,
sudo docker run hello-world
该命令会下载一个测试映像然后开启一个容器运行。当容器运行后,会输出一段消息然后退出.
查看 docker 守护进程的状态:
sudo systemctl status docker
至此,docker升级就完成了.
新增功能解读
Docker 镜像构建
- 从已有镜像取得缓存
- 压扁 (squash) 镜像(实验阶段)
- 构建镜像时支持用 –network 指定网络
- 开始允许 docker build 中定义 Dockerfile 未使用的参数(ARG)
安装
- 解决 GFW 影响 Docker 安装问题
- 增加更多的系统支持
网络
- 允许 docker run 连入指定的 swarm mode 的网络
- 允许 docker service create 映射宿主端口,而不是边界负载均衡网络端口
- iptables 的转发规则将默认拒绝
- 在 docker network inspect 里显示连入的节点
- 允许 service VIP 可以被 ping
插件
- 插件功能正式启用
命令行
- checkpoint 功能(试验功能)
- docker stats 终于可以显示容器名了
- 给 docker ps 增加 is-task 过滤器
- docker inspect 将可以查看任何 docker 对象
运行时
- 不在分别构建试验可执行文件,直接使用 –experimental 参数
- 在 overlay2 存储驱动使用于 xfs 时可以添加磁盘配额
- 增加 docker system 命令
- 提升 overlay2 的优先级
- docker exec -t 自动添加 TERM 环境变量
- Windows 内置的运行 Windows 程序的 Docker on Windows 的改进
Swarm Mode
- 正式支持 docker stack
- 添加 secret 管理
- 添加负载均衡和DNS记录对新增的健康检查的支持
- 添加滚动升级回滚的功能
- 补充了一些 docker service create 所缺失的参数
- 添加命令 docker service logs 以查看服务日志(试验功能)
- 增加强制再发布选项 docker service update –force
具体修改可以参见Docker 1.13 新增功能
更多推荐
所有评论(0)