Estoy usando portainer y no puedo administrar puntos finales remotos. Intenté usar la línea de comando para conectarme a los nodos remotos del acoplador, pero recibí un mensaje Cannot connect to the Docker daemon at tcp://<remote_ip>:<port>. Is the docker daemon running?
.
Sí, ellos están corriendo. Me agregué al grupo de acopladores y puedo acceder a los acopladores mediante SSH en los nodos. Sin embargo, no puedo acceder a ningún nodo acoplable de forma remota.
Modifiqué /etc/default
para agregar / descomentarDOCKER_OPTS="--dns 8.8.8.8 --dns 8.8.4.4 -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock"
También modifiqué /etc/init.d/docker
e /etc/init/docker.conf
incluí DOCKER_OPTS="-H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock"
.
Reinicié el servicio de Docker, cerré sesión e inicié sesión varias veces en el proceso, pero aún no puedo conectarme al nodo remoto. Ni siquiera puedo conectarme al nodo local pasando la IP.
¿Qué me perdí? ¿Qué configuración en qué archivo expone la API sobre TCP?
user@hostname:~$ docker -H tcp://<REMOTE_IP>:2375 info
Cannot connect to the Docker daemon at tcp://<REMOTE_IP>:2375. Is the docker daemon running?
user@hostname:~$ docker -H tcp://127.0.0.1:2375 info
Cannot connect to the Docker daemon at tcp://127.0.0.1:2375. Is the docker daemon running?
user@hostname:~$ docker -H tcp://<LOCAL_IP>:2375 info
Cannot connect to the Docker daemon at tcp://<LOCAL_IP>:2375. Is the docker daemon running?
user@hostname:~$
Editar:
Ejecutar ps aux | grep -i docker
devuelve esto -
root 3581 0.1 0.2 596800 41540 ? Ssl 04:17 0:35 /usr/bin/dockerd -H fd://
root 3588 0.0 0.0 653576 14492 ? Ssl 04:17 0:18 docker-containerd -l unix:///var/run/docker/libcontainerd/docker-containerd.sock --metrics-interval=0 --start-timeout 2m --state-dir /var/run/docker/libcontainerd/containerd --shim docker-containerd-shim --runtime docker-runc
ss -ntl
ps aux
en mi respuesta si eso ayuda.Respuestas:
Encontré una solución gracias a la publicación de Ivan Krizsan .
Tuve que editar
/lib/systemd/system/docker.service
en mi sistema Ubuntu 16.04.2 LTS para modificar la línealuego
y todo funcionó :-). El siguiente paso es descubrir cómo proteger el formulario de Docker Daemon que está siendo secuestrado.
fuente
systemctl edit docker.service
y systemctl creará un nuevo archivo con sus ediciones. Esto evita que una actualización borre sus cambios. SystemD fusionará los dos archivos en tiempo de ejecución. Buen documento aquí: digitalocean.com/community/tutorials/…ExecStart=/usr/bin/dockerd -H fd:// -H tcp://0.0.0.0:4243
-H tcp://
configuración por sí mismo, sin el-H fd://
ajuste, no puedo emitir y los comandos del cliente, por ejemplo .., información estibador, versión estibador, etc.El directorio / etc / default es donde los encargados de la distribución colocan sus archivos de configuración. Si instala Docker directamente desde los repositorios de Docker, este directorio no se utilizará.
El directorio / lib / systemd es donde los paquetes instalarán sus archivos systemd, y sobrescribirán cualquier cambio allí en la actualización. Si usa esto, sus cambios se perderán.
Para realizar sus propios cambios en un archivo de unidad systemd que persisten, puede crear un archivo de unidad en /etc/systemd/system/docker.service.d/, por ejemplo, aquí está mi /etc/systemd/system/docker.service estándar. d / override.conf:
Esa anulación simplemente deshabilita todos los indicadores de línea de comando para el demonio dockerd de systemd. Una vez hecho esto, puede anular cada configuración de /etc/docker/daemon.json que utiliza Docker, y dependiendo de la configuración, se puede volver a cargar sin reiniciar el demonio. Por ejemplo, aquí hay un ejemplo /etc/docker/daemon.json:
Para sus propósitos, solo necesita la línea allí para configurar los hosts.
Una parte extremadamente importante del archivo de configuración anterior son las configuraciones de TLS. Si no configura TLS mutuo entre el cliente y el servidor, y abre la ventana acoplable para escuchar en la red, está ejecutando el equivalente de un servidor Telnet abierto con inicios de sesión raíz permitidos sin contraseña. Si prefiere ssh sobre telnet, o si prefiere tener una contraseña para su cuenta raíz, debe configurar TLS. Los puertos de la API de Docker se escanean con frecuencia en Internet, y encontrará malware instalado en su host en poco tiempo si alguna vez omite este paso de configuración.
Los detalles completos sobre cómo configurar las claves TLS para el cliente y el servidor se pueden encontrar en: https://docs.docker.com/engine/security/https/
fuente
Si no desea reconfigurar y reiniciar su Docker Daemon, simplemente puede conectar el socket Unix a un socket TCP utilizando
ncat
(desde elnmap
paquete):Como alternativa, puede usar socat u otras herramientas .
fuente
nohup
y&
Existe una documentación oficial que describe cómo configurar dónde el demonio Docker escucha las conexiones .
Configuración de acceso remoto con archivo de unidad systemd
Use el comando sudo systemctl edit docker.service para abrir un archivo de anulación para docker.service en un editor de texto.
Agregue o modifique las siguientes líneas, sustituyendo sus propios valores.
Guarda el archivo.
Vuelva a cargar la configuración systemctl.
Reinicie Docker.
Verifique si el cambio se cumplió revisando la salida de netstat para confirmar que dockerd está escuchando en el puerto configurado.
Configurar acceso remoto con
daemon.json
Establezca la matriz de hosts en /etc/docker/daemon.json para conectarse al zócalo UNIX y una dirección IP, de la siguiente manera:
Reinicie Docker.
Verifique si el cambio se cumplió revisando la salida de netstat para confirmar que dockerd está escuchando en el puerto configurado.
El cliente Docker respetará la
DOCKER_HOST
variable de entorno para establecer el-H
indicador para el cliente. Use uno de los siguientes comandos:o
fuente