第三口docker的感觉——docker compose

本文涉及的产品
传统型负载均衡 CLB,每月750个小时 15LCU
云原生数据库 PolarDB MySQL 版,通用型 2核4GB 50GB
云原生数据库 PolarDB PostgreSQL 版,标准版 2核4GB 50GB
简介:

我们为什么需要docker compose呢?

现在大行其道的微服务架构,是由多个service组成的,在web应用中数据库也是必不可少的,那么这些组件就成了我一个项目的标配,那么我们如果把这一组映射到docker世界里去呢?docker-compose就可以作为这一组的体现。总结起来docker compose可以给我们带来的好处是:

  1. 避免了我们手动创建多个 dockerfile,多个image,多个容器。减少了我们的工作量。
  2. 启动停止删除可以被一次处理。

什么是docker compose呢?

其实就是一个docker的批处理工具。通过yml文件定义多容器的docker应用。

通过一条命令可以通过yml定义创建启动管理同属于一个"group"的容器。

Docker-compose.yml:

  • Services
  • Networks
  • Volumes
Services:

一个Services就相当于一个container,这个container可以从docker hub获取或者是dockerfile进行构建

我们在service中可以指定network和volume。

我们之前是这样启动docker 容器的如下:

docker run --network my-network -v postgre-data:/var/lib/postgresql/data postgres:9.4

这里启动了一个postgresql的数据库,那如果在docker compose中我们应该如何做呢?

services:
    postgre-db:
        image: postgresql:9.4
        volume: 
            - "postgre-data:/var/lib/postgresql/data"
        network: 
            - my-network

我们很明显的可以看出来他们之间一个对应的关系。

service它的直接孩子指定的是容器的名称,然后他的孩子分别是image,volume,network这些。

⚠️ 这是从docker hub获取下来的image,如果是通过自己的dockerfile该如何写呢?

services:
    my-docker:
        build: ./my-docker
        networks:
            - my-network

那很多人会奇怪了,这个"postgre-data"和"my-network"是从哪里来的呢?别急,我们看一下完整的docker compose的yaml:

services:
    postgre-db:
        image: postgresql:9.4
        volume:
            - "postgre-data:/var/lib/postgresql/data"
        network:
            - my-network

volumes:
    postgre-data

networks:
    my-network:
        driver: briage

这下子水落石出了,和services同级的地方,有定义volumes和networks。折合前面举例子的docker compose三要素正好对应上了。

更详细的docker-compose yaml文件的属性,可以参考https://docs.docker.com/compose/compose-file/

Docker compse 常用命令

Docker compose启动的命令为

docker-compose up

Docker compose 查看当前compose中运行的container

docker-compose ls

Docker compose 停掉所有运行的container

docker-compose stop

Docker compose 移除所有停止的container

docker-compse rm

Docker compose 停止并且移除servies,networks,volumes

docker-compose down

⚠️这个命令不会删除本地的images。

其他更多详细的内容命令,请查看https://docs.docker.com/compose/reference/

或者使用docker-compose - -help 查看。

Docker compose的拓展

我前面有提到过docker compose就是为了微服务的理念而生的,微服务只是从业务逻辑上的一种拆分。那如果负载在高的情况下,我们怎么才能抵抗住这种压力呢?那就得使用load balance(负载均衡)了。负载均衡在docker中也是有所体现的。

我们可以使用如下命令进行扩展:

#SERVICE 指的是你在docker compose中定义的名字,NUM指定的是你想要的数量
docker-compose up --scale SERVICE=NUM

这样就可以对自己的服务进行自由的伸缩。

⚠️前提是我们需要在我们的compose中安排一个loadbalance

可以参考:https://github.com/docker/dockercloud-haproxy

英语不好的可以参考https://www.jianshu.com/p/4a2281bfb1cc

相关实践学习
使用PolarDB和ECS搭建门户网站
本场景主要介绍基于PolarDB和ECS实现搭建门户网站。
阿里云数据库产品家族及特性
阿里云智能数据库产品团队一直致力于不断健全产品体系,提升产品性能,打磨产品功能,从而帮助客户实现更加极致的弹性能力、具备更强的扩展能力、并利用云设施进一步降低企业成本。以云原生+分布式为核心技术抓手,打造以自研的在线事务型(OLTP)数据库Polar DB和在线分析型(OLAP)数据库Analytic DB为代表的新一代企业级云原生数据库产品体系, 结合NoSQL数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
目录
相关文章
|
12天前
|
缓存 监控 持续交付
|
7天前
|
负载均衡 监控 开发者
深入浅出:掌握 Docker Compose 的高级用法
【10月更文挑战第22天】本文深入探讨了 Docker Compose 的高级用法,包括环境变量、服务扩展、网络配置和数据卷管理。通过实例详细介绍了如何利用这些功能提升开发效率和应用部署的灵活性。适合希望深入了解 Docker Compose 的开发者阅读。
|
30天前
|
资源调度 关系型数据库 MySQL
docker制作compose
本文介绍了Docker Compose的基本使用,包括安装、创建`docker-compose.yml`文件定义服务,以及如何使用环境变量和卷来配置多容器应用的步骤。
27 1
docker制作compose
|
19天前
|
Ubuntu Linux 网络安全
Docker&Docker Compose安装(离线+在线)
Docker&Docker Compose安装(离线+在线)
137 1
|
26天前
|
存储 Kubernetes 持续交付
Docker Compose
【10月更文挑战第3天】
42 6
|
23天前
|
存储 Kubernetes 调度
掌握 Docker Compose
【10月更文挑战第6天】
16 1
|
1月前
|
开发者 Docker 微服务
利用Docker Compose优化微服务架构
在微服务架构中,Docker Compose提供了一种简便有效的方法来定义和运行多容器Docker应用程序,通过YAML文件配置服务、网络和卷,实现一键创建和启动。这不仅确保了开发、测试和生产环境的一致性,还简化了团队协作和维护工作,大幅提升了开发效率。本文将详细介绍Doker Compose的核心优势、基本使用方法及高级功能,帮助你更好地管理和优化微服务架构。
|
1月前
|
Docker 容器
利用Docker Compose优化开发环境的配置
在现代软件开发中,环境一致性至关重要。开发人员常需在不同机器间复制环境配置,而Docker Compose提供了一种简便有效的方法来定义和运行多容器Docker应用程序,确保开发、测试和生产环境一致,简化团队协作,提高开发效率。通过YAML文件配置服务、网络和卷,使用简单命令即可启动和停止服务。本文将介绍Docker Compose的核心优势、基本使用方法及高级功能,帮助你更好地管理和优化开发环境。
|
1月前
|
运维 数据库 开发者
docker回顾--docker compose详细解释,安装,与常用命令
docker回顾--docker compose详细解释,安装,与常用命令
103 1
|
1月前
|
存储 应用服务中间件 nginx
Docker Compose
【10月更文挑战第05天】
35 3