如何在 Windows 上安装 docker-compose

How to install docker-compose on Windows

如果我在 docker 网站上显示的 boot2docker 中键入以下命令:

curl -L https://github.com/docker/compose/releases/download/1.1.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose

当我输入以下命令检查安装是否成功时,我得到:

/usr/local/bin/docker-compose: line 1: syntax error: unexpected newline

那么,如何在 boot2docker 上安装 docker-compose?

他们似乎还没有在 Windows 版本的 Boot2Docker 中添加本机支持。

所以目前,您可以像之前使用 fig 一样使用 docker-compose:run it as a docker container.

2021 年更新:docker-compose 已用 Go 重写,现在是 docker command docker compose

因此,不再需要“安装”它。
参见 docker compose


2018 年 11 月 7 日更新:

On desktop systems like Docker for Mac and Windows, Docker Compose is included as part of those desktop installs.

Accordingly to the documentationDocker 用于 WindowsDocker 工具箱 包括 Compose 和其他 Docker 应用程序,因此大多数 Windows 用户不需要单独安装 Compose。


2017 年更新:现在由 "Docker for Windows".
正式管理(Windows 10 支持 Hyper-V) 参见“Install Docker for Windows”。
它确实有一个 chocolatey installation package for Docker,所以:

choco install docker-for-windows 
# or
choco upgrade docker-for-windows 

同样,这需要 64 位 Windows 10 Pro、Enterprise 和 Education(1511 年 11 月更新,Build 10586 或更高版本)和 Microsoft Hyper-V。

其他Windows,你还需要VirtualBox + Boot2Docker。


更新:docker compose 1.5(2015 年 11 月)应使其正式可用于 Windows(自 RC2 起)。

PR 2230 and PR 2143 这样的请求很有帮助。
Commit 13d5efc 详细介绍了 Windows 二进制文件的官方构建过程。


原始答案(2015 年第一季度至第三季度)。

警告:根据 Ed Morley (edmorley).

,下面的原始答案(“docker-compose 在容器中”)似乎有错误

There appear to be caching issues with the "docker-compose in a container" method (See issue #6: "Changes to docker-compose.yml and Dockerfile not being detected")

Ed recommends:

As such for now, running the Python docker-compose package inside boot2docker seems to be the most reliable solution for Windows users (having spent many hours trying to battle with the alternatives).

To install docker-compose from PyPI, run this from inside boot2docker:

docker@boot2docker:~$ 
tce-load -wi python && curl https://bootstrap.pypa.io/get-pip.py | \
  sudo python - && sudo pip install -U docker-compose

To save having to run the above every time the boot2docker VM is restarted (since changes don't persist), you can use bootlocal.sh like so:

docker@boot2docker:~$ 
echo 'su docker -c "tce-load -wi python" && \
  curl https://bootstrap.pypa.io/get-pip.py | \
  python - && pip install -U docker-compose' | \ 
  sudo tee /var/lib/boot2docker/bootlocal.sh > /dev/null && \
  sudo chmod +x /var/lib/boot2docker/bootlocal.sh

(The su docker -c gymnastics are required since tce-load cannot be run as root, and bootlocal.sh is run as root. The chmod of bootlocal.sh should be unnecessary once #915 is fixed.
Add -a to the tee command if you need to append, rather than overwrite bootlocal.sh.)

If you wish to use a pre-release version of docker-compose, then replace pip install -U docker-compose with pip install -U docker-compose>=1.3.0rc1 or equivalent.


原回答:

我还 运行 docker-compose(在 Windows boot2docker 上)在图像中:

  • 克隆https://github.com/docker/compose in /c/Users/<username>/myproject/compose (in order to have persistence, since /c/Users/<username> is )

  • 构建 docker-合成图像:

      cd /c/Users/<username>/myproject/compose
      # that will put the repo in a detached HEAD, but it does not matter here
      git checkout 1.2.0
      docker build -t docker-compose .
    
  • 添加“dc”别名(在 profile file that I copy to my /home/docker/.ashrc before launching the boot2docker ssh session 中)

      dc='docker run --rm -i -t -v /var/run/docker.sock:/var/run/docker.sock -v `pwd`:`pwd` -w `pwd` docker-compose'
    

从那里开始,'dc up' 或 'dc ps' 就可以了。在 Windows 上。使用 boot2docker 1.6.

您可以使用 pip 在 Windows 上安装 docker-compose:

pip install -U docker-compose

boot2docker 版本 >= 1.7.0 have 64 bits userspace. This means that prebuilt binaries from their github repository 开箱即用。

我利用中的信息写了一个脚本,下载最新版本(或特定版本,见代码注释部分)并持久化。它只会下载一次文件,但会在每次 boot2docker.

启动时将其放在路径中

说明:

  1. boot2docker ssh 来自任何终端。
  2. 粘贴脚本并按回车键。
  3. exit 然后 运行 boot2docker restart && boot2docker ssh
  4. 当盒子重新启动时,运行 docker-compose 看到它用它的命令列表响应。

在Windows上,boot2docker restart命令有第一次失败的趋势。但它只是为了 运行 再次执行该命令。

echo 'if [ ! -f /var/lib/boot2docker/etc/docker-compose-`uname -s`-`uname -m` ]; then
    echo "Download docker-compose..."
    # Download latest version
    curl -L https://github.com/docker/compose/releases/download/$(curl -s -L https://github.com/docker/compose/releases/latest | \
        grep -Eo -m 1 docker/compose/releases/tag/\([0-9.]*\) | \
        grep -o [0-9.]*)/docker-compose-`uname -s`-`uname -m` \
    > /var/lib/boot2docker/etc/docker-compose-`uname -s`-`uname -m`
    # Download fixed version
    # curl -L https://github.com/docker/compose/releases/download/1.3.1/docker-compose-`uname -s`-`uname -m` \
    # > /var/lib/boot2docker/etc/docker-compose-`uname -s`-`uname -m`
    echo "Done!"
fi
echo "Install docker-compose on path..."
cp /var/lib/boot2docker/etc/docker-compose-`uname -s`-`uname -m` /usr/local/bin/docker-compose &&
chmod +x /usr/local/bin/docker-compose
echo "Done!"
' | sudo tee /var/lib/boot2docker/bootlocal.sh > /dev/null && \
sudo chmod +x /var/lib/boot2docker/bootlocal.sh

事情有所进展,最近,我使用以下方法取得了最大的成功,它允许您通过使用 Docker 在 Windows 上 运行 本机。

首先,您需要为 Windows 安装 Docker CLI:

curl -L https://get.docker.com/builds/Windows/x86_64/docker-latest.exe > /usr/bin/docker
chmod +x /usr/bin/docker

接下来,从 Github 存储库构建 docker-compose 映像:

docker build -t docker-compose github.com/docker/compose

然后,简单地为运行容器设置一个别名:

alias docker-compose='docker run --rm -ti -v /var/run/docker.sock:/var/run/docker.sock -v `pwd`:`pwd` -w `pwd` docker-compose'

我已经使用它一段时间了,运行 没有遇到任何问题 -- 功能正是您所期望的,就好像在本地使用二进制文件一样,您只需要确保您的共享文件夹已正确映射到 B2D/Docker-Machine VM。我发现在虚拟机中镜像路径最简单,因为它们在主机上,所以我的 docker-compose.yml 文件不会那么混乱。

运行ning docker-compose 在 Windows 下还有一个解决方案,使用 Babun(著名的 Cygwin shell 端口,具有各种增强功能,包括包管理器)。

方法如下:

1.) 安装Babun 2.) 打开它并安装 Python 和 Pip:

