简介

Docker compose 是doceker提供的一个命令行工具,用于定义和运行多个容器组成的应用,我们可以通过yaml文件声明式的定义应用程序的各个服务,并由单个命令完成应用的创建和启动。

相似工具的区别

swarm

swarm 是Docker公司自行研发的一款用来管理多主机上的Docker容器的工具,可以负责启动容器,监控容器状态,也提供服务之间的负载均衡。
特点: 更快速的运行速度 快速简单的配置 容器间低耦合 版本控制与组件重用
缺点: 跨平台支持效果差 不提供存储选项 监控信息不足

kubernetes

kubernetes Google 开元容器编排引擎,支持自动化部署,大规模可伸缩,应用容器化管理,能做到零停机的情况下进行更新。
优点:运行速度快 遵循不可变基础架构的原则(利于回滚) 提供声明式配置 大规模部署和更新软件 处理应用程序的可用性 提供存储卷管理
缺点: 进程初始化时间较长 迁移到无状态需要很多工作

docker-compose

基于Docker的单主机容器编排工具。

使用docker-compose

示例

此示例按照顶级键的字母顺序排列。


version: "3.9"
services:

  redis:
    image: redis:alpine
    ports:
      - "6379"
    networks:
      - frontend
    deploy:
      replicas: 2
      update_config:
        parallelism: 2
        delay: 10s
      restart_policy:
        condition: on-failure

  db:
    image: postgres:9.4
    volumes:
      - db-data:/var/lib/postgresql/data
    networks:
      - backend
    deploy:
      placement:
        max_replicas_per_node: 1
        constraints:
          - "node.role==manager"

  vote:
    image: dockersamples/examplevotingapp_vote:before
    ports:
      - "5000:80"
    networks:
      - frontend
    depends_on:
      - redis
    deploy:
      replicas: 2
      update_config:
        parallelism: 2
      restart_policy:
        condition: on-failure

  result:
    image: dockersamples/examplevotingapp_result:before
    ports:
      - "5001:80"
    networks:
      - backend
    depends_on:
      - db
    deploy:
      replicas: 1
      update_config:
        parallelism: 2
        delay: 10s
      restart_policy:
        condition: on-failure

  worker:
    image: dockersamples/examplevotingapp_worker
    networks:
      - frontend
      - backend
    deploy:
      mode: replicated
      replicas: 1
      labels: [APP=VOTING]
      restart_policy:
        condition: on-failure
        delay: 10s
        max_attempts: 3
        window: 120s
      placement:
        constraints:
          - "node.role==manager"

  visualizer:
    image: dockersamples/visualizer:stable
    ports:
      - "8080:8080"
    stop_grace_period: 1m30s
    volumes:
      - "/var/run/docker.sock:/var/run/docker.sock"
    deploy:
      placement:
        constraints:
          - "node.role==manager"

networks:
  frontend:
  backend:

volumes:
  db-data:
最后修改:2021 年 12 月 14 日
如果觉得我的文章对你有用,请随意赞赏