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即可查看详细命令介绍