3 votos

¿Cómo lanzar un contenedor de Docker desde la CLI en MacOS (por ejemplo, `docker run ...`)?

¿Cómo puedo iniciar un contenedor de Docker desde la línea de comandos en MacOS?

En Debian Linux, puedo ejecutar los siguientes comandos para instalar Docker, iniciar un nuevo contenedor de Docker basado en la última versión de Debian y obtener una terminal dentro de ese contenedor

# instalar de forma segura docker y permitir que nuestro usuario interactúe con él
sudo apt-get install docker.io
sudo bash -c 'gpasswd -a "${SUDO_USER}" docker'
su - `whoami`

# descargar y ejecutar "de forma segura" el último contenedor de Debian
# * https://security.stackexchange.com/q/238529/213165
export DOCKER_CONTENT_TRUST=1
docker run --rm -it --entrypoint /bin/bash debian:stable-slim

En MacOS, puedo (de forma insegura) instalar Docker de la siguiente manera

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
brew install --cask docker

Pero luego obtengo errores de comando no encontrado al intentar ejecutar un nuevo contenedor (tanto en zsh como en bash)

usuario@equipo ~ % export DOCKER_CONTENT_TRUST=1
usuario@equipo ~ % docker run --rm -it --entrypoint /bin/bash debian:stable-slim 
zsh: command not found: docker
usuario@equipo ~ % bash

La shell interactiva predeterminada es ahora zsh.
Para actualizar su cuenta para usar zsh, ejecute `chsh -s /bin/zsh`.
Para más detalles, visite https://support.apple.com/kb/HT208050.
bash-3.2$ export DOCKER_CONTENT_TRUST=1
bash-3.2$ docker run --rm -it --entrypoint /bin/bash debian:stable-slim 
bash: docker: command not found
bash-3.2$ 

Tenga en cuenta que esta es una máquina sin cabeza sin acceso a la interfaz gráfica de usuario. El único acceso proporcionado es a través de ssh (con sudo para permisos de root).

¿Cómo puedo iniciar e ingresar a un nuevo contenedor de Docker desde la línea de comandos en MacOS?

2 votos

¿Y qué instala el barril? ¿Dónde coloca los binarios? ¿Están estos binarios en tu $RUTA?

0 votos

@MarcWilson Busqué en todo el sistema de archivos (con find) y no puedo encontrar un ejecutable llamado docker en ningún lugar. De ahí esta pregunta. Imagino que hay algún paso extraño no documentado que me estoy perdiendo. Probablemente sea trivial con la interfaz gráfica, pero no tengo idea de cómo proceder solo con CLI.

1 votos

Pero eso no es lo que te pregunté. ¿Qué instala el barril y dónde lo instala?

0voto

Michael Altfield Puntos 143

Según tengo entendido, Docker no se puede instalar en una máquina sin cabeza que ejecute MacOS.

Finalmente me rendí y le pedí a alguien que conectara un maldito monitor al Mac Mini en el centro de datos. Cuando lo hicieron, vieron una ventana que decía:

"Docker" es una aplicación descargada de Internet. ¿Seguro que quieres abrirlo?

Homebrew Cask descargó este archivo el 3 de mayo de 2022 desde www.docker.com. Apple lo revisó en busca de software malicioso y no se detectó ninguno.

Es realmente molesto que no se haya dado ninguna salida por parte de Apple en la CLI para indicar esto, pero en fin.

Me di cuenta de que, para futuras referencias, podía evitar esto usando la CLI. Puedes hacerlo de la siguiente manera:

xattr -r -d com.apple.quarantine /Applications/Docker.app

Ejecuté sudo open /Applications/Docker.app de nuevo. Esta vez salió con un mensaje de error 1

LSOpenURLsWithRole() failed with error -600 for the file /Applications/Docker.app.

En ese punto, me rendí con la CLI. En la GUI apareció una ventana que decía:

Docker desktop necesita acceso privilegiado.

Docker Desktop necesita acceso privilegiado para instalar sus componentes de red y enlaces a las aplicaciones de Docker.

Se te pedirá tu contraseña.

Sólo hice clic en "OK" y escribí mi contraseña en la GUI.

Después de hacer eso, el binario de Docker estaba disponible

user@host ~ % ls /usr/local/bin/docker
/usr/local/bin/docker
user@host ~ %

user@host ~ % export DOCKER_CONTENT_TRUST=1

user@host ~ % docker run --rm -it --entrypoint /bin/bash debian:stable-slim 
docker: Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?.
See 'docker run --help'.
user@host ~ % 

El error anterior se resolvió marcando "Acepto los términos" y haciendo clic en Aceptar en un ridículo TdC que también parece estar disponible sólo en la GUI :facepalm:

Después de eso, volví a abrir Docker de nuevo

open -a Docker

Otra vez, se cerró inmediatamente y no se imprimió ninguna salida en la terminal. Pero en la GUI se abrió una ventana que decía que Docker se estaba iniciando. Después de medio minuto o algo así, finalmente pude iniciar un contenedor maldito

user@host ~ % docker run --rm -it --entrypoint /bin/bash debian:stable-slim
Unable to find image 'debian:stable-slim' locally
docker.io/library/debian@sha256:3d412a8a2e0f087738e6185c5cddab08827880a23e5bd9dc8b2494d89e4b33fd: Pulling from library/debian
2bc8f4ca4fd1: Pull complete 
Digest: sha256:3d412a8a2e0f087738e6185c5cddab08827880a23e5bd9dc8b2494d89e4b33fd
Status: Downloaded newer image for debian@sha256:3d412a8a2e0f087738e6185c5cddab08827880a23e5bd9dc8b2494d89e4b33fd
Tagging debian@sha256:3d412a8a2e0f087738e6185c5cddab08827880a23e5bd9dc8b2494d89e4b33fd as debian:stable-slim
root@4d255f94ce06:/# 

Actualización

Descubrí que hay una página de documentación con los comandos para instalar Docker desde la CLI

xattr -r -d com.apple.quarantine /Applications/Docker.app
/Applications/Docker.app/Contents/MacOS/install --accept-license --user=`whoami`
sudo /Applications/Docker.app/Contents/MacOS/Docker --unattended --install-privileged-components
open -a /Applications/Docker.app

Pero no he probado esto.

0 votos

He presentado un informe de error sobre esto github.com/docker/for-mac/issues/6504

0 votos

sudo open whatever.app generalmente fallará porque el usuario que ejecuta la aplicación será diferente del usuario "dueño" de la pantalla, lo que resultará en el error -600 que obtienes. Esto no está relacionado con Docker.

0voto

Wolfram Kriesing Puntos 1141

Aunque no he utilizado esto tan extensamente como he utilizado Docker Desktop, puedes instalar Colima junto con las herramientas de la comunidad de Docker.

Ambos están disponibles en Homebrew y una vez instalados, pueden ejecutarse simplemente de la siguiente manera:

brew install colima docker
colima start

Una vez que se haya iniciado la máquina virtual de Colima, los comandos regulares de Docker CLI funcionarán sin problemas. Por ejemplo, para iniciar un contenedor de Alpine y obtener una shell:

docker run -it alpine

Colima también admite el soporte (actualmente) experimental de Rosetta en Linux que hace posible utilizar la tecnología de Rosetta para ejecutar imágenes de Docker de Intel en Apple Silicon.

colima start --vz-rosetta

QEMU está disponible por defecto, si tienes dificultades con Rosetta.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X