如何在Windows上安装docker-compose

如果我在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 

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

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

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

2017年更新:现在已经正式管理(支持Hyper-V的Windows 10)和“Docker for Windows” 。
请参阅“ 安装Docker for Windows ”。
它有一个Docker的巧克力安装包 ,所以:

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

再次,这需要一个64位Windows 10专业版,企业和教育(十一月1511更新,生成10586或更高版本)和Microsoft Hyper-V。

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


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

像PR 2230和PR 2143这样的求助请求得到了帮助。
Commit 13d5efc详细介绍了Windows二进制的官方Build过程。


原始答复(2015年第1季度至第3季度)。

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

“docker-compose in a container”方法似乎存在缓存问题(参见问题6:“docker-compose.yml和Dockerfile的更改未被检测到” )。

埃德建议 :

就目前而言,在boot2docker运行Python boot2docker docker-compose软件包似乎是Windows用户最可靠的解决方案(花费了好几个小时的时间试图与替代方案进行斗争)

从PyPI安装docker-compose,从boot2docker里面boot2docker

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

为了节省每次boot2docker虚拟机重新启动时运行上面的boot2docker (因为更改不会持久),可以使用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.sh运行,而bootlocal.shroot bootlocal.sh运行。一旦固定了#915 , bootlocal.shchmod应该是不必要的。
如果需要追加,请将-a添加到tee命令,而不是覆盖bootlocal.sh 。)

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


原始答案:

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

  • /c/Users/<username>/myproject/compose克隆https://github.com/docker/compose (为了拥有持久性,因为/c/Users/<username>是自动挂载的,所以当我使用VirtualBox其扩展包 )
  • 建造码头 – 构图图像:

     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 . 
  • 在启动boot2docker ssh会话之前添加一个“ dc ”别名(在我复制到我的/home/docker/.ashrcprofile文件中)。

     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。

在Windows下使用Babun(Cygwin shell的一个着名的端口,包括各种增强功能,包管理器)运行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。

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

 pip install -U docker-compose 

看来他们还没有在Windows版本的Boot2Docker中添加本地支持。

因此,目前,您可以像以前一样使用docker-compose: 将其作为码头容器运行 。

boot2docker版本> = 1.7.0 有64位用户空间 。 这意味着从他们的github仓库中预先建立的二进制文件是开箱即用的。

我已经使用VonC上面的答案中的信息来编写一个脚本,下载最新版本(或特定版本,请参阅代码中的注释部分)并保留它。 它只会下载一次文件,但是它会在每次启动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文件不是那么混乱。

在github上,我得到了成功

  • 安装码头机 ;
  • 安装python (3.4.3工作正常)
  • 安装pip ;
  • 在点子之后…运行这个命令来安装docker-compose:

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

不相信? 看这个证明

https://github.com/docker/compose/releases/tag/1.5.0rc3 “撰写现在可用于Windows”。

这是我在boot2docker内部安装Compose的boot2docker 如果有人愿意接受VonC的建议,在容器内部对其主机的Docker主机运行Compose,我已经创建了一个熟练的开发人员容器 ,遵循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发行版就足够了,或者你可以直接使用MinGW或者Cygwin的提示符。 如果没有,你可以随时SSH到你的Docker机器并安装在那里。

在Windows上安装Docker Compose(和Docker)最简单的方法就是使用docker-compose包中的巧克力 (一个用于Windows的包管理器),该包应该在包docker之后安装。 这将使您从手动安装时的许多障碍中解脱出来,并为您提供更新安装的简单方法。

如果您对巧克力不熟悉,只需将其安装在管理命令行上:

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

现在巧克力已经安装好了,唯一剩下的就是启动一个管理Powershell,并且做:

 choco install docker choco install docker-compose 

作为一个旁注:您不需要Boot2Docker就可以在Windows上运行Docker – Docker原生支持Windows一段时间了。 所以没有必要了。