GNU/Linux >> Linux Esercitazione >  >> Linux

Come aggiornare il contenitore Docker senza tempi di inattività

In un ambiente Docker si utilizzano più immagini e si lavora con molti contenitori. Quando esegui un contenitore da un'immagine, continua a eseguire quella versione perché le immagini Docker non si aggiornano automaticamente. Potrebbe essere necessario aggiornarlo manualmente. Si consiglia sempre di eseguire un container dall'ultima immagine Docker.

In questa guida, ti mostreremo esempi pratici di come aggiornare un container in esecuzione senza tempi di inattività.

Prerequisiti

  • Un nuovo server Ubuntu 20.04 sulla piattaforma Atlantic.Net Cloud
  • Una password di root configurata sul tuo server

Fase 1:crea un server cloud Atlantic.Net

Per prima cosa, accedi al tuo server Atlantic.Net Cloud. Crea un nuovo server, scegliendo Ubuntu 20.04 come sistema operativo con almeno 2GB di RAM. Collegati al tuo Cloud Server tramite SSH e accedi utilizzando le credenziali evidenziate in alto nella pagina.

Dopo aver effettuato l'accesso al tuo server Ubuntu 20.04, esegui il comando seguente per aggiornare il tuo sistema di base con gli ultimi pacchetti disponibili.

apt-get update -y

Passaggio 2:installare Docker CE e Docker Compose

Innanzitutto, installa tutte le dipendenze richieste con il seguente comando:

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

Quindi, aggiungi la chiave e il repository Docker GPG con il seguente 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 volta aggiunto il repository, installa Docker e Docker componi con il seguente comando:

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

Una volta installati entrambi i pacchetti, puoi procedere al passaggio successivo.

Passaggio 3:crea un file di composizione Docker

Ai fini di questo tutorial, creeremo una rete docker, un volume e un file docker-compose.yml per distribuire un container Ghost.

Innanzitutto, crea una rete denominata net e un volume denominato ghost utilizzando il comando seguente:

docker network create net
docker volume create ghost

Quindi, crea una directory per il progetto Ghost con il seguente comando:

mkdir Ghost

Quindi, cambia la directory in Ghost e crea un file docker-compose.yml:

cd Ghost
nano docker-compose.yml

Aggiungi le seguenti righe:

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

Salva e chiudi il file quando hai finito.

Il file sopra scaricherà l'immagine Ghost versione 3.36 e creerà un contenitore Ghost per il dominio ghost.example.com.

Fase 4:crea un contenitore fantasma

Ora cambia la directory in Ghost e avvia il contenitore Ghost usando il seguente comando:

docker-compose up -d

Dovresti ottenere il seguente output:

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

Puoi controllare l'immagine Ghost con il seguente comando:

docker images

Uscita:

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

Puoi anche controllare il contenitore Ghost con il seguente comando:

docker ps

Uscita:

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

Passaggio 5:aggiorna il file Docker Compose

In questa sezione, aggiorneremo il file di composizione Docker e cambieremo la versione Ghost da 3.36 a 3.37.1:

nano docker-compose.yml

Apporta le seguenti modifiche:

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

Salva e chiudi il file quando hai finito.

Fase 6:avvia un nuovo container fantasma

Ora useremo il metodo di ridimensionamento per creare un nuovo contenitore Ghost senza influire sul vecchio contenitore Ghost. Puoi farlo con il seguente comando:

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

Dovresti ottenere il seguente output:

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

Puoi controllare la nuova immagine Ghost con il seguente comando:

docker images

Uscita:

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

Puoi anche controllare il nuovo contenitore Ghost con il seguente comando:

docker ps

Uscita:

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

Fase 7:scala il nuovo contenitore fantasma

A questo punto, entrambi i container Ghost funzionano utilizzando la stessa configurazione. Ora ci fermeremo e rimuoveremo il vecchio contenitore Ghost.

docker container stop ghost_ghost_1
docker container rm ghost_ghost_1

Ora, esegui il comando seguente per ridurre la configurazione alle impostazioni originali:

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

Puoi anche controllare il nuovo registro del contenitore Ghost per ulteriori informazioni.

docker logs ghost_ghost_2

Uscita:

[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.

Il tuo container Ghost è ora aggiornato con una nuova immagine Ghost.

Conclusione

Nella guida sopra, hai imparato come aggiornare il contenitore Docker senza tempi di inattività. Inizia ad aggiornare il tuo container Docker sull'hosting VPS da Atlantic.Net!


Linux
  1. Come installare WordPress con Docker su Ubuntu

  2. Come installare Jenkins con Docker

  3. Come aggiornare un ISO con Zsync?

  4. Come distribuire un container nginx con Docker su Linode

  5. Come eseguire MySQL in un contenitore Docker

Come copiare file con Docker cp nel tuo Docker Container

Aggiornamento dei contenitori Docker con tempi di inattività pari a zero o minimi

Come SSH in un Docker Container

Come distribuire CouchDB come cluster con Docker

Procedura:Introduzione a Windows Containers e Docker

Come gestire i container Docker