七、Docker-Compose简介和安装

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

使用现有的docker进行部署存在问题

我们之前在Docker容器中安装了nginx、mysql、es、redis等等一些容器,然后每次我需要先启动redis、mysql、es、nginx之后才能启动我们的项目,因为容器之间可能存在某种依赖,需要按一定的顺序启动,比如Kibana容器依赖于es容器,es容器需要先启动。当容器启动完毕我们才能运行起来项目。如果容器数量特别多的话启动更加麻烦。

假如需要将这些服务部署到另一个服务器,但是不知道到底用到了Docker里面具体的哪一些容器,没有办法只能把容器全部复制过去,没法对一个项目的容器进行管理。

Docker-Compose简介

Compose项目是Docker官方的开源项目。负责实现对Docker容器集群的快速编排,对多个容器进行编排,将一组相关联的容器放在一起,可以理解为它将你项目用到的所有容器按照你指定的启动顺序设置成一个文件,然后一次就可以启动。

与Dockerfile不同的是,Dockerfile模版文件是让用户定义一个单独运行的容器,而Compose是多个容器相互配合完成某一个任务的情况。比如要实现一个Web项目,里面除了Web容器本身之外还有数据库、负载均衡容器等等。

定义方式

允许用户通过一个单独的docker-compose.yml模版文件来定义一组相关联的应用容器为一个项目。

里面有两个重要概念:

  • 项目:一组相关联的应用容器组成的一个完整的业务单元。可以理解为你项目中的多个容器组成了一个项目
  • 服务:一个应用容器里面可以包含若干运行相同镜像的容器实例。可以理解项目中的每一个容器都称之为服务,多个容器就是多个服务,只是这里面的叫法名称变了而已。

只要操作平台支持Docker就可以用Compose来进行编排管理。

安装卸载

1、登入官方地址下载指定版本,官方地址为:https://github.com/docker/compose/releases

下载完之后上传到服务器的/usr/local/bin目录下

给它一个执行权限

sudo chmod +x /usr/local/bin/docker-compose

2、直接从服务器下载

curl -L https://github.com/docker/compose/releases/download/2.2.2/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose

后续步骤同上

docker-compose -v  #查看是否安装成功

案例

1、创建一个目录

mkdir ems

2、在ems目录创建一个docker-compose.yml 模版文件

3、编写docker-compose.yml

#docker-compose项目版本号
version: "3.8"
services:
  centos01:                #自定义的服务的名称 
     image: tomcat:latest   #代表使用哪一个镜像 latest表示版本号
     ports:       #代表主机和容器中的端口映射  
     - 8082:8080

version:docker-compose和docker版本对应,先查看docker版本

docker版本20.10.+,所以对应docker-compose的3.8版本

4、启动docker-compose一组服务

docker-compose up

表示启动成功

5、还可以在里面继续增加容器redis,指定

#docker-compose项目版本号
version: "3.8"
services:
  centos01:                #自定义的服务的名称
     image: tomcat:latest   #代表使用哪一个镜像
     ports:       #代表主机和容器中的端口映射  
     - 8082:8080
  redis01:
    image: redis:latest  #指定了redis的镜像 
    ports:
    - 6379:6379

两个都启动成功

更多配置

environment:代表给当前容器启动指定环境,类似于docker run -e MYSQL_ROOT_PASSWORD=root

Volumes:代表给当前容器和主机指定数据卷,类似于 docker run -v 注意 这里数据卷的路径必须先创建

#docker-compose项目版本号
version: "3.8"
services:
  centos01:                #自定义的服务的名称
     image: tomcat:latest   #代表使用哪一个镜像
     ports:       #代表主机和容器中的端口映射  
     - 8082:8080
  redis01:
    image: redis:latest
    ports:
    - 6379:6379
  mysql01:
    image: mysql:latest
    ports:
   - 3306:3306
   environment:  
   - "MYSQL_ROOT_PASSWORD=root"
   volumes:
    - /root/mysqldata:/var/lib/mysql

