macos - for - tutorial docker mac
¿Qué hace la variable DOCKER_HOST? (3)
Soy nuevo en Docker, usando Boot2Docker en OSX. Después de arrancarlo, aparece este mensaje:
To connect the Docker client to the Docker daemon, please set
export DOCKER_HOST=tcp://192.168.59.103:2375
Sin embargo, incluso sin él, los comandos básicos de Docker (p. Ej., Docker docker run hello-world
) funcionan bien.
Las instrucciones de instalación no son muy informativas:
Note: If you see a message in the terminal that looks something like this:
To connect the Docker client to the Docker daemon, please set:
export DOCKER_HOST=tcp://192.168.59.103:2375
you can safely set the evironment variable as instructed.
Sabiendo que es "seguro" no dice por qué es útil.
Lo que no tengo claro:
- ¿Qué es el "cliente" del acoplador?
- ¿Qué es el docker "daemon"?
- ¿Qué es el "host" del docker? (La VM de Boot2Docker en sí?)
¡Señala al host docker! Seguí estos pasos:
$ boot2docker start
Waiting for VM and Docker daemon to start...
..............................
Started.
To connect the Docker client to the Docker daemon, please set:
export DOCKER_HOST=tcp://192.168.59.103:2375
$ export DOCKER_HOST=tcp://192.168.59.103:2375
$ docker run ubuntu:14.04 /bin/echo ''Hello world''
Unable to find image ''ubuntu:14.04'' locally
Pulling repository ubuntu
9cbaf023786c: Download complete
511136ea3c5a: Download complete
97fd97495e49: Download complete
2dcbbf65536c: Download complete
6a459d727ebb: Download complete
8f321fc43180: Download complete
03db2b23cf03: Download complete
Hello world
Ok, creo que lo tengo.
El cliente es el comando de docker
instalado en OS X.
El host es la máquina virtual Boot2Docker.
El daemon es un servicio en segundo plano que se ejecuta dentro de Boot2Docker.
Esta variable le dice al cliente cómo conectarse al daemon.
Al iniciar Boot2Docker, la ventana del terminal que aparece ya tiene configurado DOCKER_HOST
, por eso funcionan los comandos de DOCKER_HOST
. Sin embargo, para ejecutar los comandos de Docker en otras ventanas de terminal, debe establecer esta variable en esas ventanas .
Si no se establece, aparece un mensaje como este:
$ docker run hello-world
2014/08/11 11:41:42 Post http:///var/run/docker.sock/v1.13/containers/create:
dial unix /var/run/docker.sock: no such file or directory
Una forma de solucionar eso sería simplemente hacer esto:
$ export DOCKER_HOST=tcp://192.168.59.103:2375
Pero, como señalaron otros, es mejor hacer esto:
$ $(boot2docker shellinit)
$ docker run hello-world
Hello from Docker. [...]
Para deletrear este comando Bash posiblemente no intuitivo, al ejecutar boot2docker shellinit
devuelve un conjunto de comandos Bash que establecen variables de entorno:
export DOCKER_HOST=tcp://192.168.59.103:2376
export DOCKER_CERT_PATH=/Users/ddavison/.boot2docker/certs/boot2docker-vm
export DOCKER_TLS_VERIFY=1
Por lo tanto, ejecutando $(boot2docker shellinit)
genera esos comandos y luego los ejecuta .
Tras la investigación, también vale la pena señalar que cuando desee comenzar a utilizar Docker en una nueva ventana de terminal, el comando correcto es:
$(boot2docker shellinit)
Yo había probado estos comandos:
>> docker info
Get http:///var/run/docker.sock/v1.15/info: dial unix /var/run/docker.sock: no such file or directory
>> boot2docker shellinit
Writing /Users/ddavison/.boot2docker/certs/boot2docker-vm/ca.pem
Writing /Users/ddavison/.boot2docker/certs/boot2docker-vm/cert.pem
Writing /Users/ddavison/.boot2docker/certs/boot2docker-vm/key.pem
export DOCKER_HOST=tcp://192.168.59.103:2376
export DOCKER_CERT_PATH=/Users/ddavison/.boot2docker/certs/boot2docker-vm
export DOCKER_TLS_VERIFY=1
>> docker info
Get http:///var/run/docker.sock/v1.15/info: dial unix /var/run/docker.sock: no such file or directory
Observe que la información de Docker devolvió ese mismo error. sin embargo .. al usar $(boot2docker shellinit)
...
>> $(boot2docker init)
Writing /Users/ddavison/.boot2docker/certs/boot2docker-vm/ca.pem
Writing /Users/ddavison/.boot2docker/certs/boot2docker-vm/cert.pem
Writing /Users/ddavison/.boot2docker/certs/boot2docker-vm/key.pem
>> docker info
Containers: 3
...