Ricerca nel sito web

Installa Docker e scopri la manipolazione di base dei contenitori in CentOS e RHEL 8/7 - Parte 1


In questa serie di 4 articoli, discuteremo di Docker, uno strumento di virtualizzazione leggero open source che viene eseguito al livello superiore del sistema operativo, consentendo agli utenti di creare, eseguire e distribuire applicazioni, incapsulate in piccoli contenitori.

È dimostrato che questo tipo di contenitori Linux sono veloci, portatili e sicuri. I processi eseguiti in un contenitore Docker sono sempre isolati dall'host principale, impedendo manomissioni esterne.

Questo tutorial fornisce un punto di partenza su come installare Docker, creare ed eseguire contenitori Docker su CentOS/RHEL 8/7, ma graffia appena la superficie di Docker.

Passaggio 1: installa e configura Docker

1. Le versioni precedenti di Docker erano chiamate docker o docker-engine, se le hai installate, devi disinstallarli prima di installare una versione docker-ce più recente.

yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine

2. Per installare l'ultima versione del motore Docker è necessario configurare il repository Docker e installare il pacchetto yum-utils per abilitare Docker repository stabile sul sistema.

yum install -y yum-utils
yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo

3. Ora installa manualmente la versione più recente di docker-ce dal repository Docker e container, perché a causa di alcuni problemi, Red Hat ha bloccato l'installazione di containerd.io > 1.2.0-3.el7, che è una dipendenza di docker-ce.

yum install https://download.docker.com/linux/centos/7/x86_64/stable/Packages/containerd.io-1.2.6-3.3.el7.x86_64.rpm
yum install docker-ce docker-ce-cli

4. Dopo aver installato il pacchetto Docker, avvia il demone, controlla il suo stato e abilitalo a livello di sistema utilizzando i comandi seguenti:

systemctl start docker 
systemctl status docker
systemctl enable docker

5. Infine, esegui un'immagine di prova del contenitore per verificare se Docker funziona correttamente, emettendo il seguente comando:

docker run hello-world

Se riesci a vedere il messaggio qui sotto, allora è tutto nel posto giusto.

Uscita del campione
Hello from Docker!
This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:
 1. The Docker client contacted the Docker daemon.
 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
    (amd64)
 3. The Docker daemon created a new container from that image which runs the
    executable that produces the output you are currently reading.
 4. The Docker daemon streamed that output to the Docker client, which sent it
    to your terminal.

To try something more ambitious, you can run an Ubuntu container with:
 $ docker run -it ubuntu bash

Share images, automate workflows, and more with a free Docker ID:
 https://hub.docker.com/

For more examples and ideas, visit:
 https://docs.docker.com/get-started/

6. Ora puoi eseguire alcuni comandi Docker di base per ottenere alcune informazioni su Docker:

Per informazioni a livello di sistema su Docker
docker info

Per la versione Docker
docker version

7. Per ottenere un elenco di tutti i comandi Docker disponibili, digita docker sulla tua console.

docker

Passaggio 2: scarica un'immagine Docker

8. Per avviare ed eseguire un contenitore Docker, è necessario innanzitutto scaricare un'immagine da Docker Hub sul tuo host. Docker Hub offre molte immagini gratuite dai suoi repository.

Per cercare un'immagine Docker, Ubuntu, ad esempio, emetti il seguente comando:

docker search ubuntu

