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 ?
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")
Como tal por ahora, ejecutar el paquete Python
docker-compose
dentro deboot2docker
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 usarbootlocal.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 quetce-load
no se puede ejecutar comoroot
, ybootlocal.sh
se ejecuta comoroot
. Elchmod
de {[11] } debería ser innecesario una vez #915 está arreglado.
Añade-a
al comandotee
si necesita anexar, en lugar de sobrescribirbootlocal.sh
.)Si desea utilizar una versión preliminar de docker-compose, reemplace
pip install -U docker-compose
porpip install -U docker-compose>=1.3.0rc1
o equivalente.
Respuesta original:
También corro docker-compose
(en Windows boot2docker) en una imagen de:
- clonación https://github.com/docker/compose en
/c/Users/<username>/myproject/compose
(para tener persistencia, ya que/c/Users/<username>
es montado automáticamente, cuando uso VirtualBox con su paquete de extensión ) -
Construyendo la imagen docker-compose:
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 .
-
Añadiendo un alias'
dc
' (en unprofile
que yo copio a mi/home/docker/.ashrc
antes de iniciar la sesión boot2docker ssh.)dc='docker run --rm -i -t -v /var/run/docker.sock:/var/run/docker.sock -v `pwd`:`pwd` -w `pwd` docker-compose'
A partir de ahí, un 'dc up
' o 'dc ps
' simplemente funciona. En Windows. Con boot2docker 1.6.
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.
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
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.
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:
-
boot2docker ssh
desde cualquier terminal. - pegue el script y pulse intro.
-
exit
y luego ejecutarboot2docker restart && boot2docker ssh
- 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
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.
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
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."
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í.
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.
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