docker集群(2):docker stack实战
文章目录
- 帮助命令
- dockerstack与docker-compose
- docker statck 实战
- 第一节,搭建集群
- 第二节,构建两个springboot子工程
- 第三节 打包发布镜像到阿里云
- 第四节 发布项目
- 第五节、移除服务
- 问题
- 1、我的仓库设置的私有的怎么办
帮助命令
docker stack

dockerstack与docker-compose
docker-compose单机部署
Docker stack部署,集群部署
# 单机
docker-compose up -d wordpress.yaml
# 集群
docker stack deploy wordpress.yaml
注:它们都支持扩缩容,只不过docker-compose对外暴露端口时存在端口冲突,如果使用随机端口,也可以支持多实例扩缩容
docker statck 实战
第一节,搭建集群
如何搭建集群,请参考:docker集群(1):docker swarm
这里构建了一个最小集群,只有两个manager,没有workder

第二节,构建两个springboot子工程
- 子工程test1结构和代码

代码:
HelloController.java
package com.it2.controller;import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;@Slf4j
@RestController
public class HelloController {@GetMapping("/test1")public String hello(){log.info("test1!!!");return "hello test1";}
}
Dockerfile
FROM openjdk:8
EXPOSE 8080
ADD target/test1-0.0.1-SNAPSHOT.jar /app.jar
ENTRYPOINT ["java", "-jar", "app.jar"]
- 子工程test2结构和代码
package com.it2.controller;import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;@Slf4j
@RestController
public class HelloController {@GetMapping("/test2")public String hello(){log.info("test2!!!");return "hello test2";}
}
Dockerfile
FROM openjdk:8
EXPOSE 8081
ADD target/*.jar /app.jar
ENTRYPOINT ["java", "-jar", "app.jar"]
- 请确保两个子工程都能访问
第三节 打包发布镜像到阿里云
-
将两个项目打jar包

-
将jar和Dockerfile上传到服务器(由于我本地没有安装docker环境,无法制作镜像)

-
在阿里云创建两个容器仓库(这里仓库类型设置的公开)
如果清楚在阿里云创建镜像仓库,可以查看:docker基础(12):镜像发布到阿里云容器镜像仓库

-
构建镜像并push到阿里云
构建镜像
#构建项目1镜像
docker build -t test1:1.0 .
#构建项目2镜像
docker build -t test2:1.0 .
登录阿里云
docker login --username=lcz0710@163.com registry.cn-guangzhou.aliyuncs.com
标记和push test1
docker tag c03cb4155077 registry.cn-guangzhou.aliyuncs.com/lengcz_pub/test1:1.0
docker push registry.cn-guangzhou.aliyuncs.com/lengcz_pub/test1:1.0
标记和push test1
docker tag 43b5afd9a066 registry.cn-guangzhou.aliyuncs.com/lengcz_pub/test2:1.0
docker push registry.cn-guangzhou.aliyuncs.com/lengcz_pub/test2:1.0
如果成功push到阿里云,可以在后台查看

第四节 发布项目
·1. 编写docker-compose.yml文件
version: "3.9"
services:service1:image: "registry.cn-guangzhou.aliyuncs.com/lengcz_pub/test1:1.0"deploy:replicas: 2ports:- "8080:8080"service2:image: "registry.cn-guangzhou.aliyuncs.com/lengcz_pub/test2:1.0"deploy:replicas: 4ports:- "8081:8081"

2. 发布项目
#发布项目
docker stack deploy myapps --compose-file=docker-compose.yml
#查看启动服务器的情况
docker service ls
#查看启动的服务组
docker stack ls

- 访问测试

第五节、移除服务
- 移除服务
docker stack rm myapps
- 查看

问题
1、我的仓库设置的私有的怎么办

解决办法:
请先登录阿里云docker仓库(只要部署主机登录即可,其它节点不需要登录),再执行docker stack指令部署即可。

本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