9. Dopo aver deciso quale immagine eseguire in base alle tue esigenze, scaricala localmente eseguendo il comando seguente (in questo caso viene scaricata e utilizzata un'immagine Ubuntu ):

docker pull ubuntu

10. Per elencare tutte le immagini Docker disponibili sul tuo host, esegui il seguente comando:

docker images

11. Se non hai più bisogno di un'immagine Docker e vuoi rimuoverla dall'host, esegui il seguente comando:

docker rmi ubuntu

Passaggio 3: eseguire un contenitore Docker

Quando esegui un comando su un'immagine ottieni sostanzialmente un contenitore. Al termine del comando in esecuzione nel contenitore, il contenitore si arresta (si ottiene un contenitore non in esecuzione o uscito). Se esegui nuovamente un altro comando nella stessa immagine, viene creato un nuovo contenitore e così via.

Tutti i contenitori creati rimarranno sul filesystem host finché non sceglierai di eliminarli utilizzando il comando docker rm.

12. Per creare ed eseguire un contenitore, è necessario eseguire il comando in un'immagine scaricata, in questo caso Ubuntu, quindi un comando di base sarebbe visualizzare il file della versione di distribuzione all'interno del contenitore utilizzando il comando cat, come nell'esempio seguente:

docker run ubuntu cat /etc/issue

Il comando precedente è suddiviso come segue:

docker run [local image] [command to run into container]

13. Per eseguire nuovamente uno dei contenitori con il comando eseguito per crearlo, è necessario innanzitutto ottenere l'ID del contenitore (o il nome generato automaticamente da Docker) emettendo il comando seguente, che visualizza un elenco dei contenitori in esecuzione e arrestati (non in esecuzione):

docker ps -l 

14. Una volta ottenuto l'ID del contenitore, è possibile riavviare il contenitore con il comando utilizzato per crearlo, emettendo il seguente comando:

docker start 923a720da57f

Qui, la stringa 923a720da57f rappresenta l'ID del contenitore.

15. Nel caso in cui il contenitore sia in esecuzione, puoi ottenere il suo ID eseguendo il comando docker ps. Per interrompere il contenitore in esecuzione, esegui il comando docker stop specificando l'ID del contenitore o il nome generato automaticamente.

docker stop 923a720da57f
OR
docker stop cool_lalande
docker ps

16. Un'alternativa più elegante per non dover ricordare l'ID del contenitore sarebbe quella di assegnare un nome univoco per ogni contenitore creato utilizzando - -name opzione sulla riga di comando, come nel seguente esempio:

docker run --name ubuntu20.04 ubuntu cat /etc/issue

17. Quindi, utilizzando il nome che hai assegnato al contenitore, puoi manipolare il contenitore (avvia, stop, rimuovi, top, stats) semplicemente indirizzando il suo nome, come negli esempi seguenti:

docker start ubuntu20.04
docker stats ubuntu20.04
docker top ubuntu20.04 

Tieni presente che alcuni dei comandi precedenti potrebbero non visualizzare alcun output se il processo di comando utilizzato per creare il contenitore termina. Al termine del processo eseguito all'interno del contenitore, il contenitore si arresta.

Passaggio 4: esegui una sessione interattiva in un contenitore

18. Per connetterti in modo interattivo a una sessione della shell del contenitore ed eseguire comandi come fai su qualsiasi altra sessione Linux, immetti il seguente comando:

docker run -it ubuntu bash

Il comando precedente è suddiviso come segue:

  1. -i viene utilizzato per avviare una sessione interattiva.
  2. -t alloca un TTY e allega stdin e stdout.
  3. ubuntu è l'immagine che abbiamo utilizzato per creare il contenitore.
  4. bash (o /bin/bash) è il comando che stiamo eseguendo all'interno del contenitore Ubuntu.

19. Per uscire e tornare all'host dalla sessione del contenitore in esecuzione è necessario digitare il comando exit. Il comando exit termina tutti i processi del contenitore e lo arresta.

exit

20. Se hai effettuato l'accesso in modo interattivo al prompt del terminale del contenitore e devi mantenere il contenitore in stato di esecuzione ma uscire dalla sessione interattiva, puoi esci< dalla console e torna al terminale host premendo i tasti Ctrl+p e Ctrl+q.

21. Per riconnettersi al contenitore in esecuzione è necessario l'ID o il nome del contenitore. Emetti il comando docker ps per ottenere l'ID o il nome e, quindi, esegui il comando docker attach specificando il contenitore ID o nome, come illustrato nell'immagine sopra:

docker attach <container id>

22. Per interrompere un contenitore in esecuzione dalla sessione host, immetti il seguente comando:

docker kill <container id>

Questo è tutto per quanto riguarda la manipolazione di base dei contenitori. Nel prossimo tutorial discuteremo come salvare, eliminare ed eseguire un server Web in un contenitore Docker.