Cómo instalar docker-compose en Windows


Si escribo los siguientes comandos en boot2docker como se muestra en el sitio web de 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

Cuando escribo los siguientes comandos para comprobar si la instalación se ha realizado correctamente, obtengo:

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

Entonces, ¿cómo puedo instalar docker-compose en boot2docker ?

Author: Josh, 2015-03-27

10 answers

Actualización 2017: ahora se administra oficialmente (para Windows 10 compatible con Hyper-V) con "Docker for Windows".
Consulte " Instalar Docker para Windows".
Tiene un paquete de instalación chocolatey para Docker , así que:

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

Nuevamente, esto requiere un Windows 10 Pro, Enterprise y Education de 64 bits (actualización de noviembre de 1511, Compilación 10586 o posterior) y Microsoft Hyper-V.

Para otras ventanas, todavía necesita VirtualBox + Boot2Docker.


Actualización: docker compose 1.5 (Nov 2015) debería estar oficialmente disponible para Windows (desde RC2).

Las solicitudes de extracción como PR 2230 y PR 2143 ayudaron.
Commit 13d5efc detalla el proceso oficial de compilación para el binario de Windows.


Respuesta original (Q1-Q3 2015).

Advertencia: la respuesta original ("docker-compose en un contenedor") a continuación parece tener un error, de acuerdo con Ed Morley (edmorley).

Parece haber problemas de almacenamiento en caché con el método "docker-compose en un contenedor" (Consulte problema #6: "Cambios en docker-compose.yml y Dockerfile no se detectan")

Ed recomienda :

Como tal por ahora, ejecutar el paquete Python docker-compose dentro de boot2docker parece ser la solución más confiable para los usuarios de Windows (después de haber pasado muchas horas tratando de luchar con las alternativas).

Para instalar docker-compose desde PyPI, ejecute esto desde boot2docker:

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

Para evitar tener que ejecutar lo anterior cada vez que se reinicie la máquina virtual boot2docker (ya que los cambios no persisten), puede usar bootlocal.sh de la siguiente manera:

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

(La su docker -c gimnasia se requiere ya que tce-load no se puede ejecutar como root, y bootlocal.sh se ejecuta como root. El chmod de {[11] } debería ser innecesario una vez #915 está arreglado.
Añade -a al comando tee si necesita anexar, en lugar de sobrescribir bootlocal.sh.)

Si desea utilizar una versión preliminar de docker-compose, reemplace pip install -U docker-compose por pip install -U docker-compose>=1.3.0rc1 o equivalente.


Respuesta original:

También corro docker-compose (en Windows boot2docker) en una imagen de:

A partir de ahí, un 'dc up' o 'dc ps' simplemente funciona. En Windows. Con boot2docker 1.6.

 37
Author: VonC,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 12:26:38

Hay una solución más de ejecutar docker-compose bajo Windows usando Babun (un famoso port de Cygwin shell con todo tipo de mejoras, incluyendo un gestor de paquetes).

Aquí está cómo:

1.) Instalar Babun 2.) Ábralo e instale las dependencias necesarias para Python y 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. Finalmente ejecutar

pip install -U docker-compose

La solución no es mía, tomada de aquí: http://habrahabr.ru/post/260329/

Tengo una fuerte opinión, que docker-compose debe estar instalado en un host, no en una máquina virtual boot2docker, por lo que no necesita ssh todo el tiempo.

 11
Author: Ross Ivantsiv,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-07-30 09:50:11

Puede instalar docker-compose en Windows con pip:

pip install -U docker-compose
 6
Author: Peter,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-05-05 18:53:54

Parece que aún no han agregado soporte nativo a la versión de Windows de Boot2Docker.

Así que por el momento, puede usar docker-compose como lo ha hecho con fig anteriormente: ejecútelo como un contenedor docker.

 5
Author: fayndee,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-03-30 10:03:12

boot2docker versiones >= 1.7.0 tiene 64 bits de espacio de usuario . Esto significa que los binarios precompilados de su repositorio github están funcionando desde el primer momento.

