tag run remove hub example compose docker

run - Cómo detectar un puerto daemon docker



docker tag example (5)

He instalado Ubuntu y Docker. Estoy tratando de lanzar el contenedor Raik:

$ DOCKER_RIAK_AUTOMATIC_CLUSTERING=1 DOCKER_RAIK_CLUSTER_SIZE=5 DOCKER_RIAK_BACKEND=leveldb make start-cluster ./bin/start

y recibe el mensaje de error:

Parece que la variable de entorno DOCKER_HOST no se ha establecido. El clúster de Riak no se puede iniciar a menos que se haya configurado correctamente. Por ejemplo:

exportar DOCKER_HOST = "tcp: //127.0.0.1: 2375"

Si pongo

export DOCKER_HOST="tcp://127.0.0.1:2375"

Todos mis otros contenedores dejaron de funcionar y dijeron, que no se puede encontrar el demonio Docker.

Parece que mi Docker Damon usa otro puerto tahn 2375. ¿Cómo puedo comprobarlo?


De forma predeterminada, el daemon docker usará el socket de unix:///var/run/docker.sock (puede verificar este caso haciendo un sudo netstat -tunlp y tenga en cuenta que no hay un proceso de daemon docker escuchando) en cualquier puerto). Se recomienda mantener esta configuración por razones de seguridad, pero parece que Riak requiere que el demonio se ejecute en un socket TCP.

Para iniciar el demonio docker con un socket TCP al que cualquiera puede conectarse, use la opción -H :

sudo docker -H 0.0.0.0:2375 -d &

Advertencia: Esto significa que las máquinas que pueden comunicarse con el demonio a través de ese socket TCP pueden obtener acceso de root a su máquina host.

Documentos relacionados:

http://basho.com/riak-quick-start-with-docker/

https://docs.docker.com/articles/basics/


Hay 2 formas de configurar el puerto daemon docker

1) Configurando en el archivo / etc / default / docker :

DOCKER_OPTS="-H tcp://127.0.0.1:5000 -H unix:///var/run/docker.sock"

2) Configurando en /etc/docker/daemon.json :

{ "debug": true, "hosts": ["tcp://127.0.0.1:5000", "unix:///var/run/docker.sock"] }

Si el socket predeterminado de la ventana acoplable no está configurado, el docker esperará un período infinito.

Waiting for /var/run/docker.sock Waiting for /var/run/docker.sock Waiting for /var/run/docker.sock Waiting for /var/run/docker.sock Waiting for /var/run/docker.sock

NOTA: PERO NO CONFIGURE EN AMBOS ARCHIVOS DE CONFIGURACIÓN , puede ocurrir el siguiente error:

Waiting for /var/run/docker.sock unable to configure the Docker daemon with file /etc/docker/daemon.json: the following directives are specified both as a flag and in the configuration file: hosts: (from flag: [tcp://127.0.0.1:5000 unix:///var/run/docker.sock], from file: tcp://127.0.0.1:5000)

La razón para agregar tanto el puerto de usuario [tcp: //127.0.0.1: 5000] como el socket predeterminado de la ventana acoplable [unix: ///var/run/docker.sock] es que el puerto de usuario permite el acceso a las API de la ventana acoplable mientras que el socket predeterminado habilita el CLI. En caso de que el puerto predeterminado [unix: ///var/run/docker.sock] no se mencione en el archivo / etc / default / docker, puede ocurrir el siguiente error:

# docker ps Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?

Este error no se debe a que la ventana acoplable no se está ejecutando, sino porque el zócalo predeterminado de la ventana acoplable no está habilitado.

Una vez que la configuración esté habilitada, reinicie el servicio de la ventana acoplable y verifique que el puerto de la ventana acoplable esté habilitado o no:

# netstat -tunlp | grep -i 5000 tcp 0 0 127.0.0.1:5000 0.0.0.0:* LISTEN 31661/dockerd

Aplicable para Docker versión 17.04, puede variar según las diferentes versiones de la ventana acoplable.


Intente: -H tcp: //0.0.0.0: 2375 en lugar de -H 0.0.0.0:2375


Ya que también tuve el mismo problema de "Cómo detectar un puerto daemon docker" como el que tenía en OSX y después de una pequeña investigación encontré la respuesta. Pensé en compartir la respuesta aquí para las personas que vienen de osx.

Si visita known-issues ventana acoplable para known-issues de mac y github , encontrará que, de forma predeterminada, el demonio de la ventana acoplable solo escucha en el zócalo unix /var/run/docker.sock y no en tcp. El puerto predeterminado para la ventana acoplable es 2375 (sin cifrar) y 2375 (encriptado) para la comunicación a través de tcp (aunque puede elegir cualquier otro puerto).

En OSX no es sencillo ejecutar el demonio en el puerto tcp. Hacer esto de una manera es usar el contenedor socat para redireccionar la API de Docker expuesta en el socket de dominio Unix al puerto host en OSX.

docker run -d -v /var/run/docker.sock:/var/run/docker.sock -p 127.0.0.1:2375:2375 bobrik/socat TCP-LISTEN:2375,fork UNIX-CONNECT:/var/run/docker.sock

y entonces

export DOCKER_HOST=tcp://localhost:2375

Sin embargo, para el cliente local en Mac OS no es necesario exportar la variable DOCKER_HOST para probar la api.


cree un archivo en /etc/systemd/system/docker.service.d/docker.conf

dentro de docker.conf pega debajo del contenido

[Service] ExecStart= ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock

Tenga en cuenta que si no hay un directorio como docker.service.d y el archivo docker.conf , docker.conf .

después de guardar esta configuración de recarga de archivos systemctl daemon-reload y reiniciar systemctl restart docker.service

después de reiniciar, puede ver el puerto en systemctl status docker.service como /usr/bin/dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock

Espero que esto pueda ayudar

¡Gracias!