Problema de firewall al ejecutar múltiples contenedores tras la actualización

Tuve algunos problemas con la actualización: el primer foro falló en el primer intento (vía el panel de control) y luego falló nuevamente al intentar una reconstrucción, pero parece que funcionó en el segundo intento de reconstrucción, aunque luego tuve que realizar una reconstrucción adicional. Esto me recordó que debía detener todas las instancias de Discourse al realizar la actualización con la actualización de PG12 (hay tres foros de Discourse en este servidor, cada uno con su propio contenedor), y por lo tanto lo siguiente funcionó para los otros dos foros:

Sin embargo, por alguna razón, el primer foro ya no es accesible; Safari indica que el servidor interrumpió inesperadamente la conexión. Al realizar una reconstrucción parece ir bien, pero no es accesible y puedo entrar a la aplicación y a la consola de Rails, y la base de datos parece estar intacta.

Las únicas advertencias que puedo ver en la reconstrucción que podrían ser relevantes son:

168:M 31 ene 2021 21:39:22.459 # ADVERTENCIA: La configuración de TCP backlog de 511 no se puede aplicar porque /proc/sys/net/core/somaxconn está establecido en el valor inferior de 128.
168:M 31 ene 2021 21:39:22.459 # Servidor inicializado
168:M 31 ene 2021 21:39:22.459 # ADVERTENCIA: overcommit_memory está establecido en 0. El guardado en segundo plano podría fallar en condiciones de baja memoria. Para solucionar este problema, añade 'vm.overcommit_memory = 1' a /etc/sysctl.conf y luego reinicia o ejecuta el comando 'sysctl vm.overcommit_memory=1' para que surta efecto.
168:M 31 ene 2021 21:39:22.459 # ADVERTENCIA: tienes soporte para Transparent Huge Pages (THP) habilitado en tu kernel. Esto creará problemas de latencia y uso de memoria con Redis. Para solucionar este problema, ejecuta el comando 'echo madvise > /sys/kernel/mm/transparent_hugepage/enabled' como root y agrégalo a tu archivo /etc/rc.local para mantener la configuración después de un reinicio. Redis debe reiniciarse después de deshabilitar THP (establecer en 'madvise' o 'never').
168:M 31 ene 2021 21:39:22.459 * Cargando RDB generado por la versión 6.0.9
168:M 31 ene 2021 21:39:22.459 * Edad del RDB: 21 segundos
168:M 31 ene 2021 21:39:22.459 * Uso de memoria del RDB al crearse: 4.03 Mb
168:M 31 ene 2021 21:39:22.466 * Base de datos cargada desde el disco: 0.006 segundos
168:M 31 ene 2021 21:39:22.466 * Listo para aceptar conexiones

production.log:


Excepción del trabajo: Error al conectar con Redis en localhost:6379 (Errno::ENETUNREACH)

