安装 Docker Compose

前置条件

Docker Compose依赖Docker Engine进行任何有意义的工作,因此请确保本地或远程安装Docker引擎,具体取决于您的设置。

  • 在Mac和Windows版Docker Desktop等桌面系统上,Docker Compose包含在这些桌面安装中。

  • 在Linux系统上,首先按照Get Docker页面上所述为您的操作系统安装Docker引擎,然后回到这里获取有关在Linux系统上安装Compose的说明。

  • 要以非根用户身份运行Compose,请参阅作为非根用户管理Docker

安装 Compose

按照以下说明在Mac、Windows、Windows Server 2016或Linux系统上安装Compose,或了解使用pip Python软件包管理器或将Compose安装为容器等替代方案。

安装其他版本

以下说明概述了Compose当前稳定版本(v1.29.2)的安装。要安装其他版本的Compose,请将给定的版本号替换为您想要的版本号。有关在Linux上安装Compose 2.0.0的说明,请参阅在Linux上安装Compose 2.0.0

编写版本也列出了,并可在GitHub上的Compose存储库发布页面上直接下载。要安装Compose的预发布版本,请参阅安装预发布版本部分。

Install Compose on Linux systems

在Linux上,您可以从GitHub上的Compose存储库发布页面下载Docker Compose二进制文件。按照链接中的说明操作,其中包括在终端中运行curl命令来下载二进制文件。这些分步说明也包含在下文中。

对于alpine,需要以下依赖包:py-pippython3-devlibffi-devopenssl-devgcclibc-devrustcargomake

  1. 运行此命令下载Docker Compose的当前稳定版本:

    1
    sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

    要安装不同版本的Compose,请将1.29.2替换为要使用的Compose版本。有关如何在Linux上安装Compose 2.2.3的说明,请参阅在Linux上安装Compose 2.0.0

  2. 将可执行权限应用于二进制文件:

    1
    sudo chmod +x /usr/local/bin/docker-compose

    笔记:

    如果命令docker-compose在安装后失败,请检查您的路径。您还可以创建指向/usr/bin或路径中任何其他目录的符号链接。

    例如:

    1
    sudo ln -s /usr/local/bin/docker-compose /usr/bin/ docker-compose
  3. 或者,安装bash和zsh shell的命令完成

  4. 测试安装

1
2
docker-compose --version
docker-compose version 1.29.2,build 1110ad01

升级

如果您从Compose 1.2或更低版本升级,请在升级Compose后删除或迁移现有容器。这是因为,从1.3版本开始,Compose使用Docker标签来跟踪容器,并且需要重新创建容器来添加标签。

如果Compose检测到创建的容器没有标签,它就会拒绝运行,这样您就不会最终得到两组容器。如果您想继续使用现有容器(例如,因为它们有您想要保留的数据卷),您可以使用Compose 1.5.x使用以下命令迁移它们:

1
docker-compose migrate-to-labels

或者,如果您不担心保留它们,您可以删除它们。创作只是创造新的。

1
docker container rm -f -v myapp_web_1 myapp_db_1 ...

卸载

如果您使用curl安装,要卸载Docker Compose:

1
sudo rm /usr/local/bin/docker-compose

如果您使用pip安装,要卸载Docker Compose:

1
pip uninstall docker-compose

收到“Permission denied”错误?

如果您使用上述任一方法收到“权限被拒绝”错误,您可能没有删除docker-compose的正确权限。要强制删除,请将sudo放在上述任一命令之前,然后再次运行。