docker-compose 服务编排

docker-compose 服务编排

  • 概念
  • yaml
    • 内容
    • 内容解释
  • 常用命令
  • 服务编排的优点
  • 参考

概念

Docker Compose是一个命令行工具,用于定义和运行多容器Docker应用程序。它使用YAML文件来配置应用程序需要的所有服务,并使用一个命令来从YAML文件配置中创建并启动所有服务。Docker Compose是一种容器编排工具,可以简化部署多个容器的操作

yaml

内容

version: "3"

services:

  microService:

    image: zyl_docker:1.0

    container_name: demo2

    ports:

      - "6001:6001"

    volumes:

      - /app/microService:/data

    networks: 

      - zyl_network

    depends_on: 

      - redis

      - mysql

  redis:

    image: redis:7.0.9

    ports:

      - "6379:6379"

    volumes:

      - /app/redis/redis.conf:/etc/redis/redis.conf

      - /app/redis/data:/data

    networks: 

      - zyl_network

    command: redis-server /etc/redis/redis.conf

  mysql:

    image: mysql:5.7

    environment:

      MYSQL_ROOT_PASSWORD: '123456'

      MYSQL_ALLOW_EMPTY_PASSWORD: 'no'

      MYSQL_DATABASE: 'demo1'

      MYSQL_USER: 'zyl'

      MYSQL_PASSWORD: '123456'

    ports:

       - "3306:3306"

    volumes:

       - /app/mysql/db:/var/lib/mysql

       - /app/mysql/conf/my.cnf:/etc/my.cnf

       - /app/mysql/init:/docker-entrypoint-initdb.d

    networks:

      - zyl_network

    command: --default-authentication-plugin=mysql_native_password #解决外部无法访问

networks: 

   zyl_network: 

内容解释

这个配置文件。定义了三个服务:microService、redis和mysql,并在zyl_network网络上进行通信。

  1. microService服务使用自定义的zyl_docker:1.0镜像,容器名称为demo2,将主机的6001端口映射到容器的6001端口。将/app/demo2目录挂载到容器的/data目录。
  2. redis服务使用redis:7.0.9镜像,将主机的6379端口映射到容器的6379端口。 还将/app/redis/redis.conf挂载到容器的/etc/redis/redis.conf,并将/app/redis/data挂载到容器的/data目录。通过redis-server /etc/redis/redis.conf命令启动。
  3. mysql服务使用mysql:5.7镜像,并设置了一些环境变量来配置MySQL实例。 将主机的3306端口映射到容器的3306端口。 将/app/mysql/db挂载到容器的/var/lib/mysql,并将/app/mysql/conf/my.cnf挂载到容器的/etc/my.cnf。 还有/app/mysql/init目录挂载到容器的/docker-entrypoint-initdb.d目录,以便在初始化数据库时运行脚本。
  4. 使用–default-authentication-plugin=mysql_native_password命令解决外部无法访问的问题。
  5. 最后,该配置文件定义了一个名为zyl_network的网络,用于连接这三个服务。

常用命令

docker-compose -h       # 查看帮助

docker-compose up      # 启动所有docker-compose服务

docker-compose up -d     # 启动所有docker-compose服务并后台运行

docker-compose down     # 停止并删除容器、网络、卷、镜像。

docker-compose exec  yml里面的服务id     # 进入容器实例内部  docker-compose exec docker-compose.yml文件中写的服务id /bin/bash

docker-compose ps        # 展示当前docker-compose编排过的运行的所有容器

docker-compose top        # 展示当前docker-compose编排过的容器进程

docker-compose logs  yml里面的服务id     # 查看容器输出日志

dokcer-compose config     # 检查配置

dokcer-compose config -q  # 检查配置,有问题才有输出

docker-compose restart   # 重启服务

docker-compose start     # 启动服务

docker-compose stop      # 停止服务

服务编排的优点

  • 简化部署:Docker Compose允许您使用简单的YAML文件定义应用程序的组成部分,并将它们统一地部署为容器。不再需要手动操作每个容器,大大简化了部署过程。

  • 管理复杂网络:微服务通常由多个容器组成,它们需要相互通信。Docker Compose可以自动创建和管理容器之间的网络,使得服务之间的通信变得更加便捷。

  • 扩展性:Docker Compose允许您根据需要轻松地扩展微服务。通过添加新的服务实例或增加容器数量,可以快速响应应用程序的需求变化。

  • 避免依赖冲突:不同的微服务可能依赖于不同版本的软件或库。Docker Compose可以确保每个服务都在自己的容器中运行,避免了依赖冲突的问题。

  • 简化本地开发环境:使用Docker Compose可以轻松创建本地开发环境,不再需要为每个服务手动安装和配置依赖项。

参考

  • Docker Compose(容器编排) 管理多容器应用—实战案例演示
  • docker Dockerfile java8构建微服镜像并运行
  • docker命令【史上最全】

你可能感兴趣的:(Linux系列,docker,容器,运维)