docker swarm basic usage

swarm, google翻译成 一群 , 呵...

其实想表达的应该是一群服务, 看官方的介绍, 用来启动一个Web, redis, mysql等, 意思是一个应用系统所有的服务都可以用它来启动, 而且配置好之后就一键启动了, 还提供负载功能, 自动重启等功能? Anyway, 简单使用如下:

初始化swarm:

docker swarm init

这里会显示一个后续加入这个swarm用到的命令:

docker swarm join --token SWMTKN-1-3pkha8y48eicaqezrh8hvwax8owhhu66bakrq4ej4uobbuzbub-0howm1xfe2r8s90jr50zv5t6d 192.168.1.6:2377

要保存下来, 万一忘记了, 用以下命令找回来:

docker swarm join-token worker:查看加入woker的命令。
docker swarm join-token manager:查看加入manager的命令
docker swarm join-token --rotate worker:重置woker的Token。
docker swarm join-token -q worker:仅打印Token。

其次要有一个 docker-compose.yml 文件

version: '3'
services:
  oshop:
    image: "oshop:latest"
    ports:
      - "62301:62301"
    environment:
      - ASPNETCORE_ENVIRONMENT=Production
      - 'ASPNETCORE_URLS=http://*:62301'
      # 上面这一行, 我想说的是我并没有在项目里指定 ASPNETCORE_URLS 环境变量, 仅仅在这里指定, 也是可以生效的
      # 而且, 如果不在这里指定端口号, 就没有别的方式指定端口了, 默认运行在80端口, 当然, 我并没有在Main方法里使用 UseUrls 方法指定端口
      # 如果想在linux上直接运行的话, dotnet run xxx --urls="http://*:xxxx"就可以指定端口了, 当然需要在Main方法调用CreateDefaultBuilder时传了命令行参数Args进去, 
    # 其实默认生成的Main就有传的, 不修改就好了 # 这里指定的是.net core web服务在docker里对外提供服务的端口 volumes:
- "/root/app/svnresource/oshop/logs:/app/logs" deploy: replicas: 3 update_config: parallelism: 2 elasticsearch: image: "docker.elastic.co/elasticsearch/elasticsearch:7.2.0" ports: - "9200:9200" - "9300:9300" environment: discovery.type: "single-node"
  • docker stack deploy --compose-file docker-compose.yml my-stack  
  • docker stack services my-stack //列出指定stack的所有service
  • docker stack ls //列出所有stack
  • docker stack rm xxx // 移除指定 stack
  • docker service ls // 列出所有service
  • docker service ps xxx // 列出指定service的所有container

以上命令初看较多, 难以强记, 不过核心就是 docker stack 和 docker service , 不记得的话 --help即可查看详细命令介绍

原文地址:https://www.cnblogs.com/lihan829/p/11204326.html