He utilizado la información en La respuesta de VonC anterior para escribir un script que descarga la última versión (o una versión específica, ver la parte comentada en el código) y la persiste. Solo descargará el archivo una vez, pero lo pondrá en la ruta en cada inicio de boot2docker.

Instrucciones:

  1. boot2docker ssh desde cualquier terminal.
  2. pegue el script y pulse intro.
  3. exit y luego ejecutar boot2docker restart && boot2docker ssh
  4. Cuando se reinicie la caja, ejecute docker-compose para ver que responde con su lista de comandos.

En Windows, el comando boot2docker restart tiende a fallar la primera vez. Pero es sólo para ejecutar ese comando de nuevo.

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
 5
Author: D. Josefsson,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 11:55:03

Las cosas han progresado y últimamente, he tenido el mayor éxito con el siguiente método, que le permite ejecutarlo de forma nativa en Windows, mediante el uso de Docker.

Primero, querrá instalar la CLI de Docker para Windows:

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

A continuación, compile la imagen docker-compose desde el repositorio Github:

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

Luego, simplemente configure un alias para ejecutar el contenedor:

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

He estado usando esto por un tiempo y no he tenido ningún problema the la funcionalidad es exactamente lo que esperaría como si utilizara el binario de forma nativa, solo necesita asegurarse de que sus carpetas compartidas estén asignadas correctamente a la VM B2D/Docker-Machine. Me resulta más fácil reflejar las rutas en la VM como están en el host, por lo que mi docker-compose.el archivo yml no es tan confuso.

 4
Author: CashIsClay,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-07-13 16:02:53

Tengo éxito después de este problema en github

  • instalar docker-machine ;
  • install python (3.4.3 funcionó bien)
  • instalar pip;
  • Después de pip... ejecute este comando para instalar docker-compose:

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

No creer? mira esta prueba

 4
Author: Thiago Martins,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-11-03 20:56:05

Https://github.com/docker/compose/releases/tag/1.5.0rc3 "Compose ya está disponible para Windows."

 3
Author: FDisk,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-11-01 18:53:01

Esta ha sido mi respuesta para instalar Compose dentro de boot2docker. Si a alguien le gustaría entretener la sugerencia de VonC de ejecutar Compose contra el host Docker de su host desde dentro de un contenedor, he creado un contenedor de desarrollador journeyman que sigue las directrices de Compose y es fácil de instalar y ejecutar.

Si tiene un entorno similar al shell de Bourne en Windows, simplemente puede ejecutar:

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

Puede iniciar un contenedor en cualquier camino y tomarlo desde allí simplemente ejecutando:

room

Opcionalmente puede pasar argumentos de comando, por lo que si se encuentra en un directorio de trabajo que tiene un archivo de configuración de Compose, esto sería suficiente para poner todo en marcha:

room docker-compose up

Si le falta un entorno de shell de apoyo, instalar una de las distribuciones de Git para Windows que incluyen el prompt de Git Bash sería suficiente o puede usar directamente los prompt de uno de los MinGW o Cygwin. Si no, puedes siempre SSH en su máquina Acoplable e instalar allí.

 2
Author: Filip Dupanović,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-01-06 13:09:48

La forma más fácil de instalar Docker Compose (y Docker) en Windows, es usar el paquete chocolatey (un gestor de paquetes para Windows) docker-compose, que debe instalarse después del paquete docker. Esto le liberará de los muchos obstáculos, al instalarlo manualmente y le da una manera fácil de actualizar su instalación.

Si no está familiarizado con chocolatey, simplemente instálelo - por ejemplo, en una línea de comandos administrativa con:

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

Ahora que chocolatey está instalado, lo único que queda es encender un Powershell administrativo y hacer:

choco install docker
choco install docker-compose

Como nota lateral: Ya no necesita Boot2Docker para ejecutar Docker en Windows - Docker soporta de forma nativa Windows desde hace algún tiempo. Así que ya no hay necesidad de eso.

 2
Author: jonashackt,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-22 09:52:27