service实战

部署nginx

镜像下载 docker pull nginx:1.18.0-alpine
在manager节点中创建overlay网络: docker network create -d overlay nginx-net
创建5个nginx:alpines容器的集群: docker service create —name nginx —network nginx-net -p 80:80 —replicas 5 nginx:1.18.0-alpine
在manager节点使用docker service ls 命令查看服务情况,worker节点无法查看: docker service ls
在manager或者worker节点都可以执行docker ps命令查看本虚拟机容器情况: docker ps
manager节点只用于管理集群,不希望部署服务。 docker node update —availability drain master-01
使用docker service scale nginx=2命令将服务缩减为2个容器:

docker service scale nginx=2

节点管理

docker node update —help

  • active 激活
  • pause 终止
  • drain 去离

    升级nginx版本

    进入其中一个容器查看nginx的版本信息:

注意事项:因nginx是alpine的linux版本。不能使用/bin/bash指令。

docker exec -it 503fe639bb89 sh

nginx -v

1.更新镜像:

docker service update —image nginx:1.19.3-alpine nginx

2.添加或者更新一个对外端口:

docker service update —publish-add 8090:80 nginx

删除服务

docker service rm nginx

docker network rm nginx-net

stack实战

image.png

部署Nginx

  1. version: "3"
  2. service:
  3. nginx-web:
  4. image: nginx:1.19.3-alpin
  5. container_name:nginx
  6. networks:
  7. - nginx-net
  8. restart:always
  9. ports:
  10. - 80:80
  11. deploy:
  12. replilcas: 5
  13. networks:
  14. nginx-net:
  15. driver: overlay

运行nginx

在manager节点中创建docker-compose.yml文件。执行如下命令:

docker stack deploy nginx-stack —compose-file=docker-compose.yml 或者是

docker stack deploy nginx-stack -c docker-compose.yml

查看stack服务运行情况。执行如下命令:

docker stack services nginx-stack

查看5个容器运行在哪个节点中。执行如下命令:

docker service ls 查看到NAME中的服务名为:nginx-stack_nginx-web

docker service ps nginx-stack_nginx-web

进行测试:

curl 192.168.0.105

curl 192.168.0.106

curl 192.168.0.107
删除stack服务。执行如下命令:

docker stack rm nginx-stack

总结

  • networks中也可以不指定driver:overlay,因为docker swarm默认网络类型是overlay。
  • 整个networks都可以不用配置。stack部署时会默认创建网络。如果我们定义网络。在docker stack deploy时会先默认创建一个网络,在创建一个我们定义的网络。
  • 一定要把镜像先拉取到本地再执行

    Docker Stack和Docker Compose区别

    Docker stack会忽略了“构建”指令,无法使用stack命令构建新镜像,它是需要镜像是预先已经构建好的。 所以docker-compose更适合于开发场景;
    Docker Compose是一个Python项目,在内部,它使用Docker API规范来操作容器。所以需要安装Docker -compose,以便与Docker一起在您的计算机上使用;
    Docker Stack功能包含在Docker引擎中。你不需要安装额外的包来使用它,docker stacks 只是swarm mode的一部分。
    Docker stack不支持基于第2版写的docker-compose.yml ,也就是version版本至少为3。然而Docker Compose对版本为2和3的 文件仍然可以处理;
    docker stack把docker compose的所有工作都做完了,因此docker stack将占主导地位。同时,对于大多数用户来说,切换到使用docker stack既不困难,也不需要太多的开销。如果您是Docker新手,或正在选择用于新项目的技术,请使用docker stack。