最稳妥方式是下载官方二进制文件:先确认docker已安装并运行(docker --version、docker info),再用sudo curl -l下载对应架构的docker-compose二进制至/usr/local/bin/,chmod +x赋权,最后docker-compose --version验证。

Linux 上装 docker-compose 最稳妥的方式就是下载官方二进制文件,别用 pip install docker-compose —— 它大概率会因为 docker-py 版本不匹配,直接报 ImportError: cannot import name 'DockerClient' 或命令根本不存在。
必须先确认 Docker 已就绪
docker-compose 是个客户端工具,它本身不运行容器,而是调用本地 docker daemon。所以第一步永远是验证 docker 能不能用:
- 运行
docker --version,输出应类似Docker version 28.3.1, build 38b7060 - 运行
docker info,确认Server Version字段有值,且没有权限错误(常见于没加sudo或用户没加入docker组) - 如果没装,用
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun(国内推荐加镜像)
下载并安装官方二进制(推荐方式)
官方二进制是静态链接的可执行文件,不依赖 Python、不冲突、版本明确。注意路径必须是 /usr/local/bin/,不是 /usr/bin/(某些发行版里该目录被 snap 或包管理器锁死):
- 执行:
sudo curl -L "https://github.com/docker/compose/releases/download/v2.32.4/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose - 赋权:
sudo chmod +x /usr/local/bin/docker-compose - 验证:
docker-compose --version,输出应为Docker Compose version v2.32.4 - 若提示命令未找到,检查
echo $PATH是否含/usr/local/bin;如无,需在~/.bashrc或/etc/environment中补上
国内网络慢?换镜像源或代理
GitHub 原地址经常超时或限速。两个实测有效的替代方案:
- 用
ghproxy.com中转:sudo curl -L "https://ghproxy.com/https://github.com/docker/compose/releases/download/v2.32.4/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose - 或用 FastGit:
sudo curl -L "https://hub.fgit.cf/docker/compose/releases/download/v2.32.4/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose - 注意:不要手动改 URL 里的
$(uname -s)和$(uname -m)—— 它们自动展开为Linux和x86_64(或aarch64),手误写错会导致二进制无法执行
docker-compose.yml 文件位置和命名很关键
装完只是第一步。docker-compose 默认只认当前工作目录下的 docker-compose.yml 或 docker-compose.yaml。大小写和后缀都敏感:
- 名字写成
compose.yml、docker-compose.YML、docker-compose.yaml.bak,都会报ERROR: No such file or directory: docker-compose.yml - 文件放在子目录(比如
./prod/docker-compose.yml)?必须显式指定:docker-compose -f ./prod/docker-compose.yml up -d - 端口映射、卷挂载这些配置生效的前提是:文件语法正确 + 网络模式一致 + 容器名/服务名不冲突 —— 但这些错误通常在
up阶段才暴露,不是安装阶段的问题
真正容易被忽略的是:Compose v2 已深度集成进 docker CLI,你也可以直接用 docker compose up(注意中间是空格,不是连字符),但前提是你的 docker 版本 ≥ 20.10 且启用了 Compose 插件。不过老项目或 CI 脚本里仍大量使用 docker-compose 命令,所以保留独立二进制更稳妥。











