Tras la actualización, docker no puede comunicarse con el exterior

Me desperté esta mañana con informes de que mi servidor Discourse estaba “caído”.

Pude conectarme por SSH al servidor sin problemas, noté que había algunas actualizaciones de seguridad que debían aplicarse, las apliqué con apt full-upgrade y reinicié el servidor con reboot.

Tardó un poco en volver a estar en línea, pero cuando lo hizo, verifiqué que el contenedor Docker de Discourse estuviera en ejecución. Extrañamente, no hubo ningún problema.

Intenté detenerlo y reiniciarlo con ./launcher app stop y ./launcher app start. No sirvió de nada.

Intenté hacer un ./launcher app rebuild y obtuve el siguiente error.

fatal: unable to access 'https://github.com/discourse/pups.git/': Could not resolve host: github.com
d1412324832190f43a2d51b5f10c53d6fa671056f91d0be2178d17a5ba1ab692

Sé que esto no es mucho en qué basarse, pero estoy atascado. Cualquier sugerencia sería muy apreciada.

Gracias

1 me gusta

Esto sugiere algún tipo de error de red. ¿Quizás Docker no puede acceder al mundo exterior?

¿Alguna idea sobre cómo verificarlo?

Intenta:

docker run --rm -i debian ping -c 1 github.com

Deberías obtener algo como:

○ → docker run --rm -i debian ping -c 1 github.com
PING github.com (140.82.113.3) 56(84) bytes of data.
64 bytes from lb-140-82-113-3-iad.github.com (140.82.113.3): icmp_seq=1 ttl=49 time=44.8 ms

--- estadísticas de ping a github.com ---
1 paquete transmitido, 1 recibido, 0% de pérdida de paquetes, tiempo 0ms
rtt min/avg/max/mdev = 44.797/44.797/44.797/0.000 ms
3 Me gusta

Sí… eso devuelve
ping: github.com: Fallo temporal en la resolución del nombre

No estoy seguro de qué ha cambiado. No tengo idea de cómo solucionarlo.

¿Eso funciona fuera de Docker?

1 me gusta

Puedo acceder a GitHub desde fuera de Docker.

ping github.com
PING github.com (192.30.255.113) 56(84) bytes of data.
64 bytes from lb-192-30-255-113-sea.github.com (192.30.255.113): icmp_seq=1 ttl=52 time=23.3 ms
64 bytes from lb-192-30-255-113-sea.github.com (192.30.255.113): icmp_seq=2 ttl=52 time=23.3 ms

Inténtalo:

  • reiniciar Docker
  • docker run --rm -i debian cat /etc/resolv.conf para ver qué hay
2 Me gusta

Parece que es Google

# Archivo resolv.conf(5) dinámico para el resolvedor de glibc(3) generado por resolvconf(8)
#     NO EDITE ESTE ARCHIVO A MANO; SUS CAMBIOS SERÁN SOBRESCRITOS
# 127.0.0.53 es el resolvedor provisional de systemd-resolved.
# Ejecute "systemd-resolve --status" para ver detalles sobre los servidores de nombres reales.

nameserver 8.8.8.8
nameserver 8.8.4.4

@supermathie No estoy seguro si esto tiene algo que ver, pero en ./launcher logs app veo

