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子工程

  1. 子工程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"]
  1. 子工程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"]
  1. 请确保两个子工程都能访问

第三节 打包发布镜像到阿里云

  1. 将两个项目打jar包
    在这里插入图片描述

  2. 将jar和Dockerfile上传到服务器(由于我本地没有安装docker环境,无法制作镜像)
    在这里插入图片描述

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

  4. 构建镜像并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

在这里插入图片描述

  1. 访问测试
    在这里插入图片描述

第五节、移除服务

  1. 移除服务
docker stack rm myapps
  1. 查看
    在这里插入图片描述

问题

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

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


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

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部