Error al conectar con Redis en localhost:6379 (Errno::ENETUNREACH) suscripción fallida, reconectando en 1 segundo. Pila de llamadas /var/www/discourse/vendor/bundle/ruby/2.7.0/gems/redis-4.2.5/lib/redis/client.rb:367:in `rescue in establish_connection'

Mensajes similares aparecen en unicorn.stderr.log y unicorn.stdout.log.

Al entrar al contenedor y ejecutar redis-cli ping, obtengo una respuesta PONG. Redis está ejecutándose en el servidor (pero no dentro de los contenedores individuales, aunque esto siempre ha sido así, por lo que sé).

¿Alguna idea de qué podría estar ocurriendo?

(También reinicié el servidor y creé un nuevo certificado letsencrypt para este dominio para estar seguro, pero sigue igual.)

1 me gusta

Parece que todo debería estar funcionando… ¿has probado en otro navegador o borrado la caché? Si eso no ayuda, ¿podrías publicar la salida de:

curl -vv -o /dev/null <url del foro>
2 Me gusta

He probado en varios navegadores, pero obtengo el mismo resultado. Aquí está la salida de ese comando:

~$ curl -vv -o /dev/null https://metaruby.com
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0*   Trying 78.46.110.60...
* TCP_NODELAY set
* Connected to metaruby.com (78.46.110.60) port 443 (#0)
* ALPN, offering h2
* ALPN, offering http/1.1
* successfully set certificate verify locations:
*   CAfile: /etc/ssl/cert.pem
  CApath: none
* TLSv1.2 (OUT), TLS handshake, Client hello (1):
} [226 bytes data]
* TLSv1.2 (IN), TLS handshake, Server hello (2):
{ [93 bytes data]
* TLSv1.2 (IN), TLS handshake, Certificate (11):
{ [2473 bytes data]
* TLSv1.2 (IN), TLS handshake, Server key exchange (12):
{ [333 bytes data]
* TLSv1.2 (IN), TLS handshake, Server finished (14):
{ [4 bytes data]
* TLSv1.2 (OUT), TLS handshake, Client key exchange (16):
} [70 bytes data]
* TLSv1.2 (OUT), TLS change cipher, Change cipher spec (1):
} [1 bytes data]
* TLSv1.2 (OUT), TLS handshake, Finished (20):
} [16 bytes data]
* TLSv1.2 (IN), TLS change cipher, Change cipher spec (1):
{ [1 bytes data]
* TLSv1.2 (IN), TLS handshake, Finished (20):
{ [16 bytes data]
* SSL connection using TLSv1.2 / ECDHE-RSA-AES128-GCM-SHA256
* ALPN, server did not agree to a protocol
* Server certificate:
*  subject: CN=metaruby.com
*  start date: Jan 31 03:33:05 2021 GMT
*  expire date: May  1 03:33:05 2021 GMT
*  subjectAltName: host "metaruby.com" matched cert's "metaruby.com"
*  issuer: C=US; O=Let's Encrypt; CN=R3
*  SSL certificate verify ok.
> GET / HTTP/1.1
> Host: metaruby.com
> User-Agent: curl/7.64.1
> Accept: */*
> 
  0     0    0     0    0     0      0      0 --:--:--  0:00:01 --:--:--     0* TLSv1.2 (IN), TLS alert, close notify (256):
{ [2 bytes data]
* Empty reply from server
  0     0    0     0    0     0      0      0 --:--:--  0:00:01 --:--:--     0
* Connection #0 to host metaruby.com left intact
curl: (52) Empty reply from server
* Closing connection 0
1 me gusta

Algunas cosas que podrían causar el error de respuesta vacía:

  1. El servidor está en una VPN y no hay acceso al puerto.
  2. Si tienes múltiples instancias de Discourse en el mismo servidor, supongo que hay un proxy inverso delante. Asegúrate de que apunte al contenedor de Discourse (quizás necesites reiniciarlo).
  3. No hay suficiente espacio en el servidor (puedes ejecutar df -hT /).

Yo empezaría revisando primero el espacio libre en el disco (3).

2 Me gusta

El uso del disco mostraba un 31%, pero igual ejecuté ./launcher cleanup:

docker container ls
(Para asegurarse de que los tres contenedores del foro estén en ejecución)

./launcher cleanup

¡ADVERTENCIA! Esto eliminará todos los contenedores detenidos.
¿Estás seguro de que quieres continuar? [y/N] y
Espacio total recuperado: 0B
¡ADVERTENCIA! Esto eliminará todas las imágenes sin al menos un contenedor asociado.
¿Estás seguro de que quieres continuar? [y/N] y
Imágenes eliminadas:
...
Espacio total recuperado: 32.56GB

Usamos HAProxy y lo verifiqué (y lo reinicié); está activo y funcionando (también realizamos la redirección de http a https a través de él, lo cual funciona correctamente para el dominio, así que no creo que sea un problema allí; además, funcionaba hasta esta actualización).

Aún puedo entrar al contenedor y acceder a la consola de Rails, y la base de datos sigue ahí/conectada con el contenedor, así que esto es simplemente extremadamente extraño. ¿Alguien tiene otras ideas o pasos adicionales para solucionar esto?

1 me gusta

Si no has podido depurar qué está ocurriendo, una opción podría ser realizar una copia de seguridad desde la línea de comandos y restaurarla en un sitio nuevo y limpio ejecutándose en PG13. Alternativamente, si necesitas que tu sitio vuelva a estar operativo, puedes revertir la versión a PG12, mover el directorio existente shared/postgres_data_old de nuevo a shared/postgres_data y reconstruirlo. Sin embargo, recomendaría intentar primero la copia de seguridad y restauración, ya que el problema no parece estar relacionado con la propia actualización de la base de datos.

3 Me gusta

Estás un poco más allá de una instalación estándar con soporte. :slight_smile:

¿Cada Discourse tiene su propia base de datos PostgreSQL, o tienes una sola base de datos PostgreSQL para los tres?

Si tienes un único contenedor de PostgreSQL/datos, entonces debes DETENER todos los Discourse antes de intentar actualizar PostgreSQL.

HaProxy no tiene nada que ver con PostgreSQL, así que no creo que eso importe.

3 Me gusta

Si tienes alguna otra idea para investigar esto, estaré encantado de probarla, Michael. Por suerte, no es un gran problema que este foro esté fuera de línea, ya que estaba en modo de solo lectura de todos modos (habiendo sido reemplazado por otro foro).

Si se te han acabado las ideas, procederé a intentar restaurar una copia de seguridad, pero si es posible, me gustaría solucionar este problema, ya que me interesa aprender por qué ocurrió (asumo que a ti también te interesa), así que definitivamente estoy dispuesto a investigarlo más a fondo si tú también lo estás.

La verdad es que me ha puesto un poco nervioso convertir algunos de mis otros foros a Discourse, y saber qué salió mal podría ser útil para todos nosotros.

Es una instalación estándar de varios contenedores donde cada foro tiene su propio archivo app.yml y una configuración de contenedores basada en host: discourse/shared-site-name/standalone y host: discourse/shared-site-name/standalone/log/var-log (según las preguntas que he hecho y los publicaciones en este foro).

Al entrar en cada contenedor y ejecutar psql (sudo -u postgres psql discourse) y \l+, se muestra solo una base de datos discourse por contenedor (y cada una tiene un tamaño diferente), así que supongo que son instancias independientes de Discourse.

¿Tienes un enlace a la forma “estándar” de ejecutar varios foros independientes de Discourse en un servidor? Puedo verificar si eso es lo mismo que tengo aquí, aunque estoy bastante seguro de que lo que tengo se basa en publicaciones y orientación del equipo de Discourse.

2 Me gusta

¿Estás ejecutando nginx dentro del contenedor? Lo siguiente que intentaría es rastrear a dónde llegan las solicitudes. Si entiendo bien, tienes HAProxy realizando la terminación SSL y luego proxyando las solicitudes hacia los respectivos contenedores?

3 Me gusta

Ah. Vale. Entonces, para cada uno, debes ejecutar ./launcher rebuild TU-NOMBRE-DE-APP dos veces. No creo que puedas hacerlo desde la interfaz web.

¿Y los contenedores yml tienen las plantillas de SSL y Let’s Encrypt comentadas (o eliminadas)?

2 Me gusta

Por lo que sé, los propios contenedores son todos “estándar” (así que entiendo que cada uno ejecuta nginx) y, sí, HAProxy maneja todo el SSL y dirige las solicitudes a cada contenedor.

Mi configuración es según la guía aquí: Set up Discourse on a server with existing Apache sites (con la versión SSL de la configuración de HAProxy aquí).

Hubo un problema con la configuración de HAProxy:

backend main_apache_sites
  server server1 127.0.0.1:8080 cookie A check
  cookie JSESSIONID prefix nocache

backend discourse_docker
  server server2 127.0.0.1:8888 cookie A check
  cookie JSESSIONID prefix nocache

backend discourse_docker_2
  server server2 127.0.0.1:8889 cookie A check
  cookie JSESSIONID prefix nocache

backend discourse_docker_3
  server server2 127.0.0.1:8890 cookie A check
  cookie JSESSIONID prefix nocache

backend letsencrypt-backend
  server letsencrypt 127.0.0.1:54321

Por alguna razón, todos los backends de Discourse tenían server2 en la segunda línea; ayer cambié estos a server2, server3, etc., pero no ha hecho ninguna diferencia (y antes funcionaba bien así).

¿Hay archivos de registro específicos que pueda revisar que podrían proporcionar más pistas? ¿Quizás archivos de registro de Docker?

Sí, esos están comentados:

templates:
  - "templates/postgres.template.yml"
  - "templates/redis.template.yml"
  - "templates/web.template.yml"
  - "templates/web.ratelimited.template.yml"
## Descomenta estas dos líneas si deseas agregar Lets Encrypt (https)
  #- "templates/web.ssl.template.yml"
  #- "templates/web.letsencrypt.ssl.template.yml"
1 me gusta

Los registros de nginx dentro de los contenedores de la aplicación deberían poder confirmar si las solicitudes llegan a la aplicación; ¿puedes verificarlos? nginx en el contenedor actúa como proxy de las solicitudes hacia 127.0.0.1:3000, que corresponde al proceso unicorn.

1 me gusta

Al revisar /var/log/nginx y /shared/log/rails, realmente nada destaca; de hecho, ninguno de los registros se actualizó hoy (4 de febrero), excepto /shared/log/rails/production.log, que solo tiene algunos trabajos como este:

Registros de Rails:

Registros de Nginx:

También cambié el puerto en HAProxy y, como era de esperar, obtuve un error de servidor no encontrado; luego actualicé el contenedor al mismo puerto y volvió a mostrar el mismo comportamiento (así que creo que esto descarta un problema con HAProxy).

¿Hay algún registro de Docker que deba revisar? ¿O puedo guardar/exportar este contenedor y enviártelo para que lo revises? Supongo que te preguntas qué salió mal tanto como yo :blush:

1 me gusta

De hecho, acabo de volver a mirar (lo de arriba era de anoche) y ahora hay algo en:

unicorn.stderr.log

(Lo siento, no me deja copiar el texto)

Ninguno de los registros de nginx ha sido modificado hoy, aunque el último registro del 30 de enero muestra un error de tipo: 7: limitando solicitudes por zona “flood” cliente: my.ip.address, POST /mini-profiler-resources.

Edición: no sé si esto ayuda, pero al ejecutar docker logs APP:

Para el foro que no funciona:

# docker logs metaruby
run-parts: ejecutando /etc/runit/1.d/00-ensure-links
run-parts: ejecutando /etc/runit/1.d/00-fix-var-logs
run-parts: ejecutando /etc/runit/1.d/01-cleanup-web-pids
run-parts: ejecutando /etc/runit/1.d/anacron
run-parts: ejecutando /etc/runit/1.d/cleanup-pids
Limpieza de archivos PID obsoletos
run-parts: ejecutando /etc/runit/1.d/copy-env
runsvdir iniciado, PID es 43
ok: run: redis: (pid 55) 0s
ok: run: postgres: (pid 56) 0s
chgrp: grupo inválido: 'syslog'
supervisor pid: 50 unicorn pid: 89

Para el foro 2 (funcionando bien):

# docker logs f2

run-parts: ejecutando /etc/runit/1.d/00-ensure-links

run-parts: ejecutando /etc/runit/1.d/00-fix-var-logs

run-parts: ejecutando /etc/runit/1.d/01-cleanup-web-pids

run-parts: ejecutando /etc/runit/1.d/anacron

run-parts: ejecutando /etc/runit/1.d/cleanup-pids

Limpieza de archivos PID obsoletos

run-parts: ejecutando /etc/runit/1.d/copy-env

runsvdir iniciado, PID es 42

ok: run: redis: (pid 55) 0s

ok: run: postgres: (pid 54) 0s

chgrp: grupo inválido: 'syslog'

supervisor pid: 51 unicorn pid: 82

(51) Volviendo a abrir registros

(51) Volviendo a abrir registros

(51) Volviendo a abrir registros

(51) Deteniendo Sidekiq

(51) Recargando unicorn (82)

(51) Esperando nuevo PID de maestro unicorn...

(51) Esperando nuevo PID de maestro unicorn...

(51) Esperando nuevo PID de maestro unicorn...

(51) Esperando nuevo PID de maestro unicorn...

(51) Esperando nuevo PID de maestro unicorn...

(51) Esperando nuevo PID de maestro unicorn...

(51) Esperando nuevo PID de maestro unicorn...

(51) Esperando nuevo PID de maestro unicorn...

(51) Esperando nuevo PID de maestro unicorn...

(51) Esperando nuevo PID de maestro unicorn...

(51) Esperando nuevo PID de maestro unicorn...

(51) Esperando nuevo PID de maestro unicorn...

(51) Esperando nuevo PID de maestro unicorn...

(51) Esperando nuevo PID de maestro unicorn...

(51) Esperando nuevo PID de maestro unicorn...

(51) Esperando nuevo PID de maestro unicorn...

(51) Esperando nuevo PID de maestro unicorn...

(51) Esperando nuevo PID de maestro unicorn... 22039

(51) PID antiguo es: 82 Nuevo PID es: 22039

(51) Deteniendo Sidekiq

(51) Recargando unicorn (22039)

(51) Esperando nuevo PID de maestro unicorn...

(51) Esperando nuevo PID de maestro unicorn...

(51) Esperando nuevo PID de maestro unicorn...

(51) Esperando nuevo PID de maestro unicorn...

(51) Esperando nuevo PID de maestro unicorn...

(51) Esperando nuevo PID de maestro unicorn...

(51) Esperando nuevo PID de maestro unicorn...

(51) Esperando nuevo PID de maestro unicorn...

(51) Esperando nuevo PID de maestro unicorn...

(51) Esperando nuevo PID de maestro unicorn...

(51) Esperando nuevo PID de maestro unicorn...

(51) Esperando nuevo PID de maestro unicorn...

(51) Esperando nuevo PID de maestro unicorn...

(51) Esperando nuevo PID de maestro unicorn...

(51) Esperando nuevo PID de maestro unicorn...

(51) Esperando nuevo PID de maestro unicorn...

(51) Esperando nuevo PID de maestro unicorn...

(51) Esperando nuevo PID de maestro unicorn...

(51) Esperando nuevo PID de maestro unicorn... 23358

(51) PID antiguo es: 22039 Nuevo PID es: 23358

(51) Volviendo a abrir registros

(51) Volviendo a abrir registros

Para el foro tres (también funcionando bien):

# docker logs f3

run-parts: ejecutando /etc/runit/1.d/00-ensure-links

run-parts: ejecutando /etc/runit/1.d/00-fix-var-logs

run-parts: ejecutando /etc/runit/1.d/01-cleanup-web-pids

run-parts: ejecutando /etc/runit/1.d/anacron

run-parts: ejecutando /etc/runit/1.d/cleanup-pids

Limpieza de archivos PID obsoletos

run-parts: ejecutando /etc/runit/1.d/copy-env

runsvdir iniciado, PID es 42

ok: run: redis: (pid 54) 0s

chgrp: grupo inválido: 'syslog'

ok: run: postgres: (pid 55) 0s

supervisor pid: 56 unicorn pid: 88

(56) Volviendo a abrir registros

(56) Volviendo a abrir registros

(56) Volviendo a abrir registros

(56) Volviendo a abrir registros

(56) Volviendo a abrir registros
1 me gusta

Al examinar los registros y repasar tus respuestas anteriores, parece que la aplicación está intentando acceder a Redis en localhost:6379 dentro del contenedor. Además, Redis parece estar iniciando correctamente, pero por alguna razón no puede conectarse (algo desconcertante). Aunque es posible que estos mensajes de error se deban a que message_bus intenta conectarse antes de que Redis inicie o después de que se detenga en caso de reinicio.

Mencionaste que Redis se está ejecutando en el servidor pero no en contenedores individuales; ¿podrías ampliar esa información?

Con esta configuración, Redis se ejecutará dentro del contenedor (como puedes ver en la salida de los registros de Docker).

Por otro lado, cuando navegas a la URL del sitio que no funciona, ¿qué aparece en tus registros de nginx? error.log debería estar vacío y access.log debería estar lleno de varias solicitudes HTTP. Solo estoy tratando de precisar en qué punto algo está fallando.

1 me gusta

Lo siento, mezclé las cosas. De hecho, Redis está funcionando en cada contenedor, lo que verifiqué ejecutando lo siguiente en el propio servidor y luego en cada uno de los tres contenedores de Discourse, obteniendo el mismo resultado en cada uno:

$ redis-cli ping
PONG
$ redis-server
# Creating Server TCP listening socket *:6379: bind: Address already in use (means it's already started)
$ redis-cli
127.0.0.1:6379> ping
PONG
127.0.0.1:6379> get mykey
(nil)
127.0.0.1:6379> set mykey somevalue
OK
127.0.0.1:6379> get mykey
"somevalue"

Lo mismo ocurre con los tres (es digno de notar que el primer get mykey siempre devuelve nil), por lo que podemos afirmar con seguridad que Redis está activo y funcionando de forma independiente en todos los contenedores.

Está vacío y no se ha escrito nada en ese directorio hoy:

drwxr-xr-x 2 www-data www-data  4096 Feb  4 21:26 .
drwxrwxr-x 9 root     root      4096 Feb  2 08:03 ..
-rw-r--r-- 1 www-data www-data     0 Feb  3 07:38 access.log
-rw-r--r-- 1 www-data www-data     0 Feb  2 08:03 access.log.1
-rw-r--r-- 1 www-data www-data   294 Feb  1 09:43 access.log.2.gz
-rw-r--r-- 1 www-data www-data 37598 Jan 30 23:56 access.log.3.gz
-rw-r--r-- 1 www-data www-data 58059 Jan 30 07:36 access.log.4.gz
-rw-r--r-- 1 www-data www-data 55988 Jan 29 07:34 access.log.5.gz
-rw-r--r-- 1 www-data www-data 73964 Jan 28 07:49 access.log.6.gz
-rw-r--r-- 1 www-data www-data 78069 Jan 27 07:53 access.log.7.gz
-rw-r--r-- 1 www-data www-data     0 Feb  3 07:38 error.log
-rw-r--r-- 1 www-data www-data     0 Feb  2 08:03 error.log.1
-rw-r--r-- 1 www-data www-data    20 Feb  1 00:31 error.log.2.gz
-rw-r--r-- 1 www-data www-data   632 Jan 30 23:46 error.log.3.gz
-rw-r--r-- 1 www-data www-data   265 Jan 29 09:07 error.log.4.gz
-rw-r--r-- 1 www-data www-data    20 Jan 28 07:50 error.log.5.gz
-rw-r--r-- 1 www-data www-data  3107 Jan 28 07:41 error.log.6.gz
-rw-r--r-- 1 www-data www-data    20 Jan 26 07:53 error.log.7.gz

He revisado los registros de acceso de otro contenedor y todo está bien, así que solo afecta a este.

Parece que HAProxy está reenviando la solicitud, pero el contenedor no puede manejarla ni aceptarla. Me pregunto si hay algo que se pueda reiniciar allí (lo cual, pensaría, debería hacer la reconstrucción del contenedor de todos modos).

1 me gusta

Suena así. ¿Podrías confirmar qué enlaces de puerto están presentes para cada contenedor al ejecutar docker ps en el host?

1 me gusta

Claro:

IMAGEN                  COMANDO             CREADO              ESTADO              PUERTOS
local_discourse/1      	"/sbin/boot"        hace 20 horas        hace 20 horas        0.0.0.0:2225->22/tcp, 0.0.0.0:8892->80/tcp
local_discourse/2   	"/sbin/boot"        hace 4 días          hace 4 días          0.0.0.0:2223->22/tcp, 0.0.0.0:8889->80/tcp
local_discourse/3       "/sbin/boot"        hace 4 días          hace 4 días          0.0.0.0:2224->22/tcp, 0.0.0.0:8890->80/tcp

Mi intuición me dice que tiene que ver con el intento fallido desde el panel de control: por lo general, para actualizaciones de PG o mayores, el panel indica que necesitas realizar una reconstrucción y que la actualización está deshabilitada en el panel, pero por alguna razón no lo hizo (quizás porque no había actualizado ese foro en un tiempo, por lo que pensé que debería hacerlo primero desde el panel) o es posible que no se hubiera apagado o iniciado correctamente antes de realizar la reconstrucción :confused:

2 Me gusta

En la configuración de HAProxy, veo que los backends están configurados para reenviar a los puertos 8888, 8889 y 8890:

Sin embargo, los contenedores de la aplicación están escuchando en 8892, 8889 y 8890; parece haber una discrepancia en backend discourse_docker. ¿Has actualizado algo en la configuración desde que se publicó eso?

1 me gusta

Sí, los puertos de HAProxy corresponden a los puertos correctos del contenedor :smiley: Estoy bastante seguro de que no está relacionado con esto, ya que funcionaba perfectamente; esto solo ocurrió después de esa actualización/reconstrucción.

Ingresar al contenedor, abrir las estadísticas de Top y luego ir al sitio tampoco parece marcar ninguna diferencia. Por si sirve de ayuda, aquí hay una captura de pantalla:

Si te resulta más fácil, estaría encantado de ‘guardar’ el contenedor y enviártelo (¿es eso siquiera posible con los contenedores de Docker? ¡jaja!) :slight_smile:

1 me gusta