Instalación de Discourse en un servidor sin acceso a DockerHub

@sam Sam, mi empresa ahora está bloqueando Docker Hub. Estoy ejecutando Docker para Discourse en múltiples entornos y necesito actualizar. Falla, por supuesto:

Error response from daemon: Get https://registry-1.docker.io/v2/: http: server gave HTTP response to HTTPS client
Error response from daemon: Get https://registry-1.docker.io/v2/: http: server gave HTTP response to HTTPS client
Unable to find image 'discourse/base:2.0.20230502-0058' locally
docker: Error response from daemon: Get https://registry-1.docker.io/v2/: http: server gave HTTP response to HTTPS client.

La forma más fácil que veo para actualizar es usar otra máquina que no esté en la misma red y descargar la última imagen base de Discourse… luego, de alguna manera, enviarla o extraerla a la máquina que se va a actualizar. Luego, de alguna manera, forzar a Discourse o al lanzador a buscar localmente y no intentar extraer de Docker Hub… He visto varios hilos donde casi encuentro que esto podría funcionar, pero nada claro. ¿Cómo haría esto?

docker save y docker load te ayudarán con eso.

@Falco ¿Podrías darme ejemplos específicos de comandos sobre cómo guardar y cargar… como qué guardar y dónde guardarlo y qué comando completo usar para cargar?

He usado la misma idea de esta publicación muchas veces con éxito

Puedo preparar un ejemplo más específico mañana cuando esté en mi escritorio.

1 me gusta

@Falco - Muchas gracias, espero el ejemplo de escritorio… Espero estar entendiendo esto correctamente, ya que me preocupa eliminar mis sitios anfitriones con algo más que una ‘actualización’.

Tengo mi sitio de Docker de Discourse de mi empresa que está desactualizado y contiene cierta información que no puedo mover fuera de la empresa… debido a las reglas de la empresa, etc. Hay 4 diferentes… llamémoslos: np.falcoisgreat.com, stg.falcoisgreat.com, tst.falcoisgreat.com y www.falcoisgreat.com, todos detrás de como 4 versiones pequeñas… ya no pueden acceder al hub de Docker cuando el lanzador intenta obtener la última imagen base de Docker.

Entonces, fuera del mundo real de las libertades de Internet, inicié una nueva caja de Ubuntu con Docker de Discourse solo para descargar la última imagen base de Docker de Discourse (realmente en https://discourse1.codeplus.cloud) - Ahora, lo que pretendo hacer es simplemente obtener la nueva imagen, sin contenido, sin nada, empaquetarla con, supongo, docker save y luego descargar ese archivo tar a, digamos, np.falcoisgreat.com con curl o sftp y luego usar docker load?

No conozco los detalles de eso y buscaré y leeré, pero lo que me preocupa es que elimine el contenido y la configuración actuales de “np.falcoisgreat.com” — Haré copias de seguridad, por supuesto, pero para mí es mejor saber una forma de no eliminar nada. ¿Confirman que esta solución está destinada a hacer lo que creo que está destinada a hacer?

¡Gracias!

Ser:

  • server1 el servidor con acceso a Internet

  • server2 un servidor que no puede acceder a DockerHub

Hacer:

ssh root@server1
docker pull discourse/base:2.0.20230502-0058


# si server1 puede acceder a server2
docker save discourse/base:2.0.20230502-0058 | bzip2 | ssh root@server2 docker load
# espera a que se complete y sal de server1
ssh root@server2
cd /var/discourse
./launcher rebuild app


# si server1 no puede acceder a server2
docker save -o /tmp/discourse-base-image.tar discourse/base:2.0.20230502-0058
# transfiere el archivo a server2 a través de una unidad USB, ftp, disquetes, etc.
ssh root@server2
docker load -i /tmp/discourse-base-image.tar
cd /var/discourse
./launcher rebuild app
2 Me gusta

Eso es muy bueno. No sabía eso.

El único truco entonces es saber cómo y cuándo cambiar discourse/base:2.0.20230502-0058.

Y creo que eso es solo

cd /var/discourse
git pull
DISCOURSE_BASE=$(grep -e ^image= $DISCOURSE_DOCKER_SRC/launcher|cut -d'\"' -f2)
docker pull $DISCOURSE_BASE

Y así sucesivamente con el comando save.

1 me gusta

Gracias @Falco, hasta ahora todo bien. ¡Dos entornos actualizados!

2 Me gusta

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.