基于Centos7.9安装docker-compose
docker-compose
安装搭建
Docker Compose 是一个使用Compose 文件格式定义的 Docker 上运行多容器应用程序的工具。Compose 文件用于定义如何配置组成应用程序的一个或多个容器。有了 Compose 文件后,可以使用单个命令创建和启动应用程序

可选择任意版本下载后上传到机器即可
命令下载:注意替换版本信息
curl -SL https://github.com/docker/compose/releases/download/v2.26.1/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose
mv /usr/local/bin/docker-compose /usr/bin/
chmod +x /usr/bin/docker-compose
root@huhy:~# docker-compose -v
Docker Compose version v2.26.1
命令使用
查看帮助文档如下:docker compose(用于较新版本)和docker-compose(旧版本)都是一个东西
- docker compose 是 Docker 官方推荐的新标准,不需要单独安装,性能更优,兼容性更好,未来会完全取代 docker-compose。
- docker-compose 是旧版本的 CLI 工具,需要手动安装,未来可能会逐步被淘汰。
root@huhy:~# docker compose --help
Usage: docker compose [OPTIONS] COMMAND
Define and run multi-container applications with Docker
Options:
--all-resources Include all resources, even those not used by services
--ansi string Control when to print ANSI control characters ("never"|"always"|"auto") (default "auto")
--compatibility Run compose in backward compatibility mode
--dry-run Execute command in dry run mode
--env-file stringArray Specify an alternate environment file
-f, --file stringArray Compose configuration files
--parallel int Control max parallelism, -1 for unlimited (default -1)
--profile stringArray Specify a profile to enable
--progress string Set type of progress output (auto, tty, plain, json, quiet) (default "auto")
--project-directory string Specify an alternate working directory
(default: the path of the, first specified, Compose file)
-p, --project-name string Project name
Commands:
attach Attach local standard input, output, and error streams to a service's running container
build Build or rebuild services
commit Create a new image from a service container's changes
config Parse, resolve and render compose file in canonical format
cp Copy files/folders between a service container and the local filesystem
create Creates containers for a service
down Stop and remove containers, networks
events Receive real time events from containers
exec Execute a command in a running container
export Export a service container's filesystem as a tar archive
images List images used by the created containers
kill Force stop service containers
logs View output from containers
ls List running compose projects
pause Pause services
port Print the public port for a port binding
ps List containers
publish Publish compose application
pull Pull service images
push Push service images
restart Restart service containers
rm Removes stopped service containers
run Run a one-off command on a service
scale Scale services
start Start services
stats Display a live stream of container(s) resource usage statistics
stop Stop services
top Display the running processes
unpause Unpause services
up Create and start containers
version Show the Docker Compose version information
wait Block until containers of all (or specified) services stop.
watch Watch build context for service and rebuild/refresh containers when files are updated
命令使用格式为
docker compose [OPTIONS] COMMAND
- docker compose 选项解析如下
| 选项 | 说明 |
|---|---|
| –all-resources | 包含所有资源,即使这些资源未被 services 使用 |
| –ansi string | 控制 ANSI 颜色输出方式,可选 never、always 或 auto(默认 auto) |
| –compatibility | 以向后兼容模式运行 docker compose,适用于旧版 docker-compose.yml |
| –dry-run | 模拟运行命令,不实际执行(用于测试命令行为) |
| –env-file stringArray | 指定 环境变量文件(.env 文件) |
| -f, --file stringArray | 指定 Compose 配置文件(默认为 docker-compose.yml) |
| –parallel int | 控制最大并行数(-1 代表无限制) |
| –profile stringArray | 指定 profile(只启动匹配 profile 的服务) |
| –progress string | 设置构建进度输出格式,可选 auto、tty、plain、json、quiet(默认 auto) |
| –project-directory string | 指定 项目目录(默认使用 docker-compose.yml 的路径) |
| -p, --project-name string | 指定 Compose 项目名称 |
- 管理常用命令
| 选项 | 说明 |
|---|---|
| attach | 连接到运行中的服务容器,类似 docker attach |
| create | 创建但不启动容器(docker create 类似) |
| down | 停止并移除所有容器、网络、卷 |
| exec | 在运行中的容器内执行命令(类似 docker exec) |
| kill | 强制终止服务容器 |
| logs | 查看容器日志(类似 docker logs) |
| pause | 暂停服务 |
| restart | 重启容器 |
| rm | 删除已停止的容器 |
| run | 运行一次性任务(适用于 jobs 或 cron) |
| start | 启动已创建的服务容器 |
| stop | 停止运行的服务 |
| top | 查看容器内部进程 |
| unpause | 恢复已暂停的容器 |
| wait | 阻塞进程,直到容器停止 |
- 编排(Compose 相关)
| 选项 | 说明 |
|---|---|
| up | 创建并启动所有容器(常用) |
| build | 构建或重新构建服务(类似 docker build) |
| config | 解析并验证 docker-compose.yml |
| ls | 列出所有运行中的 Compose 项目 |
| ps | 列出 docker compose 管理的容器 |
| scale | 扩缩指定服务的副本数量 |
| watch | 监听 docker-compose.yml 文件变更,自动重启容器 |
| port | 显示容器的映射端口 |
| events | 监听 Docker 事件(docker events 类似) |
| publish | 发布 Compose 应用(实验性功能) |
| stats | 显示容器资源使用率(类似 docker stats) |
| version | 显示 docker compose 版本 |
Compose文件编写
compose的yaml 文件是 Docker Compose 使用的配置文件,它用 YAML 格式定义了多容器应用的部署方式。通过 compose.yaml 文件,可以描述服务、网络、数据卷、环境变量等内容,并使用 docker compose 命令进行管理。
- yaml文件格式及常见用法如下(缩进格式要求严格!!)
version: '3.8' # 指定 Docker Compose 版本
services:
app:
image: myapp:latest # 使用已构建的镜像
container_name: myapp_container # 指定容器名称
build: # 构建配置
context: ./app # 指定构建上下文,即 Dockerfile 所在目录
dockerfile: Dockerfile # 指定 Dockerfile 文件名
args: # 传递构建时参数
- BUILD_ENV=production
restart: always # 自动重启策略: always | no | on-failure | unless-stopped
ports:
- "8080:80" # 宿主机端口:容器端口
environment: # 环境变量
NODE_ENV: production
DATABASE_URL: mysql://user:password@mysql:3306/dbname
volumes: # 挂载数据卷
- ./data:/app/data
depends_on: # 依赖的服务
- mysql
networks:
- backend_network
deploy: # 部署相关配置
resources:
limits: # 资源限制
cpus: "0.5" # 限制 CPU 核心数
memory: "512M" # 限制内存使用
logging: # 日志配置
driver: json-file # 使用 json 文件存储日志
options:
max-size: "10m" # 每个日志文件最大 10MB
max-file: "3" # 最多保留 3 个日志文件
# 常见服务的容器配置如下
mysql:
image: mysql:8.0
container_name: mysql_container
restart: always
ports:
- "3306:3306"
environment:
MYSQL_ROOT_PASSWORD: root # MySQL root 用户密码
MYSQL_DATABASE: mydb # 预创建的数据库
MYSQL_USER: user # 创建的普通用户
MYSQL_PASSWORD: password # 普通用户密码
volumes:
- mysql_data:/var/lib/mysql # MySQL 数据存储路径
networks:
- backend_network
redis:
image: redis:latest
container_name: redis_container
restart: always
ports:
- "6379:6379"
volumes:
- redis_data:/data # Redis 持久化存储
networks:
- backend_network
command: ["redis-server", "--appendonly", "yes"] # 以 AOF 持久化方式运行 Redis
nginx:
image: nginx:latest
container_name: nginx_container
restart: always
ports:
- "80:80"
- "443:443"
volumes:
- ./nginx/nginx.conf:/etc/nginx/nginx.conf:ro # 挂载 Nginx 配置文件(只读)
- ./nginx/certs:/etc/nginx/certs # 挂载 SSL 证书
depends_on:
- app # 依赖应用服务
networks:
- frontend_network
- backend_network
worker:
image: myworker:latest
container_name: worker_container
restart: always
depends_on:
- redis
environment:
REDIS_URL: redis://redis:6379 # 连接 Redis
networks:
- backend_network
volumes:
mysql_data: # MySQL 数据卷
driver: local
redis_data: # Redis 数据卷
driver: local
networks:
frontend_network: # 供 nginx 和外部访问的网络
driver: bridge
backend_network: # 供后端服务使用的内部网络
driver: bridge

浙公网安备 33010602011771号