Migración de contenedores entre distintas plataformas

Migración de contenedores entre distintas plataformas

Cuando acabamos de grabar el capítulo 2 de detrás del mostrador, te dejo el capítulo por aquí, nos surgió la duda de cómo sería el cambio de nuestros contenedores y de qué manera podría ser más fácil para nosotros.

¿Hay que empezar de cero y configurar uno por uno? ¿Habrá manera de hacer una copia de seguridad? ¿Podré ponerla en otro dispositivo y funcionará todo?

Pues aquí vengo a responder todas esas preguntas.

Primer paso

Vamos a nuestro portainer del dispositivo original, una vez dentro, pulsaremos en Environments y hacemos clicl en local

Una vez que hemos pulsado en local, cambiamos la Public IP por la de la máquina de destino de la copia, es decir, nuestro nuevo dispositivo. En mi caso, será la 192.168.0.189 y pulsamos sobre Update Environment

Ahora pulsamos en Settings, bajamos abajo del todo y pulsamos en Download Backup. Se nos descargará un archivo comprimido. Debemos volver al paso anterior para poner la Public Ip que estaba antes de modificarla.

Segundo paso

Me voy a mi dispositivo origen que en mi caso será una raspberry pi 4 con ubuntu server, a la que accedo por ssh.

Instalamos docker mediante el siguiente comando

sudo apt install docker.io

Instalamos docker-compose mediante el siguiente comando

sudo apt install docker-compose

Creamos una carpeta docker en la ruta /home/usuario mediante el comando

mkdir docker

Entramos en esta carpeta mediante el comando

cd docker

y dentro de la carpeta docker, creamos una carpeta para portainer y dentro de esta una que se llama data

mkdir portainer

cd portainer

mkdir data

Para crear un contenedor, tenemos que tener derechos de administrador. Esto lo hacemos mediante el comando sudo su e introducimos nuestra contraseña de acceso.

Una vez hecho este paso, procedemos a instalar Portainer mediante el siguiente comando

docker run -d -p 8000:8000 -p 9010:9000 --name=portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v /home/usuario/docker/portainer/data:/data portainer/portainer-ce:latest

En mi caso he cambiado el puerto origen 9000 por el 9010 porque ya tengo otra instancia de docker corriendo en ese puerto original.

Tercer paso

Ahora entramos en el portainer de nuestra máquina nueva. Para ello, en mi caso lo hago mediante la direccion http://192.168.0.189:9010

Nos saldrá la ventana de configuración de Portainer.

En lugar de crear un usuario nuevo, desplegamos el apartado de Restore Portainer from Backup

Una vez que hemos desplegado dicho apartado, pulsamos sobre el botón Select File y seleccionamos el archivo de backup descargado en el paso 1 y despues pulsaremos en el botón de restore portainer

Una vez restaurado el archivo, nos debe enviar a la pantalla de login. Hacemos login con los datos de usuario y contraseña de nuestro Portainer original, el que teníamos en la máquina desde la que hemos realizado la copia de seguridad.

Cuarto paso

¿Qué se ha instalado?

Pues como vemos si entramos en el cuadro resumen del dashboard, vemos que tenemos un solo contenedor y en mi caso los 40 stacks que tenía en el Portainer original.

Pero no se ha ejecutado ninguno, claro está.

Ahora tenemos que pasar la información de las carpetas de docker desde nuestro nas hacia el dispostivo de destino, es decir en mi caso, la raspberry pi 4.

Para ello voy a usar una herramienta que se llama cyberduck Está disponible para Mac y para Windows.

Una vez instalada tenemos que configurar el acceso por SFTP para que nos permita la transferecnia de archivos de modo seguro. Los datos de configuración son los mismos que cuando accedemos por terminal mediante ssh.

Una vez conectada, tenemos que pasarle la carpeta docker desde el NAS a la raspberry pi 4.

Esta operación a mi me supuso casi tres horas debido a que el tamaño de las carpetas de mi carpeta docker era de 51GB.

Quinto paso

Debemos tener el compose de todos los contenedores que tengamos. En mi caso había algunos contenedores que los instalé de otra manera y no tenía el compose, así que he tenido que buscarlos o crearlos.

Tenemos que tener dos cosas en cuenta para hacer un cambio en los stacks.

La ruta de instalación del archivo ha cambiado. En mi caso en el NAS tenian la siguiente estructura.

/volume1/docker/nombredelcontedor

Y en la raspberry pi 4 cambia a esto

/home/usuario/docker/nombredelcontenedor

Además, algunos contenedores tenían parámetros como PUID y PGID. Estos parámetros cambiarán en el nuevo dispositivo.

Para conocerlos, tenemos que introducir estando en nuestro usuario el comando id y pulsa intro

En mi caso me muestra algo así, al hacerlo.

uid=1001(bilito) gid=1001(bilito) groups=1001(bilito),27(sudo)

En los stack que lo utilicen, tendría que cambiarlos por estos nuevos valores porque si no, no tendría permisos.

En el video hago el ejemplo con el contenedor de transmission, donde creo el Stack, que no tenía anteriormente y lo hago con el siguiente codigo, donde verás estos cambios aplicados.

version: "2.1"
services:
  transmission:
    image: lscr.io/linuxserver/transmission:latest
    container_name: transmission
    environment:
      - PUID=1001
      - PGID=1001
      - TZ=Europe/Madrid
      - TRANSMISSION_WEB_HOME=//transmissionic/
      - USER=prueba #optional
      - PASS=password #optional
    volumes:
      - /home/bilito/docker/bittorrent/config:/config
      - /home/bilito/downloads/:/downloads
      - /home/bilito/downloads/:/watch
    ports:
      - 9093:9091
      - 51414:51413
      - 51414:51413/udp
    restart: unless-stopped

De este modo se aplica toda la configuración que teníamos en nuestra instalación original de Portainer.

Pulsaremos en Deploy the stack y debe de funcionar si no hemos cometido ningún error.

Tocará repetir los pasos con todos los satcks, pero creo que es bastante más fácil que empezar desde cero.

Mi nombre es David Rodríguez, apasionado por un millón de cosas que lleven placas y chips dentro.

Puedes encontrarme como @_Bilito en twitter y en grupo de Telegram de Synology NAS https://t.me/synologyNAS

Tengo un un canal de youtube que complementa al blog https://www.youtube.com/@_Bilito y que me harías un gran favor si te subscribes.

También colaboro en podcast como Bateria 2x100 https://pod.link/1115144939 y además hemos comenzado otra aventura en otro podcast Detras del Mostrador https://pod.link/1657695301