第三口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数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
目录
相关文章
|
3月前
|
Kubernetes 监控 Docker
Docker Compose与Kubernetes的比较
【6月更文挑战第11天】本文探讨了Docker Compose与Kubernetes在容器编排中的角色。Docker Compose适合简单部署和开发环境,提供一键启动多容器的便利;而Kubernetes则适用于大规模生产环境,具备自动化运维、集群管理和负载均衡等功能。Python在容器编排中扮演重要角色,示例代码展示了如何使用Python的Docker SDK和Kubernetes客户端进行部署、扩展和日志管理。通过Python,开发者可以实现自定义监控、自动水平扩展和实时日志监控等高级功能,增强了容器编排的灵活性和自动化。
230 1
Docker Compose与Kubernetes的比较
|
27天前
|
JSON JavaScript 开发者
Composerize神器:自动化转换Docker运行命令至Compose配置,简化容器部署流程
【8月更文挑战第7天】Composerize神器:自动化转换Docker运行命令至Compose配置,简化容器部署流程
Composerize神器:自动化转换Docker运行命令至Compose配置,简化容器部署流程
|
28天前
|
Ubuntu Shell 应用服务中间件
在Ubuntu 14.04上安装和使用Docker Compose的方法
在Ubuntu 14.04上安装和使用Docker Compose的方法
30 1
|
18天前
|
Kubernetes Linux Docker
【Azure 应用服务】使用Docker Compose创建App Service遇见"Linux Version is too long. It cannot be more than 4000 characters"错误
【Azure 应用服务】使用Docker Compose创建App Service遇见"Linux Version is too long. It cannot be more than 4000 characters"错误
|
19天前
|
开发工具 git Docker
深入挖掘Docker Compose
【8月更文挑战第24天】
22 0
|
2月前
|
关系型数据库 Linux 数据库
如何在Linux云服务器上通过Docker Compose部署安装Halo,搭建个人博客网站?
本文指导用户如何在Linux服务器上使用Docker Compose部署Halo博客系统。首先确保拥有Linux服务器并安装Docker及Docker Compose。接着创建文件夹(例如`~/halo`),用于存放所有Halo相关数据。可以选择不同的Halo Docker镜像源,推荐使用具体版本而非`latest`标签以避免误操作。示例中提供了三种`docker-compose.yaml`配置方法:Halo+PostgreSQL、Halo+MySQL以及使用默认的H2数据库。每种配置都包括网络设置、健康检查和环境变量。
69 1
|
2月前
|
Java Nacos Docker
使用docker compose 编排微服务发布
使用docker compose 编排微服务发布
41 3
|
2月前
|
存储 应用服务中间件 开发工具
docker compose 容器编排
docker compose 容器编排
38 2
|
28天前
|
Ubuntu Linux 测试技术
在Ubuntu 18.04上安装Docker Compose的方法
在Ubuntu 18.04上安装Docker Compose的方法
73 0
|
28天前
|
Ubuntu Linux 持续交付
在Ubuntu 16.04上安装Docker Compose的方法
在Ubuntu 16.04上安装Docker Compose的方法
20 0