创建一个nginx服务

$ docker service create --replicas 3 --name nginx -p 80:80 nginx
kwsc18x629dg7bykpf865p317
overall progress: 3 out of 3 tasks
1/3: running   [==================================================>]
2/3: running   [==================================================>]
3/3: running   [==================================================>]
verify: Service converged
  • --replicas创建的副本数量

查看运行的服务

$ docker service ls
ID                  NAME                MODE                REPLICAS            IMAGE               PORTS
kwsc18x629dg        nginx               replicated          3/3                 nginx:latest        *:80->80/tcp

因为使用了-p暴露端口,swarm为了后续扩展和便于维护在群集所有主机上都开放了80端口。现在可以通过群集内任何一台去访问nginx服务

查看服务信息

$ docker service inspect --pretty nginx

ID:        kwsc18x629dg7bykpf865p317
Name:        nginx
Service Mode:    Replicated
 Replicas:    3
Placement:
UpdateConfig:
 Parallelism:    1
 On failure:    pause
 Monitoring Period: 5s
 Max failure ratio: 0
 Update order:      stop-first
RollbackConfig:
 Parallelism:    1
 On failure:    pause
 Monitoring Period: 5s
 Max failure ratio: 0
 Rollback order:    stop-first
ContainerSpec:
 Image:        nginx:latest@sha256:d0468eaec1ef818af05f85ac00e484fd5a2ae75dd567dc9f7ccf5f68a60351fb
Resources:
Endpoint Mode:    vip
Ports:
 PublishedPort = 80
  Protocol = tcp
  TargetPort = 80
  PublishMode = ingress
  • --pretty以便于查阅的格式显示,默认为json格式

扩/缩容服务

$ docker service scale nginx=5

滚动更新

# 创建一个redis服务
docker service create \
  --replicas 3 \
  --name redis \
  --update-delay 10s \
  redis:3.0.6

# 更新redis服务
docker service update --image redis:3.0.7 redis
  • --update-delay 10s滚动更新节点间隔时间10s

更新执行过程:

  • 停止第一项任务。
  • 为已停止的任务计划更新。
  • 启动更新任务的容器。
  • 如果任务更新返回RUNNING,请等待指定的延迟时间,然后开始下一个任务。
  • 如果在更新过程中的任何时间任务返回FAILED,请暂停更新。

results matching ""

    No results matching ""