GNU/Linux >> Tutoriales Linux >  >> Linux

Cómo actualizar el contenedor Docker sin tiempo de inactividad

En un entorno dockerizado, utiliza varias imágenes y trabaja con muchos contenedores. Cuando ejecuta un contenedor desde una imagen, continúa ejecutando esa versión porque las imágenes de Docker no se actualizan automáticamente. Es posible que deba actualizarlo manualmente. Siempre se recomienda ejecutar un contenedor desde la última imagen de Docker.

En esta guía, le mostraremos ejemplos prácticos de cómo actualizar un contenedor en ejecución sin tiempo de inactividad.

Requisitos

  • Un nuevo servidor Ubuntu 20.04 en Atlantic.Net Cloud Platform
  • Una contraseña de root configurada en su servidor

Paso 1:crear el servidor en la nube de Atlantic.Net

Primero, inicie sesión en su servidor en la nube de Atlantic.Net. Cree un nuevo servidor, eligiendo Ubuntu 20.04 como sistema operativo con al menos 2 GB de RAM. Conéctese a su servidor en la nube a través de SSH e inicie sesión con las credenciales resaltadas en la parte superior de la página.

Una vez que haya iniciado sesión en su servidor Ubuntu 20.04, ejecute el siguiente comando para actualizar su sistema base con los últimos paquetes disponibles.

apt-get update -y

Paso 2:instalar Docker CE y Docker Compose

Primero, instala todas las dependencias requeridas con el siguiente comando:

apt-get install git apt-transport-https ca-certificates curl software-properties-common -y

A continuación, agregue la clave Docker GPG y el repositorio con el siguiente comando:

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add -
add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu focal stable"

Una vez que se haya agregado el repositorio, instale Docker y Docker compose con el siguiente comando:

apt-get install docker-ce docker-compose -y

Una vez que ambos paquetes estén instalados, puede continuar con el siguiente paso.

Paso 3:crear un archivo de composición de Docker

A los efectos de este tutorial, crearemos una red docker, un volumen y un archivo docker-compose.yml para implementar un contenedor Ghost.

Primero, cree una red llamada net y un volumen llamado ghost usando el siguiente comando:

docker network create net
docker volume create ghost

A continuación, cree un directorio para el proyecto Ghost con el siguiente comando:

mkdir Ghost

A continuación, cambie el directorio a Ghost y cree un archivo docker-compose.yml:

cd Ghost
nano docker-compose.yml

Agregue las siguientes líneas:

version: '3.5'
services:
  ghost:
    image: ghost:3.36
    volumes:
      - ghost:/var/lib/ghost/content
    environment:
      - VIRTUAL_HOST=ghost.example.com
      - url=http://ghost.example.com
      - NODE_ENV=production
    restart: always
    networks:
      - net

volumes:
  ghost:
    external: true

networks:
  net:
    external: true

Guarde y cierre el archivo cuando haya terminado.

El archivo anterior descargará la imagen de Ghost versión 3.36 y creará un contenedor de Ghost para el dominio ghost.example.com.

Paso 4:crea un contenedor fantasma

Ahora, cambie el directorio a Ghost e inicie el contenedor de Ghost usando el siguiente comando:

docker-compose up -d

Deberías obtener el siguiente resultado:

Pulling ghost (ghost:3.36)...
3.36: Pulling from library/ghost
bb79b6b2107f: Pull complete
99ce436c3449: Pull complete
f7bdc31da5f5: Pull complete
7a1300b9ff59: Pull complete
a495c68fa838: Pull complete
6e362a39ec35: Pull complete
b68b4f3c36f7: Pull complete
41f8b02d4a71: Pull complete
3ecc736ea4e5: Pull complete
Digest: sha256:595c759980cd22e99037811397012908d89efb799776db222a4be6d4d892917c
Status: Downloaded newer image for ghost:3.36
Creating ghost_ghost_1 ... done

Puede verificar la imagen de Ghost con el siguiente comando:

docker images

Salida:

REPOSITORY   TAG       IMAGE ID       CREATED        SIZE
ghost        3.36      455ce1645479   4 months ago   440MB

También puede verificar el contenedor Ghost con el siguiente comando:

docker ps

Salida:

CONTAINER ID   IMAGE        COMMAND                  CREATED          STATUS          PORTS      NAMES
d4b51b1aafc8   ghost:3.36   "docker-entrypoint.s…"   23 seconds ago   Up 20 seconds   2368/tcp   ghost_ghost_1

Paso 5:actualice el archivo de composición de Docker

En esta sección, actualizaremos el archivo de redacción de Docker y cambiaremos la versión de Ghost de 3.36 a 3.37.1:

