Docker-compose 入门使用
一、Docker-compose概述
Docker Compose是一个用于定义和运行多容器Docker应用程序的工具。通过Docker Compose,您可以使用YAML文件来配置应用程序需要的所有服务,并使用一个命令从YAML文件配置中创建并启动所有服务。
Compose 中有两个重要的概念:
- 服务(service):一个应用的容器,实际上可以包括若干运行相同镜像的容器实例。
- 项目(project):由一组关联的应用容器组成的一个完整业务单元,在 docker-compose.yml 文件中定义。
Compose 的默认管理对象是项目,通过子命令对项目中的一组容器进行便捷地生命周期管理。想要使用docker-compose需要安装好docker环境。
使用步骤:
- 安装docker环境
- 下载docker-compose可执行文件
- 编写.yaml文件定义项目和服务
- 启动并管理多个容器
举例:以部署wordpress博客为例,如果使用docker需要手动部署mysql、redis、wordpress博客,而且容器间还有依赖关系,先启动mysql容器再启动wordpress容器。如果是以docker-compose则可以将3个容器定义为一个项目,项目包含3个服务,并且先启动mysql和redis,最后启动wordpress并连接。
二、下载安装
docker-compose是一个可执行文件,直接下载到Bin目录,赋予执行权限即可。可以直接在服务器下载或者下载完成后上传到/usr/local/bin/
目录。
# 下载二进制文件 sudo curl -L https://github.com/docker/compose/releases/download/v2.20.3/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose # 赋予权限 chmod +x /usr/local/bin/docker-compose # 测试 docker-compose -v
简单使用
在目录下创建.yaml文件。
# 创建一个docker-compose.yaml文件,内容如下:
version: '3'
services:
mysql:
image: mysql:latest
ports:
- "3306:3306"
environment:
MYSQL_ROOT_PASSWORD: password
volumes:
- mysql_data:/var/lib/mysql
redis:
image: redis:latest
ports:
- "6379:6379"
wordpress:
image: wordpress:latest
ports:
- "8080:80"
environment:
WORDPRESS_DB_HOST: mysql
WORDPRESS_DB_USER: root
WORDPRESS_DB_PASSWORD: password
WORDPRESS_DB_NAME: wordpress
REDIS_HOST: redis
depends_on:
- mysql
- redis
volumes:
mysql_data:
说明:
- 文件格式:yml文件的格式层级关系是缩进两个英文状态的空格,不能用缩进符等替代空格。
- 指令与值:如果指令后面需要写值必须是英文冒号+英文空格方可写值,如:image: “mysql:5.7”。
- 多值指令:对于可以写多个值的指令(一般这样的指令都是这个单词的复数格式,如volumes、networks、ports等),对于这些指令的值需要冒号换行后使用 - 指定一个值,如果有多个值,使用多个 - 指定。如: ports: #指定端口映射 - "9003:9989" #端口映射关系 和ports一起相当于-p 9003:9989 - "8080:8080"。
- 文件名:docker-compose文件的名称只能是以下四个之一:docker-compose.yml、docker-compose.yaml、 compose.yml、compose。
- 服务定义:每个服务都必须明确定义在services字段下,并有一个唯一的服务名称。服务定义包括镜像名称、环境变量、端口映射等。
- 依赖关系:可以使用depends_on字段来定义服务的依赖关系,以确保在启动服务之前先启动依赖的服务。
- 网络配置:可以使用networks字段来定义自定义网络,并在服务中指定该网络。
- 卷挂载:可以使用volumes字段来定义卷,并在服务中指定挂载点。
简单说就是以创建一个指定名称的yaml文件,以缩进格式编写定义服务于容器名称,端口映射,卷挂载,环境变量,与docker部署一致。必须在services下面定义容器配置,然后使用镜像等等内容。
启动整个项目,在.yaml文件的当前目录执行docker-compose up -d
# 启动容器 docker-compose up -d # 重启 docker-compose restart # 停止删除容器 docker-compose down
使用docker-compose可以实现整个项目的停止重启或者单个服务的管理。
常见的管理命令:
- 启动和运行服务:docker-compose up。
- 停止服务:docker-compose stop。
- 重新启动服务:docker-compose restart。
- 构建服务:docker-compose build。
- 删除服务:docker-compose rm。
- 列出服务:docker-compose ps。
- 查看日志:docker-compose logs。
- 获取服务容器的详细信息:docker-compose inspect。
- 进入容器:docker-compose exec [服务名称] [命令]。
- 删除项目:docker-compose down。
总结:通过在docker-compose.yaml批量创建容器,并且容器间可以实现依赖与顺序启动,方便进行管理。通过在services下面定义服务,服务的定义与docker一致,注意缩进格式即可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· .NET10 - 预览版1新功能体验(一)