78人参与 • 2026-08-21 • Docker
在容器化部署过程中,使用原生 docker run 命令存在以下痛点:
docker run --name nginx -p 80:80 -p 443:443 \ -v /data/nginx/html:/usr/share/nginx/html \ -v /data/nginx/conf/nginx.conf:/etc/nginx/nginx.conf/ \ -v /data/nginx/conf.d:/etc/nginx/conf.d/ \ -v /data/nginx/logs:/var/log/nginx \ -v /data/nginx/ssl:/etc/nginx/ssl \ --privileged=true -d --restart=always nginx
docker compose可以解决以上问题
docker compose 是 docker 官方提供的容器编排工具,用于简化多容器应用的定义、配置和部署过程。它通过一个 yaml 格式的配置文件(docker-compose.yml)统一管理多个关联容器,解决以下核心问题:
典型应用场景
支持两种安装方式,推荐选择与系统架构匹配的方式
安装
# 安装 curl -l https://github.com/docker/compose/releases/download/1.23.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
授予执行权限
# 授予执行权限 sudo chmod +x /usr/local/bin/docker-compose
验证安装
docker-compose --version
如果使用命令下载的很慢,可以手动从github下载,然后上传到服务器即可,先解释一下上面的下载命令
curl -l
curl 自动跟随重定向。github 的 releases 链接通常会重定向到实际文件地址,此选项确保能正确下载文件。下载地址解释
https://github.com/docker/compose/releases/download/1.23.1/docker-compose-`uname -s`-`uname -m`
动态生成文件名:
uname -s:获取操作系统名称(如 linux、darwin(macos))。uname -m:获取硬件架构(如 x86_64、arm64)。最终文件名示例:
输出重定向
> /usr/local/bin/docker-compose
>:将 curl 下载的内容保存到指定路径。/usr/local/bin/docker-compose:docker compose 的安装路径,通常需要管理员权限才能写入。若权限不足,需在命令前加 sudo,即:
sudo curl -l ... > /usr/local/bin/docker-compose
所以,手动下载有以下几个步骤
uname -s uname -m

https://github.com/docker/compose/releases/download/1.23.1/docker-compose-`uname -s`-`uname -m`
使用步骤1的uname -s和uname -m替换掉链接中的uname -s和uname -m,例如:
https://github.com/docker/compose/releases/download/1.23.1/docker-compose-linux-x86_64
浏览器中输入该链接即可下载docker compose文件,建议使用科学上网或者使用下载器下载(idm,迅雷)
将下载好的docker compose文件移动到/usr/local/bin/docker-compose目录下即可
赋予docker compose文件可执行权限
sudo chmod +x /usr/local/bin/docker-compose
version: '3.8' # 指定兼容的 compose 规范版本
services: # 服务定义区块
webapp: # 服务名称(自定义)
image: nginx:alpine # 基础镜像
container_name: my-nginx # 容器命名(可选)
ports:
- "80:80" # 端口映射(主机:容器)
- "443:443"
volumes:
- ./nginx.conf:/etc/nginx/nginx.conf # 挂载配置文件
- html:/usr/share/nginx/html # 使用命名卷
networks:
- frontend # 加入指定网络
depends_on:
- database # 声明依赖关系
database:
image: mysql:8.0
environment:
mysql_root_password: secure_password # 环境变量注入
volumes:
- mysql_data:/var/lib/mysql # 数据持久化
networks:
- backend
volumes: # 声明数据卷(自动创建)
html:
mysql_data:
networks: # 自定义网络(隔离通信)
frontend:
backend:执行 docker compose(或旧版 docker-compose)命令时,默认在当前工作目录下查找以下文件:
若文件不在当前目录或使用自定义文件名,需通过 -f(或 --file)参数指定路径:
# 指定其他目录或文件名 docker compose -f /path/to/custom-compose.yml up # 使用多个 compose 文件(合并配置) docker compose -f docker-compose.yml -f docker-compose.prod.yml up
| 命令 | 作用 |
|---|---|
| docker-compose up | 启动所有服务(前台运行) |
| docker-compose up -d | 后台启动所有服务 |
| docker-compose down | 停止并删除容器、网络(保留数据卷) |
| docker-compose down -v | 停止并删除容器、网络及数据卷 |
| docker-compose logs | 查看所有服务的日志 |
| docker-compose logs -f web | 实时跟踪 web 服务的日志 |
| docker-compose ps | 查看运行中的容器状态 |
| docker-compose exec web sh | 进入 web 容器的 shell |
| docker-compose build | 根据 build: 配置构建镜像(需在 compose 文件中定义) |
以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。
您想发表意见!!点此发布评论
版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。
发表评论