所需的依赖项
pact install python-setuptools 
pact install libxml2-devel libxslt-devel libyaml-devel
curl -skS https://bootstrap.pypa.io/get-pip.py | python
pip install virtualenv
curl -skS https://raw.githubusercontent.com/mitsuhiko/pipsi/master/get-pipsi.py | python

3.) 最后运行

pip install -U docker-compose

解决方案不是我的,取自这里:http://habrahabr.ru/post/260329/

我强烈认为 docker-compose 必须安装在主机上,而不是 boot2docker VM,因此您不需要一直使用 ssh。

我在 this issue on github

之后获得了成功
  • 安装docker-machine;
  • 安装 python(3.4.3 运行良好)
  • 安装pip;
  • pip 后...运行 安装此命令 docker-compose:

    `pip install git+git://github.com/docker/compose.git`
    

不信? watch this proof

https://github.com/docker/compose/releases/tag/1.5.0rc3 "Compose is now available for Windows."

这是我在 boot2docker 中安装 Compose 的 go-to 答案。如果有人想接受 VonC 关于 运行 Compose 在容器内针对其主机的 Docker 主机的建议,我已经创建了一个 journeyman developer's container,它遵循 Compose 的指南并且易于安装和运行.

如果您在 Windows 上有 Bourne shell-like 环境,您可以简单地 运行:

curl -L https://git.io/vuEqk -o /usr/local/bin/room
chmod +x /usr/local/bin/room

您可以在任何路径上启动一个容器,然后只需 运行ning:

从那里获取它
room

您可以选择传递命令参数,因此,如果您发现自己处于具有 Compose 配置文件的工作目录中,这足以启动所有内容,运行ning:

room docker-compose up

如果您缺少支持性的 shell 环境,安装 Windows 的 Git 发行版之一,其中包括 Git Bash 提示就足够了,或者您可以直接使用 MinGW or Cygwin 之一的提示。如果没有,您可以随时通过 SSH 连接到您的 Docker 机器并在那里安装。

在 Windows 上安装 Docker Compose(和 Docker)的最简单方法是使用 chocolatey (a package manager for Windows) package docker-compose, which should be installed after the package docker。这将使您在手动安装时摆脱许多障碍,并为您提供一种更新安装的简便方法。

如果您不熟悉巧克力味,只需 install it - 例如在管理命令行上:

@powershell -NoProfile -ExecutionPolicy Bypass -Command "iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))" && SET "PATH=%PATH%;%ALLUSERSPROFILE%\chocolatey\bin"

现在 chocolatey 已经安装好了,唯一剩下的就是启动管理 Powershell 并执行以下操作:

choco install docker
choco install docker-compose

旁注:Windows - Docker natively support´s Windows 上 运行 Docker 不再需要 Boot2Docker 一段时间了。所以不再需要那个了。