第三口docker的感觉——docker compose

本文涉及的产品
云原生数据库 PolarDB MySQL 版,Serverless 5000PCU 100GB
简介:

我们为什么需要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数据库、数据库生态工具、云原生智能化数据库管控平台,为阿里巴巴经济体以及各个行业的企业客户和开发者提供从公共云到混合云再到私有云的完整解决方案,提供基于云基础设施进行数据从处理、到存储、再到计算与分析的一体化解决方案。本节课带你了解阿里云数据库产品家族及特性。
目录
相关文章
|
30天前
|
存储 机器学习/深度学习 中间件
快速上手 Elasticsearch:Docker Compose 部署详解
本文介绍了如何使用Docker Compose快速搭建Elasticsearch学习环境。Elasticsearch是一款用于实时搜索和分析的分布式中间件,适用于多种场景,如搜索、日志分析、机器学习等。首先,创建docker网络,拉取最新版8.12.2镜像。接着,编写docker-compose.yml文件,配置单节点集群,设置端口映射、内存限制及数据卷挂载。然后,创建并配置数据卷目录,允许远程访问和跨域。最后,启动服务并验证,通过浏览器访问确认服务运行正常。本文为初学者提供了一个简便的Elasticsearch部署方法。
165 4
快速上手 Elasticsearch:Docker Compose 部署详解
|
1月前
|
关系型数据库 MySQL Java
Docker Compose详细教程(从入门到放弃)
Docker Compose详细教程(从入门到放弃)
177 0
|
3月前
|
存储 数据可视化 数据安全/隐私保护
使用 Docker Compose 部署 Docker Registry
【1月更文挑战第2天】 在内网环境中,我们期望能够在本地共享镜像。为了解决这一问题,Docker Registry成为了我们的救星。Docker Registry是一个用于存储和管理Docker镜像的开源工具。通过在本地部署Docker Registry,您可以轻松地构建、存储和分享自己的Docker镜像。
150 3
使用 Docker Compose 部署 Docker Registry
|
4月前
|
Kubernetes 关系型数据库 MySQL
Docker Compose入门:打造多容器应用的完美舞台
Docker Compose 是一个强大的工具,它允许开发者通过简单的 YAML 文件定义和管理多容器的应用。本文将深入讨论 Docker Compose 的基本概念、常用命令以及高级应用场景,并通过更为丰富和实际的示例代码,助您轻松掌握如何通过 Docker Compose 打造复杂而高效的多容器应用。
|
1月前
|
Java Docker 微服务
如何使用Docker和Docker Compose部署微服务
【2月更文挑战第12天】
233 0
|
4月前
|
应用服务中间件 Linux nginx
Docker Compose 安装与使用(常用指令)
Docker Compose 安装与使用(常用指令)
229 0
|
4月前
|
前端开发 Docker Windows
Windows 安装 Docker Compose
Windows 安装 Docker Compose
|
2月前
|
Docker 容器
Docker Compose的安装与配置
Docker Compose的安装与配置
131 2
Docker Compose的安装与配置
|
2月前
|
存储 监控 Serverless
Serverless应用引擎(SAE)不支持直接通过Docker Compose进行部署
【2月更文挑战第8天】Serverless应用引擎(SAE)不支持直接通过Docker Compose进行部署
263 1
|
2月前
|
消息中间件 运维 应用服务中间件
容器化运维:构建高可用RabbitMQ集群的Docker Compose指南
容器化运维:构建高可用RabbitMQ集群的Docker Compose指南
171 0