美文网首页
docker compose容器编排

docker compose容器编排

作者: 轻轻敲醒沉睡的心灵 | 来源:发表于2023-05-22 23:35 被阅读0次
  • Compose 是 Docker 公司推出的一个工具软件,可以管理多个 Docker 容器组成一个应用。你需要定义一个 YAML 格式的配置文件docker-compose.yml,写好多个容器之间的调用关系。然后,只要一个命令,就能同时启动/关闭这些容器。
  • docker建议我们每一个容器中只运行一个服务,因为docker容器本身占用资源极少,所以最好是将每个服务单独的分割开来但是这样我们又面临了一个问题?如果我需要同时部署好多个服务,难道要每个服务单独写Dockerfile然后在构建镜像,构建容器,这样累都累死了,所以docker官方给我们提供了docker-compose多服务部署的工具。例如要实现一个Web微服务项目,除了Web服务容器本身,往往还需要再加上后端的数据库mysql服务容器,redis服务器,注册中心eureka,甚至还包括负载均衡容器等等。。。。。。
  • Compose允许用户通过一个单独的docker-compose.yml模板文件(YAML 格式)来定义一组相关联的应用容器为一个项目(project)。可以很容易地用一个配置文件定义一个多容器的应用,然后使用一条指令安装这个应用的所有依赖,完成构建。Docker-Compose 解决了容器与容器之间如何管理编排的问题。

1. Compose安装

Compose也是Docker官方提供的,所以我们也可以去官网找到对应的文档。
Compose官网:https://docs.docker.com/compose/install/
进来就可以看到提醒:

Overview
docker从2023开始已经不支持V1版本了,让升级到V2,我用的最新的2023.0.6,所以要用V2的。
v2和1版本给出了几个不同点,主要是语法:
  1. 命令v1用docker-compose,v2用docker compose来代替
  2. 词的分隔符,v1用_,v2中用-来代替
  3. --filter过滤器的语法也发生了变化

安装步骤
使用官网给出来的linux通用的就行:

# 下载,位置是确定的,必须在/usr/local/bin/docker-compose
curl -SL https://github.com/docker/compose/releases/download/v2.18.1/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose
# 授权
chmod +x /usr/local/bin/docker-compose
# 查看版本
docker compose version

2. compose-file

compose安装好以后就是使用了,需要写docker-compose.yml文件。其中有2个概念:

  • 服务(service):一个个应用容器实例,比如订单微服务、库存微服务、mysql容器、nginx容器或者redis容器
  • 工程(project):由一组关联的应用容器组成的一个完整业务单元,在 docker-compose.yml 文件中定义

compose-file官方文档:https://docs.docker.com/compose/compose-file/compose-file-v3/
注意一下:文档中给出了 Compose file 版本和Docker的对应关系,一般docker不是太老,写文件时,都是3.x的版本。我用的docker版本比较新。基本就是用和官网给的例子一样的版本:3.9。
官方文档中已经给出了例子了,还比较全,可以拿来做参考:

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:

3. Docker compose常见命令

  • sudo docker compose --help 查看帮助
  • sudo docker compose -f xxx.yml up docker compose按指定文件启动服务,若文件名为docker-compose.yml,可以直接:sudo docker compose up
  • sudo docker compose -f xxx.yml config 检查yml配置文件
  • sudo docker compose -f xxx.yml config -q 检查yml配置文件,有问题才有输出
  • sudo docker compose -f xxx.yml up -d docker compose后台启动服务
  • sudo docker compose -f xxx.yml down 停止并删除容器、网络、卷、镜像
  • sudo docker compose -f xxx.yml ps 展示当前文件编排过并运行的所有容器
  • sudo docker compose -f xxx.yml top 展示当前文件编排过的容器进程
  • sudo docker compose -f xxx.yml logs 容器ID/名字 查看容器输出日志
  • sudo docker compose -f xxx.yml exec 容器ID/名字 /bin/bash 进入容器实例内部
  • sudo docker compose -f xxx.yml start 启动服务
  • sudo docker compose -f xxx.yml stop 停止服务
  • sudo docker compose -f xxx.yml restart 重启服务

4. Docker compose编排例子

参考使用compose file安装mysql8主从复制的例子。

Docker实用-安装Mysql8

相关文章

网友评论

      本文标题:docker compose容器编排

      本文链接:https://www.haomeiwen.com/subject/bmzwsdtx.html