共计 2966 个字符,预计需要花费 8 分钟才能阅读完成。
导读 | 按计划,6/14 是 1.12.0 版本的 feature 冻结 的日子,再有两个星期 Docker 1.12.0 也该发布了。这里列出来的新功能,都是已经合并到主分支的功能,不出意外,下一个版本的 Docker 应该是能体验到了。 |
下周 2016 DockerCon 也该开始了,好像也有一场专门来讲 Docker 新特性的,不过在这之前,我们就可以抢先一步,浏览一下这些新功能、新特性。尤其是前两个,都是比较吸引人的功能。
前几天 Docker 刚刚发布了 Swarmkit,也就是 Swarm V2, 同时,在这个版本的 Docker 中,Swarm/Swarmkit 相关命令也被整合到了 Docker 子命令中。这可能算得上是 1.12.0 版本中最大的变更点了。
这个 PR(Add dependency to docker/swarmkit)有 600 个文件变动。除了传统的 image 和 container 对象,这个 PR 增加了 task 和 service 等资源类型, 相关几个子 PR 包括 23362、23363、23364。
使用新的 Docker 命令,可以这样直接创建 Swarm 集群:
$ docker swarm init --listen-addr 192.168.99.100:2377 | |
Swarm initialized: current node (09fm6su6c24qn) is now a manager. |
查看节点:
$ docker node ls | |
ID NAME MEMBERSHIP STATUS AVAILABILITY MANAGER STATUS LEADER | |
09fm6su6c24q * manager1 Accepted Ready Active Reachable Yes |
然后这样来部署一个新的 service:
$ docker service create --scale 1 --name helloworld alpine ping docker.com | |
2zs4helqu64f3k3iuwywbk49w | |
$ docker service ls | |
ID NAME SCALE IMAGE COMMAND | |
2zs4helqu64f helloworld 1 alpine ping docker.com |
需要 scale 了?没关系,也可以在 Docker 中直接完成:
$ docker service update --scale 5 helloworld | |
helloworld | |
$ docker service tasks helloworld | |
ID NAME SERVICE IMAGE DESIRED STATE LAST STATE NODE | |
1n6wif51j0w840udalgw6hphg helloworld.1 helloworld alpine RUNNING RUNNING 2 minutes manager1 | |
dfhsosk00wxfb7j0cazp3fmhy helloworld.2 helloworld alpine RUNNING RUNNING 15 seconds worker2 | |
6cbedbeywo076zn54fnwc667a helloworld.3 helloworld alpine RUNNING RUNNING 15 seconds worker1 | |
7w80cafrry7asls96lm2tmwkz helloworld.4 helloworld alpine RUNNING RUNNING 10 seconds worker1 | |
bn67kh76crn6du22ve2enqg5j helloworld.5 helloworld alpine RUNNING RUNNING 10 seconds manager1 |
在一台机器上使用 docker ps :
$ docker ps | |
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES | |
910669d5e188 alpine:latest "ping docker.com" 10 seconds ago Up 10 seconds helloworld.5.bn67kh76crn6du22ve2enqg5j | |
a0b6c02868ca alpine:latest "ping docker.com" 2 minutes ago Up 2 minutes helloworld.1.1n6wif51j0w840udalgw6hphg |
我们也可以这样使用 dcoekr service 子命令。
$ docker service create --scale 3 --name redis --update-delay 10s --update-parallelism 1 redis:3.0.6 | |
69uh57k8o03jtqj9uvmteodbb | |
$ docker service tasks redis | |
ID NAME SERVICE IMAGE LAST STATE DESIRED STATE NODE | |
3wfqsgxecktpwoyj2zjcrcn4r redis.1 redis redis:3.0.6 RUNNING 13 minutes RUNNING worker2 | |
8lcm041z3v80w0gdkczbot0gg redis.2 redis redis:3.0.6 RUNNING 13 minutes RUNNING worker1 | |
d48skceeph9lkz4nbttig1z4a redis.3 redis redis:3.0.6 RUNNING 12 minutes RUNNING manager1 |
总之,新的 Docker 和 Swarm 结合在一起,管理集群和服务将会更方便。
PR 地址:https://github.com/docker/docker/pull/23446
插件管理功能可能算是第二大变更点了。很多软件都支持插件机制,大家比较熟悉的从 Wordpress 到 ElasticSearch 等,都支持在软件内部通过 plugin 功能安装、管理插件。
Docker 最近也增加了一些网络和卷管理的插件功能,这次还在体验版中增加了插件(基于容器)管理功能,可以通过 docker plugin 命令来管理插件。除了提供了一个统一的插件管理入口,还可以对插件的生命周期进行更好的管理,Docker 君,我的插件写的比较不专业,请罩着我点。
这是一个大概的使用示意,通过 docker plugin install 可以安装插件,docker plugin ls 可以列出当前安装的插件:
$ docker plugin install aragunathan/no-remove | |
Plugin "aragunathan/no-remove:latest" requested the following privileges: | |
- Networking: host | |
- Mounting host path: /data | |
Do you grant the above permissions? [y/N] y |
查看插件列表:
$ docker plugin ls | |
NAME VERSION ACTIVE | |
aragunathan/no-remove latest true |
目前 docker plugin 支持如下子命令:
plugin ls | |
plugin enable | |
plugin inspect | |
plugin install | |
plugin rm |