[Tue 01 Dec 2020 07:07:13 PM UTC] Consulte https://curl.haxx.se/libcurl/c/libcurl-errors.html para el código de error: 6
[Tue 01 Dec 2020 07:07:13 PM UTC] No se pudo inicializar la API.
[Tue 01 Dec 2020 07:07:13 PM UTC] Los dominios no han cambiado.
[Tue 01 Dec 2020 07:07:13 PM UTC] Omitido. Próxima hora de renovación: Sat Dec 26 00:31:17 UTC 2020
[Tue 01 Dec 2020 07:07:13 PM UTC] Agregue '--force' para forzar la renovación.
[Tue 01 Dec 2020 07:07:13 PM UTC] Instalando clave en: /shared/ssl/community.acescentral.com.key
[Tue 01 Dec 2020 07:07:13 PM UTC] Instalando cadena completa en: /shared/ssl/community.acescentral.com.cer
[Tue 01 Dec 2020 07:07:13 PM UTC] Ejecutando comando de recarga: sv reload nginx
fail: nginx: runsv no está en ejecución
[Tue 01 Dec 2020 07:07:13 PM UTC] Error de recarga para :
[Tue 01 Dec 2020 07:07:33 PM UTC] Consulte https://curl.haxx.se/libcurl/c/libcurl-errors.html para el código de error: 6
[Tue 01 Dec 2020 07:07:34 PM UTC] No se pudo inicializar la API.
[Tue 01 Dec 2020 07:07:34 PM UTC] Los dominios no han cambiado.
[Tue 01 Dec 2020 07:07:34 PM UTC] Omitido. Próxima hora de renovación: Sat Dec 26 00:31:20 UTC 2020
[Tue 01 Dec 2020 07:07:34 PM UTC] Agregue '--force' para forzar la renovación.
[Tue 01 Dec 2020 07:07:34 PM UTC] Instalando clave en: /shared/ssl/community.acescentral.com_ecc.key
[Tue 01 Dec 2020 07:07:34 PM UTC] Instalando cadena completa en: /shared/ssl/community.acescentral.com_ecc.cer
[Tue 01 Dec 2020 07:07:34 PM UTC] Ejecutando comando de recarga: sv reload nginx
fail: nginx: runsv no está en ejecución
[Tue 01 Dec 2020 07:07:34 PM UTC] Error de recarga para :
Se inició runsvdir, el PID es 458
chgrp: grupo no válido: 'syslog'
ok: run: redis: (pid 473) 0s
ok: run: postgres: (pid 470) 0s
rsyslogd: imklog: no se pudo abrir el registro del kernel (/proc/kmsg): Operación no permitida.
rsyslogd: activación del módulo imklog fallida [v8.1901.0 consulte https://www.rsyslog.com/e/2145 ]
PID del supervisor: 471 PID de unicorn: 497

¿Cuál es tu versión de Docker y cómo la instalaste? ¿Y qué Ubuntu estás ejecutando?

Cliente:
 Versión:           19.03.8
 Versión API:       1.40
 Versión de Go:     go1.13.8
 Commit de Git:     afacb8b7f0
 Compilado:         Wed Oct 14 19:43:43 2020
 SO/Arquitectura:   linux/amd64
 Experimental:      false

Servidor:
 Motor:
  Versión:          19.03.8
  Versión API:      1.40 (versión mínima 1.12)
  Versión de Go:    go1.13.8
  Commit de Git:    afacb8b7f0
  Compilado:        Wed Oct 14 16:41:21 2020
  SO/Arquitectura:  linux/amd64
  Experimental:     false
 containerd:
  Versión:          1.3.3-0ubuntu2.1
  Commit de Git:
 runc:
  Versión:          spec: 1.0.1-dev
  Commit de Git:
 docker-init:
  Versión:          0.18.0
  Commit de Git:

Sinceramente, no lo recuerdo… lleva aquí desde siempre. Hoy actualicé Ubuntu como se describe arriba.

Ubuntu 20.04.1 LTS

Después de reiniciar Docker, ¿funciona el comando ping?

No, el mismo error.

ping: github.com: Fallo temporal en la resolución del nombre

Otro punto aleatorio…

Mi servidor de Discourse está en community.mydomain.com.
Tengo un servidor de WordPress en mydomain.com.
Ayer configuré un servidor de Rocket.Chat en chat.mydomain.com.

Registré chat.mydomain.com con Let’s Encrypt.
Los servidores de WordPress y Rocket.Chat funcionan correctamente.

No estoy seguro de que esto tenga algo que ver con este problema, pero solo quería asegurarme de no estar pasando por alto algo.

Podría intentar eliminar e reinstalar Docker; es difícil adivinar exactamente qué está ocurriendo aquí y por qué Docker falló.

Antes de hacer cualquier cosa, asegúrate de tener una copia de seguridad de tus datos (ya sea una copia de seguridad de Discourse o, al menos, de PostgreSQL y las cargas). Haz una imagen de la máquina virtual si es posible.

1 me gusta

Se eliminó por completo Docker y se reinstaló.

El problema persiste.

Esto es frustrante.

¿Puede tu servidor alcanzar el DNS de Google, es decir, ping 8.8.8.8?

Sin problemas desde el servidor

ping -c 1 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=119 time=2.72 ms

--- 8.8.8.8 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 2.720/2.720/2.720/0.000 ms

Sin éxito desde Docker

docker run --rm -i debian ping -c 1 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.

--- 8.8.8.8 ping statistics ---
1 packets transmitted, 0 received, 100% packet loss, time 0ms

Honestamente, creo que la mejor opción en este momento es reinstalar y copiar tus datos.

Tienes un sistema roto por Razones Misteriosas, y el proceso de instalación es bastante rápido. Probablemente sea lo mejor que puedes hacer con tu tiempo.

4 Me gusta