启动之后服务运行状态

这里的Names是自动取的别名,可以在里面增加container_name给容器指定别名

以及mysql挂载的数据卷都有显示


相关文章
|
4月前
|
关系型数据库 应用服务中间件 nginx
Docker一键安装中间件(RocketMq、Nginx、MySql、Minio、Jenkins、Redis)
本系列脚本提供RocketMQ、Nginx、MySQL、MinIO、Jenkins和Redis的Docker一键安装与配置方案,适用于快速部署微服务基础环境。
|
2月前
|
关系型数据库 数据库 PostgreSQL
docker 安装 Postgres 17.6
本文介绍如何通过Docker安装和配置PostgreSQL 17.6。内容包括拉取镜像、导出配置文件、运行容器并挂载数据与配置文件目录,以及进入容器使用psql操作数据库的完整步骤,便于持久化管理和自定义配置。
201 3
docker 安装 Postgres 17.6
|
23天前
|
NoSQL 算法 Redis
【Docker】(3)学习Docker中 镜像与容器数据卷、映射关系!手把手带你安装 MySql主从同步 和 Redis三主三从集群!并且进行主从切换与扩容操作,还有分析 哈希分区 等知识点!
Union文件系统(UnionFS)是一种**分层、轻量级并且高性能的文件系统**,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下(unite several directories into a single virtual filesystem) Union 文件系统是 Docker 镜像的基础。 镜像可以通过分层来进行继承,基于基础镜像(没有父镜像),可以制作各种具体的应用镜像。
209 5
|
23天前
|
Java Linux 虚拟化
【Docker】(1)Docker的概述与架构,手把手带你安装Docker,云原生路上不可缺少的一门技术!
1. Docker简介 1.1 Docker是什么 为什么docker会出现? 假定您在开发一款平台项目,您的开发环境具有特定的配置。其他开发人员身处的环境配置也各有不同。 您正在开发的应用依赖于您当前的配置且还要依赖于某些配置文件。 您的企业还拥有标准化的测试和生产环境,且具有自身的配置和一系列支持文件。 **要求:**希望尽可能多在本地模拟这些环境而不产生重新创建服务器环境的开销 问题: 要如何确保应用能够在这些环境中运行和通过质量检测? 在部署过程中不出现令人头疼的版本、配置问题 无需重新编写代码和进行故障修复
225 2
|
5月前
|
存储 NoSQL MongoDB
Docker中安装MongoDB并配置数据、日志、配置文件持久化。
现在,你有了一个运行在Docker中的MongoDB,它拥有自己的小空间,对高楼大厦的崩塌视而不见(会话丢失和数据不持久化的问题)。这个MongoDB的数据、日志、配置文件都会妥妥地保存在你为它精心准备的地方,天旋地转,它也不会失去一丁点儿宝贵的记忆(即使在容器重启后)。
516 4
|
4月前
|
Linux Docker Windows
windows docker安装报错适用于 Linux 的 Windows 子系统必须更新到最新版本才能继续。可通过运行 “wsl.exe --update” 进行更新。
适用于 Linux 的 Windows 子系统需更新至最新版本(如 wsl.2.4.11.0.x64.msi)以解决 2025 年 Windows 更新后可能出现的兼容性问题。用户可通过运行 “wsl.exe --update” 或访问提供的链接下载升级包进行更新。
1266 0
|
5月前
|
Linux iOS开发 Docker
MyEMS开源系统安装之Linux/macOS上的DOcker
本指南详细介绍了如何在Linux/macOS上使用Docker部署MyEMS系统。主要内容包括:前置条件(如安装Docker、npm和MySQL),以及分步骤部署各个组件(如myems-api、myems-admin、myems-modbus-tcp等)。每个步骤涵盖源代码复制、环境配置、镜像构建、容器运行及日志管理等操作,并提供了多平台构建的支持。最后,指南还说明了默认端口和登录凭据,帮助用户快速启动并访问MyEMS的管理界面和Web界面。
157 1
下一篇
开通oss服务