【11.0】Docker之docker-compose
【一】引入
- 使用了docker 面临一个比较大的问题,如果一个Django项目,使用MySQL、Redis。
- 不要一次性把所有服务器放到一个容器中,每个服务器一个容器
- 批量管理多个容器,比较难以操作,于是就有了docker-compose
【二】用途
- 批量管理,操作docker容器
【三】docker-compose
- docker-compose是一个能一次性定义和管理多个Docker容器的工具,单机容器编排【定义和管理】
【四】多机容器编排
-
docker swarm是Docker官方提供的多机容器编排工具
-
Kubernetes(也简称为K8s)是一个使用Go语言编写的开源容器编排平台
【五】docker Compose 概念
- Compose 中定义和启动的每一个容器都相当于一个服务(service)
- Compose中能定义和启动多个服务,且他们之间通常具有协同关系
【六】管理方式
- 使用YAML文件来配置应用程序的服务。
- 在这个配置文件中,您可以定义每个容器的镜像、端口映射、环境变量、卷挂载等信息。
- 通过运行单个命令
docker-compose up
,您可以创建并启动配置文件中定义的所有服务。
【七】安装docker-compose
- 安装docker-compose可以通过官方提供的安装脚本进行操作。
【1】下载docker-compose的安装脚本
- 运行以下下命令
sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
【2】授予docker-compose可执行权限
sudo chmod +x /usr/local/bin/docker-compose
【3】验证安装是否成功
docker-compose --version
【4】您会看到类似以下的输出,表示docker-compose已成功安装
docker-compose version 1.29.2, build unknown
现在,您已经成功安装了docker-compose。
【八】常用命令
- docker-compose是一个用于定义和运行多个Docker容器的工具,它通过一个配置文件来管理各个服务之间的依赖关系、网络设置以及其他参数。
- 下面是一些常用的docker-compose命令,以帮助您更好地使用和管理容器:
【1】启动容器
docker-compose up
- 该命令会在当前目录下查找docker-compose.yml文件,并启动所定义的所有服务。
【2】启动容器(后台模式)
docker-compose up -d
- 使用该命令启动容器,并将其放在后台运行。
【3】停止运行中的容器
docker-compose stop
- 该命令用于停止当前正在运行的所有容器,但并不会删除这些容器。
【4】停止并删除容器
docker-compose down
- 该命令会停止并删除当前正在运行的所有容器。
【5】构建或重新构建服务
docker-compose build
- 使用该命令可以构建或重新构建定义在docker-compose.yml中的服务的容器镜像。
【6】查看服务日志
docker-compose logs
- 该命令会显示当前正在运行的所有服务的日志输出。
【7】查看运行中的容器列表
docker-compose ps
- 该命令会列出当前正在运行的所有容器的相关信息。
【8】执行单个命令
docker-compose run <service_name> <command>
- 使用该命令可以在指定的服务容器中执行单个命令。
【案例演示】
- 假设您正在开发一个Django项目,并且该项目依赖于MySQL数据库和Redis缓存。
- 为了简化部署过程,并且避免将所有服务器放在一个容器中,您可以使用docker-compose来管理这些服务。
- 首先,创建一个新的项目目录,并在其中创建一个docker-compose.yml文件。
- 然后,按照以下示例填写docker-compose.yml文件:
version: '3'
services:
web:
build:
context: .
dockerfile: Dockerfile
ports:
- 8000:8000
depends_on:
- db
- redis
db:
image: mysql:latest
environment:
- MYSQL_ROOT_PASSWORD=secret
- MYSQL_DATABASE=myapp
redis:
image: redis:latest
-
在这个示例中,我们定义了三个服务:web、db和redis。
-
web服务表示Django应用程序,通过使用Dockerfile来构建容器镜像,该Dockerfile位于当前目录下。
-
我们还将容器的8000端口映射到主机的8000端口,并指定了该服务依赖于db和redis。
-
db服务使用了mysql镜像,并设置了相关的环境变量,包括root用户的密码和项目数据库的名称。
-
redis服务使用了redis镜像。
-
-
现在,您可以在项目目录中运行以下命令,启动这些服务:
docker-compose up
-
docker-compose将会自动下载所需的镜像并创建并启动相应的容器。
-
通过使用docker-compose,您可以轻松地管理多个容器,并且它们之间会自动建立连接和协同工作。这样,您可以更加高效地进行开发、测试和部署。
本文来自博客园,作者:Chimengmeng,转载请注明原文链接:https://www.cnblogs.com/dream-ze/p/17665062.html