【问题标题】:How to install docker-compose on Windows如何在 Windows 上安装 docker-compose
【发布时间】:2015-03-26 22:07:14
【问题描述】:

如果我在 boot2docker 中键入以下命令,如 docker 网站所示:

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 呢?

【问题讨论】:

  • 在 Ed 的反馈之后,我编辑了 my answer below:直接在 boot2docker 中安装 docker-compose(而不是尝试在容器中运行)似乎是更强大的解决方案。

标签: windows docker boot2docker docker-compose


【解决方案1】:

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

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


2018 年 11 月 7 日更新:

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

Accordingly to the documentationDocker for WindowsDocker Toolbox 已经包含 Compose 以及其他 Docker 应用程序,因此大多数 Windows 用户不需要单独安装 Compose。


2017 年更新:现在通过 "Docker for Windows" 正式管理(适用于支持 Hyper-V 的 Windows 10)。
请参阅“Install Docker for Windows”。
它确实有一个chocolatey 安装package for Docker,所以:

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

同样,这需要 64 位 Windows 10 专业版、企业版和教育版(1511 年 11 月更新,内部版本 10586 或更高版本)和 Microsoft Hyper-V。

对于其他 Windows,您仍然需要 VirtualBox + Boot2Docker。


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

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


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

警告:根据Ed Morley (edmorley),下面的原始答案(“docker-compose in a container”)似乎有一个错误。

“容器中的docker-compose”方法似乎存在缓存问题(请参阅issue #6: "Changes to docker-compose.yml and Dockerfile not being detected"

Ed recommends:

就目前而言,在 boot2docker 中运行 Python docker-compose 包似乎是 Windows 用户最可靠的解决方案(花了很多时间尝试与替代方案进行斗争)

要从 PyPI 安装 docker-compose,请从 boot2docker 内部运行:

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

为了避免每次重新启动boot2docker VM 时都必须运行上述内容(因为更改不会持续存在),您可以像这样使用bootlocal.sh

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

su docker -c 体操是必需的,因为tce-load 不能作为root 运行,而bootlocal.shroot 运行。一旦#915 是,bootlocal.shchmod 应该是不必要的已修复。
如果需要追加,请将-a 添加到tee 命令,而不是覆盖bootlocal.sh。)

如果您希望使用 docker-compose 的预发布版本,请将 pip install -U docker-compose 替换为 pip install -U docker-compose>=1.3.0rc1 或等效版本。


原答案:

我还通过以下方式在映像中运行 docker-compose(在 Windows boot2docker 上):

从那里,“dc up”或“dc ps”就可以了。在 Windows 上。使用 boot2docker 1.6。

【讨论】:

  • 您甚至不必克隆存储库,只需执行docker build -t docker-compose github.com/docker/compose,docker 就会克隆并构建存储库
  • @thaJeztah 是的。就我而言,docker-compose 是我的 repo (github.com/VonC/b2d) 的子模块,我想将 docker-compose 子模块签出到特定标签,以构建稳定版本。
  • 奇怪,我的 boot2docker 虚拟机即使在运行第二步后也不会持久化 docker-compose 安装echo 'su...
  • @AnthonyF。确实。我只测试了图像选项。您可以在 issue 603 中提及它,尽管在阅读 github.com/boot2docker/boot2docker/issues/… 之后,我会等待 docker 和 boot2docker 1.7。
  • docker-compose 是一个必须安装在主机上的工具,而不是任何虚拟主机上。在撰写本文时,已经存在适用于 Windows 的工作解决方案。见下文。
【解决方案2】:

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

方法如下:

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 虚拟机上,所以你不需要一直 ssh。

【讨论】:

    【解决方案3】:

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

    pip install -U docker-compose
    

    【讨论】:

    • 我的命令实际上是:python -m pip install -U pip
    • 确实可以,但是在运行docker-compose up 时会引发ImportError: No module named 'fcntl'
    • 此解决方案不起作用。安装的包无法使用(我得到与@LaundroMat 相同的错误)。
    • 我能够使用 windows 和 Babun 成功使用 docker-compose。只需按照this guide安装pipbabun,,然后调用pip install -U docker-compose
    • @mcmil 作为记录,不幸的是,我一直遇到同样的问题。 (对我来说问题不大,但当然很可惜)。
    【解决方案4】:

    在 Windows 上安装 Docker Compose(和 Docker)最简单的方法是使用 chocolatey(Windows 的包管理器)包 docker-compose,它应该安装在包 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
    

    作为旁注:你不再需要 Boot2Docker 来在 Windows 上运行 Docker - Docker natively support´s Windows 一段时间了。所以不再需要了。

    【讨论】:

      【解决方案5】:

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

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

      【讨论】:

      • boot2docker 现在在 Windows 上具有原生支持
      • 别名 docker-compose='docker run --rm -it \ -v $(pwd):/app \ -v /var/run/docker.sock:/var/run/docker.袜子\-e COMPOSE_PROJECT_NAME=$(basename $(pwd))\dduportal/docker-compose'
      • 这适用于我的 bash/Cygwin:alias docker-compose="docker run -v \"$(pwd)\":/app dduportal/docker-compose:latest"
      • 在容器中运行可能并不总是有效。在 Ed 的反馈之后,请参阅 my edited answer below
      【解决方案6】:

      boot2docker 版本 >= 1.7.0 have 64 bits userspace。这意味着来自their github repository 的预构建二进制文件开箱即用。

      我已经使用VonC's answer above 中的信息编写了一个脚本,该脚本下载了最新版本(或特定版本,请参见代码中的注释部分)并将其持久化。它只会下载一次文件,但它会在每次启动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
      

      【讨论】:

        【解决方案7】:

        事情取得了进展,最近,我使用以下方法取得了最大的成功,它允许您使用 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。我发现最容易镜像 VM 中的路径,因为它们在主机上,所以我的 docker-compose.yml 文件不会那么混乱。

        【讨论】:

          【解决方案8】:

          我成功关注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

          【讨论】:

            【解决方案9】:

            https://github.com/docker/compose/releases/tag/1.5.0rc3 "Compose 现在可用于 Windows。"

            【讨论】:

              【解决方案10】:

              这是我在 boot2docker 中安装 Compose 的首选答案。如果有人愿意接受 VonC 的建议,即从容器内针对其主机的 Docker 主机运行 Compose,我已经创建了一个熟练工 developer's container,它遵循 Compose 的指导方针并且易于安装和运行。

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

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

              您可以在任何路径上启动一个容器,然后通过简单的运行从那里获取它:

              room
              

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

              room docker-compose up
              

              如果您缺少支持性的 shell 环境,安装一个包含 Git Bash 提示符的适用于 Windows 的 Git 发行版就足够了,或者您可以直接使用来自 MinGWCygwin 之一的提示符。如果没有,您可以随时通过 SSH 连接到您的 Docker 机器并在那里安装。

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 2017-07-28
                • 1970-01-01
                • 2019-05-03
                • 2015-08-05
                • 2020-12-21
                • 1970-01-01
                • 2022-07-09
                • 1970-01-01
                相关资源
                最近更新 更多