Docker 1.12.0將要釋出的新功能

roc_guo發表於2022-10-12

下週2016 DockerCon也該開始了,好像也有一場專門來講Docker新特性的,不過在這之前,我們就可以搶先一步,瀏覽一下這些新功能、新特性。尤其是前兩個,都是比較吸引人的功能。

Swarmkit整合

前幾天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結合在一起,管理叢集和服務將會更方便。

外掛管理(Plugin repository,experimental版)

PR地址: 

外掛管理功能可能算是第二大變更點了。很多軟體都支援外掛機制,大家比較熟悉的從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


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69901823/viewspace-2918025/,如需轉載,請註明出處,否則將追究法律責任。

相關文章