Docker Stack

一、Stack介绍

Docker Compose缺点是不能在分布式多机器上使用;Docker swarm缺点是不能同时编排多个服务,所以才有了Docker Stack,可以在分布式多机器上同时编排多个服务。

二、使用实例

2.1 案例准备

父工程demo包含两个子工程:
service1

@Slf4j
@RestController
public class HelloRest {
    @GetMapping("/service1/getHello")
    public String getHello(){
        log.info("service1!!!");
        return "hello from service1";
    }
}

dockerfile

FROM openjdk:8
EXPOSE 8080
ADD  target/service1-0.0.1-SNAPSHOT.jar /demo.jar
ENTRYPOINT ["java", "-jar", "demo.jar"]

service2

@Slf4j
@RestController
public class HelloRest {
    @GetMapping("/service2/getHello")
    public String getHello(){
        log.info("service2!!!");
        return "hello from service2";
    }
}

dockerfile

FROM openjdk:8
EXPOSE 8081
ADD  target/service2-0.0.1-SNAPSHOT.jar /demo.jar
ENTRYPOINT ["java", "-jar", "demo.jar"]
2.2 打包镜像

分别在service1和service2目录下执行如下命令,分别打包镜像:

docker build -t service1:V1 .
docker build -t service2:V1 .

然后执行docker images查看一下镜像是否正常创建成功:

docker images
REPOSITORY                                            TAG           IMAGE ID       CREATED          SIZE
service1                                              V1            a0ccc239fe29   22 minutes ago   544MB
service2                                              V1            2100104dd6eb   22 minutes ago   544MB
2.3 编写compose

编写compose文件内容如下,文件路径及文件名为/root/docker-compose.yml:

version: "3.9"
services:
  service1:
    image: "masonzhang/service1:V1"
    deploy:
        replicas: 2
    ports:
      - "8080:8080"

  service2:
    image: "masonzhang/service2:V1"
    deploy:
        replicas: 3
    ports:
      - "8081:8081"
2.4 swarm集群搭建

docker swarm

2.5 stack部署

使用stack进行集群部署了。

# myapps是stack的自定义名称,使用具体路径的compose配置文件进行部署
docker stack deploy myapps --compose-file=/root/docker-compose.yml
或者
docker stack deploy myapps -c /root/docker-compose.yml
Creating network myapps_default
Creating service myapps_service1
Creating service myapps_service2
2.6 stack其它操作

创建完成后,我们可以通过如下命令查看stack及服务的信息:

# 查看所有stack的信息
docker stack ls
NAME      SERVICES   ORCHESTRATOR
myapps    2          Swarm

# 查看某个stack中的所有任务信息
docker stack ps myapps
ID             NAME                IMAGE                    NODE      DESIRED STATE   CURRENT STATE
tvvujrf3qcr1   myapps_service1.1   masonzhang/service1:V1   node1     Running         Running 46 seconds ago       
igjeydmmvzzm   myapps_service1.2   masonzhang/service1:V1   manager   Running         Running 46 seconds ago       
7p5c96eplwl3   myapps_service2.1   masonzhang/service2:V1   node1     Running         Running 34 seconds ago       
7shglsajip5d   myapps_service2.2   masonzhang/service2:V1   manager   Running         Running 39 seconds ago       
upo0mr7j9tn1   myapps_service2.3   masonzhang/service2:V1   node2     Running         Preparing 41 seconds ago  

# 查看某个stack中的所有服务信息
docker stack services myapps
ID             NAME              MODE         REPLICAS   IMAGE                    PORTS
icz3kjn0skb3   myapps_service1   replicated   2/2        masonzhang/service1:V1   *:8080->8080/tcp
myuzlwnrxag4   myapps_service2   replicated   3/3        masonzhang/service2:V1   *:8081->8081/tcp

# 移除stack
docker stack rm myapps
Removing service myapps_service1
Removing service myapps_service2
Removing network myapps_default
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值