Comprendí que la limitación principal de ejecutar Docker en otros sistemas operativos era que los contenedores de red de Linux lo hacían posible. (Ciertamente para Mac).
Recientemente, Microsoft anunció una versión beta de un modo de usuario Linux de Ubuntu que se ejecuta de forma nativa en Windows 10. Esto puede ejecutar binarios compilados en formato ELF en Windows (a diferencia de Cygwin, que requiere una compilación).
Mi pregunta es: ¿puede ejecutar Docker de forma nativa en el nuevo espacio de usuario bash de Windows 10 (Ubuntu)?
bash
espacio de usuario. Es un espacio de usuario de Linux real y bastante completo, pero sin X Windows, es decir, solo texto. Decir "bash" comunica bastante bien la limitación de solo texto ..Respuestas:
Puede usar Docker Desktop para Windows como motor y Docker para Linux como cliente en WSL en Ubuntu / Debian en Windows. Conéctelos a través de TCP.
Instale Docker Desktop para Windows: https://hub.docker.com/editions/community/docker-ce-desktop-windows Si desea utilizar Contenedores de Windows en lugar de Contenedores de Linux, el cliente de Docker de Linux puede administrar ambos contenedores de tipo. El espacio de usuario bash.
Desde la versión 17.03.1-ce-win12 (12058) debe marcar Exponer daemon en tcp: // localhost: 2375 sin TLS para permitir que el cliente Linux Docker continúe comunicándose con el demonio Windows Docker por TCP
Sigue estos pasos:
o
Para hacerlo permanente:
Agregue las variables correspondientes a .bashrc
Por supuesto, puede instalar docker-compose
O usando python pip
Y la finalización de Bash. La mejor parte:
Lo probé con la versión 2.1.0.1 (37199) de Docker Desktop con Hyper-V:
Volúmenes
Tenga cuidado al agregar volúmenes. La ruta
C:\dir
será visible como/mnt/c/dir
en WSL y como/c/dir/
por el motor Docker. Puedes superarlo permanentemente:Debe salir y volver a cargar WSL después de realizar el cambio en wsl.conf para que WSL lea sus cambios en el inicio.
ACTUALIZAR
de: Novedades para la línea de comandos en Windows 10 versión 1803
ACTUALIZAR
Este script y el uso de Sockets Unix se incluyeron en la configuración pengwin de Pengwin.
Saludos
fuente
docker.exe
directamente para consultar / interactuar con el subsistema de Docker. Sin embargo, tenga en cuenta que la ventana acoplable para Windows utilizará las variables y configuraciones de Windows.A partir de ahora (abril de 2016) la respuesta es:
Todavía no lo sabemos (pero probablemente no).
Los hechos
La especulacion
Entonces, la pregunta es si las llamadas al sistema que necesita Docker (para chroot y espacios de nombres, entre otras cosas) se implementaron o no. La respuesta es que es probable que "no". Docker requiere una funcionalidad bastante sofisticada (y específica de Linux) para la gestión de procesos y recursos, y el aislamiento de procesos. Si bien es probable que sea posible replicar todo esto en Windows, sería mucho trabajo, y dado que el objetivo de esta característica de Windows parece ser ejecutar programas de espacio de usuario de Linux, parece poco probable que hicieran todo el trabajo (y lo mantuvieran en secreto) .
Sin embargo, no hay información definitiva de ninguna manera, por lo que puedo decir.
Puertos Docker existentes
Por supuesto, si Microsoft decide que desean soporte Docker en Windows 10, probablemente podrán ofrecerlo. Hay algunos precedentes para portar Docker a un kernel diferente:
fuente
La primera vista previa de información privilegiada fue lanzada ayer. Intenté instalar Docker pero falla con lo siguiente:
Parece que, para la primera vista previa, actualmente no funciona. Sin embargo, como muchas personas han especulado, puede funcionar en una versión futura.
fuente
docker ps
error con:Get http:///var/run/docker.sock/v1.18/containers/json: dial unix /var/run/docker.sock: setsockopt: invalid argument. Are you trying to connect to a TLS-enabled daemon without TLS?
No, esto no es posible.
Docker necesita varias cosas para ejecutar contenedores:
Estas son todas las características del núcleo que se implementan en Linux. Desafortunadamente, la mayoría de ellos no tienen una característica similar en Windows para usar como reemplazo (ni en el subsistema Linux que Microsoft implementó en el kernel de Windows). Todos estos deben ser proporcionados por el sistema operativo.
fuente
chroot
, tenga en cuenta que el entorno de Ubuntu ya tiene una raíz diferente que el WIN32.A partir de la Actualización del creador (lanzada públicamente el 13 de junio de 2017), puede ejecutar el ejecutable nativo de Windows directamente en WSL. Esto significa que si ya ha instalado Docker para Windows , simplemente puede invocar los
docker
archivos binarios instalados enC:\Program Files
. Ya que terminan en.exe
la opción más fácil es crear alias. Algo como lo siguiente en su.bashrc
debería funcionar:Esto crea alias para todos los archivos en el
DOCKER_BIN
directorio:Una advertencia: recibirá un mensaje de error como " No se puede traducir el directorio de trabajo actual " si se ejecuta desde un directorio de Linux. Simplemente
cd
en un directorio de Windows (por ejemplo/mnt/c/Users/YourUsername
) y debería ser bueno.fuente
docker
binario de Windows , y solo lo haces a través del shell de Linux. No estoy seguro de si hay una buena manera de lograrlo.Una vez que se publique Docker 1.12 y se separe el cliente Docker de Linux, debería poder ejecutar el cliente docker en Windows 10 bash.
Esto puede no parecer mucho dado que tiene un cliente Docker Windows, pero es útil si tiene cadenas de herramientas de Linux que incluyen docker por su funcionalidad del lado del cliente.
fuente
En Windows 10, versión 1607, compilación 1493.10, puede instalarlo con éxito en Ubuntu Bash, pero no funciona :(
Una simple "versión acoplable" le dirá:
Si luego ejecuta "sudo docker -d", obtendrá el siguiente error:
Así que este es definitivamente un tapón desde el lado de bash.
Sin embargo, puede instalar Docker para Windows y funciona de maravilla, obviamente puede implementar servidores Linux y todo lo que necesita.
fuente
A partir de septiembre de 2016, no.
Todas las implementaciones actuales de Docker en Windows usan virtualización, Docker 1.12 usa un hipervisor en Windows, lo que elimina la ventaja de la contenedorización sobre la virtualización.
Docker necesita más que solo usar llamadas a sistemas Linux.
Necesita grupos de control de procesos (cgroups), un sistema de archivos apilable (aufs), además de otros sistemas basados en Linux fuera del núcleo.
Ni cgroups ni aufs están nativos en el kernel de Windows 10.
Aquí hay una implementación de Windows Server 2016: https://msdn.microsoft.com/en-gb/virtualization/windowscontainers/quick_start/quick_start_windows_server ... pero esto solo ejecutará algunos servicios de Windows, por ejemplo IIS, y no Ubuntu
fuente
Docker no funciona actualmente en la compilación actual (14316), suponiendo que pueda instalarlo.
fuente
De: https://blog.docker.com/2016/07/docker-for-mac-and-windows-production-ready/
fuente