nano docker-compose.yml

Realice los siguientes cambios:

version: '3.5'
services:
  ghost:
    image: ghost:3.37.1
    volumes:
      - ghost:/var/lib/ghost/content
    environment:
      - VIRTUAL_HOST=ghost.example.com
      - url=http://ghost.example.com
      - NODE_ENV=production
    restart: always
    networks:
      - net

volumes:
  ghost:
    external: true

networks:
  net:
    external: true

Guarde y cierre el archivo cuando haya terminado.

Paso 6:lanzar un nuevo contenedor fantasma

Ahora, usaremos el método de escalado para crear un nuevo contenedor Ghost sin afectar el contenedor Ghost anterior. Puedes hacerlo con el siguiente comando:

cd Ghost
docker-compose up -d --scale ghost=2 --no-recreate

Deberías obtener el siguiente resultado:

Pulling ghost (ghost:3.37.1)...
3.37.1: Pulling from library/ghost
bb79b6b2107f: Already exists
99ce436c3449: Already exists
7f4b5e228565: Pull complete
de71eab7febf: Pull complete
29961d2eb573: Pull complete
923f84e249ab: Pull complete
dfad6f73fc3d: Pull complete
b16cf83b3022: Pull complete
387b2254843c: Pull complete
Digest: sha256:fad0c2631cbba3d6c61da6fa5ef39da201780f2ae64ce51f3d5ebb412ca2564b
Status: Downloaded newer image for ghost:3.37.1
Starting ghost_ghost_1 ... done
Creating ghost_ghost_2 ... done

Puede verificar la nueva imagen de Ghost con el siguiente comando:

docker images

Salida:

REPOSITORY   TAG       IMAGE ID       CREATED        SIZE
ghost        3.37.1    c64d108acdfe   3 months ago   439MB
ghost        3.36      455ce1645479   4 months ago   440MB

También puede verificar el nuevo contenedor Ghost con el siguiente comando:

docker ps

Salida:

CONTAINER ID   IMAGE          COMMAND                  CREATED          STATUS          PORTS      NAMES
c21550f39440   ghost:3.37.1   "docker-entrypoint.s…"   33 seconds ago   Up 31 seconds   2368/tcp   ghost_ghost_2
d4b51b1aafc8   ghost:3.36     "docker-entrypoint.s…"   4 minutes ago    Up 4 minutes    2368/tcp   ghost_ghost_1

Paso 7:Escale el nuevo contenedor fantasma

En este punto, ambos contenedores de Ghost se ejecutan con la misma configuración. Ahora, nos detendremos y eliminaremos el antiguo contenedor Ghost.

docker container stop ghost_ghost_1
docker container rm ghost_ghost_1

Ahora, ejecute el siguiente comando para reducir la configuración a su configuración original:

cd Ghost
docker-compose up -d --scale ghost=1 --no-recreate

También puede consultar el nuevo registro de contenedores de Ghost para obtener más información.

docker logs ghost_ghost_2

Salida:

[2021-03-05 04:50:13] INFO Blog is in maintenance mode.
[2021-03-05 04:50:13] INFO Ghost is running in production...
[2021-03-05 04:50:13] INFO Your site is now available on http://ghost.example.com/
[2021-03-05 04:50:13] INFO Ctrl+C to shut down
[2021-03-05 04:50:13] INFO Ghost boot 3.581s
[2021-03-05 04:50:13] INFO Creating database backup
[2021-03-05 04:50:13] INFO Database backup written to: /var/lib/ghost/content/data/ghost.ghost.2021-03-05-04-50-13.json
[2021-03-05 04:50:13] INFO Updating portal button setting to false
[2021-03-05 04:50:13] INFO Blog is out of maintenance mode.

Su contenedor de Ghost ahora está actualizado con una nueva imagen de Ghost.

Conclusión

En la guía anterior, aprendió cómo actualizar el contenedor Docker sin tiempo de inactividad. ¡Comience a actualizar su contenedor Docker en el alojamiento VPS de Atlantic.Net!


Linux
  1. Cómo instalar WordPress con Docker en Ubuntu

  2. Cómo instalar Jenkins con Docker

  3. ¿Cómo actualizar una ISO con Zsync?

  4. Cómo implementar un contenedor nginx con Docker en Linode

  5. Cómo ejecutar MySQL en un contenedor Docker

Cómo copiar archivos con Docker cp a su Docker Container

Actualización de contenedores Docker con cero o mínimo tiempo de inactividad

Cómo usar SSH en un contenedor Docker

Cómo implementar CouchDB como un clúster con Docker

Cómo:Introducción a los contenedores de Windows y Docker

Cómo gestionar contenedores Docker