ubuntu 22.04上安装docker compose有四种方法:一、通过docker官方apt源安装(推荐),作为cli插件集成;二、从github下载二进制文件,适用于离线或定制场景;三、用pip安装,适合python环境就绪的开发主机;四、必须将用户加入docker组以避免sudo权限问题。

如果您在Ubuntu 22.04系统上需要快速部署多容器应用,但尚未安装Docker Compose,则可能是由于Docker环境未完整配置或Compose组件缺失。以下是多种可靠且经验证的安装方法:
一、使用Docker官方APT源安装(推荐)
该方法将Docker Compose作为Docker CLI插件集成安装,符合Docker官方v20.10+标准,无需单独管理二进制文件,兼容性与更新机制最优。
1、确保系统已更新并安装基础依赖:
sudo apt update && sudo apt install -y ca-certificates curl gnupg lsb-release
2、添加Docker官方GPG密钥:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
3、添加Docker稳定版APT源:
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
4、更新包索引并安装Docker Engine及配套CLI:
sudo apt update && sudo apt install -y docker-ce docker-ce-cli containerd.io
5、验证Docker Compose是否已作为插件可用:
docker compose version(注意是docker compose,非docker-compose)
二、通过GitHub发布页下载二进制文件(离线/定制场景)
该方法适用于无法访问Docker官方APT源、需指定特定版本或无root权限但可写入/usr/local/bin的环境,直接获取预编译二进制文件并手动部署。
1、获取最新稳定版标签名并下载对应二进制:
sudocurl-L"https://github.com/docker/compose/releases/download/$(curl-shttps://api.github.com/repos/docker/compose/releases/latest|grep-oP'\"tag_name\":\"\K(.*)(?=\")')/docker-compose-$(uname-s)-$(uname-m)"-o/usr/local/bin/docker-compose
2、赋予可执行权限:
sudo chmod +x /usr/local/bin/docker-compose
3、验证安装结果:
docker-compose --version(注意此处为旧式命令名,兼容性保留)
三、使用pip安装(Python环境就绪时)
该方法适用于已配置Python 3.8+及pip的开发主机,利用PyPI分发的docker-compose包,便于与venv隔离管理,但不适用于生产级服务守护场景。
1、升级pip至最新稳定版:
python3 -m pip install --upgrade pip
2、安装docker-compose包:
sudo pip3 install docker-compose
3、确认命令路径与版本:
/usr/local/bin/docker-compose --version(若提示命令未找到,请检查pip安装路径是否在$PATH中)
四、启用非root用户权限(关键后续步骤)
为避免每次执行docker或docker compose命令均需sudo,必须将当前用户加入docker组,否则容器操作将因权限不足而失败。
1、将当前用户添加至docker组:
sudo usermod -aG docker $USER
2、立即激活组权限(无需重启或重新登录):
newgrp docker
3、验证权限生效:
docker run --rm hello-world 与 docker compose version 均应无权限错误输出











