Docker-compose

本文涉及的产品
云数据库 Tair(兼容Redis),内存型 2GB
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
简介: Docker-compose

目录

简介:

官方介绍

批量容器编排

Docker-Compose up 1000个服务,也可以一键启动

Compose重要概念

安装Docker Compose

升级Docker Compose

重启的执行命令


image.gif编辑

简介:

我们之前操作Docker的过程是:DockerFile build run进行手动操作,单个容器,如果假设我们1000个微服务,并行微服务之间还存在依赖关系,这个时候,我们就可以使用Docker Compose来轻易高效的管理容器,定义运行多个容器

官方介绍

定义、运行多个容器

Yamlfile 配置环境

Compose是一个用于定义和运行多容器Docker应用程序的工具。使用Compose,可以使用Yaml文件来配置应用程序的服务。然后,使用一个命令,就可以从配置中创建并启动所有服务。要了解有关Compose的所有特性的更多消息,请参阅特性列表

Compose可以在所有环境中工作生产、阶段、开发、测试,以及CI工作流。使用Compose基本有三个步骤

    1. 使用Dockerfile定义你的应用程序的环境,这样就可以在任何地方复制
    2. 在Docker-compose中定义组成应用程序的服务。这样他们就可以在一个独立的环境中一起运行
    3. 运行Docker-compose up和Compose启动运行整个应用程序

    批量容器编排

    Compose是Docker官方开源项目,需要安装

    Dockerfile让程序在任何地方运行,Web程序。Redis、MySql、Nginx 多个容器

    Compose的Yaml文件如下

    version: '2.0'

    services:

    web:

    build: .

    ports:

    - "5000:5000"

    volumes:

    - .:/code

    - logvolume01:/var/log

    links:

    - redis

    redis:

    image: redis

    volumes:

    logvolume01: {}

    Docker-Compose up 1000个服务,也可以一键启动

    Compose重要概念

      1. 服务Service 容器,应用(Web,Redis,Mysql)
      2. 项目Project,就是一组关联的容器

      常见的Docker Compose脚本

      安装git命令: yum install -y git

      git clone docker-compose: docker-compose集成环境系列

      cd docker-compose/Linux

      举例:

      version: '3'

      services:

      mysql:

      image: registry.cn-hangzhou.aliyuncs.com/zhengqing/mysql:5.7 # 原镜像`mysql:5.7`

      container_name: mysql_3306 # 容器名为'mysql_3306'

      restart: unless-stopped # 指定容器退出后的重启策略为始终重启,但是不考虑在Docker守护进程启动时就已经停止了的容器

      volumes: # 数据卷挂载路径设置,将本机目录映射到容器目录

      - "./mysql5.7/my.cnf:/etc/mysql/my.cnf"

      - "./mysql5.7/data:/var/lib/mysql"

      # - "./mysql5.7/conf.d:/etc/mysql/conf.d"

      - "./mysql5.7/log/mysql/error.log:/var/log/mysql/error.log"

      - "./mysql5.7/docker-entrypoint-initdb.d:/docker-entrypoint-initdb.d" # 可执行初始化sql脚本的目录 -- tips:`/var/lib/mysql`目录下无数据的时候才会执行(即第一次启动的时候才会执行)

      environment: # 设置环境变量,相当于docker run命令中的-e

      TZ: Asia/Shanghai

      LANG: en_US.UTF-8

      MYSQL_ROOT_PASSWORD: root # 设置root用户密码

      MYSQL_DATABASE: demo # 初始化的数据库名称

      ports: # 映射端口

      - "3306:3306"

      安装Docker Compose

      官方文档:Overview | Docker Documentation

      下载

        1. 首先需要先安装一下Docker
        2. 运行此命令下载Docker Compose的当前稳定版本$ sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
        3. 二进制文件添加可执行权限:sudo chmod +x /usr/local/bin/docker-compose

        如果安装失败的话,可以检查一下安装路径是否正确。 sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

          1. 测试安装 docker-compose --version

          升级Docker Compose

          如果从Compose1.2或更早版本升级,请在升级Compose后移除现有容器。这是因为从1.3版本之后,Compose使用Docker标签来跟踪容器,并且需要重新创建容器以添加标签。

          如果Compose检查到创建时没有标签的容器,它会拒绝运行,这样您就不会得到两组。如果想继续使用现有容器,可以在使用Compose1.5使用以下命令迁移

          docker-compose migrate-to-labels

          或者,如果不担心保留,可以删除,compose知识创建新的

          docker container rm -f -v myapp_web_l myapp_....

          重启的执行命令

          sudo /usr/local/bin/docker-compose down

          sudo /usr/local/bin/docker-compose up -d

          相关实践学习
          基于Redis实现在线游戏积分排行榜
          本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
          云数据库 Redis 版使用教程
          云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
          相关文章
          |
          10月前
          |
          NoSQL 关系型数据库 Redis
          |
          4月前
          |
          负载均衡 应用服务中间件 API
          Docker-compose 简单介绍
          Docker-compose 简单介绍
          |
          关系型数据库 MySQL Docker
          |
          10月前
          |
          Docker 容器
          |
          11月前
          |
          运维 持续交付 开发者
          Docker 的前世今生
          Docker 的前世今生
          54 0
          |
          Docker 容器
          |
          JavaScript 应用服务中间件 API
          Docker
          Docker 是一种开源的容器化平台,可以让开发者在容器中快速构建、打包、发布和运行应用程序,从而实现应用程序的快速交付和部署。
          441 1
          |
          Kubernetes Linux 持续交付
          什么是Docker?
          什么是Docker?
          134 0
          |
          存储 运维 关系型数据库
          Docker(2)
          Docker(2)