In questa 4 serie di articoli, si discuterà di finestra Mobile, che è un open-source, leggero strumento di virtualizzazione che corre in alto di livello di Sistema Operativo, consentendo agli utenti di creare, eseguire e distribuire applicazioni, incapsulato in piccoli contenitori.
Questo tipo di contenitori Linux ha dimostrato di essere veloce, portatile e sicuro. I processi eseguiti in un contenitore Docker sono sempre isolati dall’host principale, impedendo la manomissione esterna.
Questo tutorial fornisce un punto di partenza su come installare Docker, creare ed eseguire contenitori Docker su CentOS / RHEL 8/7, ma graffia a malapena la superficie di Docker.
Passo 1: Installare e configurare Docker
1. Le versioni precedenti di Docker erano chiamate docker o docker-engine, se le hai installate, devi disinstallarle prima di installare una versione più recente di docker-ce.
# 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 impostare il repository Docker e installare il pacchetto yum-utils per abilitare il repository stabile Docker sul sistema.
# yum install -y yum-utils# yum-config-manager \ --add-repo \ https://download.docker.com/linux/centos/docker-ce.repo
3. Ora installa la versione più recente di docker-ce dal repository Docker e containerd manualmente, 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, avviare il demone, verificarne lo stato e abilitarlo a livello di sistema utilizzando i seguenti comandi:
# systemctl start docker # systemctl status docker# systemctl enable docker
5. Infine, esegui un’immagine di test del contenitore per verificare se Docker funziona correttamente, emettendo il seguente comando:
# docker run hello-world
Se riesci a vedere il messaggio sottostante, allora tutto è nel posto giusto.
Output di esempio
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 bashShare 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, è possibile eseguire alcuni comandi Docker di base per ottenere alcune informazioni su Docker:
For system-wide information on Docker
# docker info
For Docker version
# docker version
7. To get a list of all available Docker commands type docker on your console.
# docker
Passo 2: Scaricare un Pannello Immagine
8. Per avviare ed eseguire un contenitore Docker, innanzitutto, un’immagine deve essere scaricata da Docker Hub sul tuo host. Docker Hub offre un sacco di immagini gratuite dai suoi repository.
Per cercare un’immagine Docker, Ubuntu, ad esempio, emette il seguente comando:
# docker search ubuntu
9. Dopo aver deciso che tipo di immagine che si desidera eseguire in base alle vostre esigenze, scaricarlo in locale eseguendo il seguente comando (in questo caso Ubuntu immagine è scaricato e utilizzato):
# docker pull ubuntu
10. Elenco di tutti i Docker immagini sul tuo host, immettere 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
Passo 3: Esegui un contenitore Docker
Quando esegui un comando contro un’immagine ottieni fondamentalmente un contenitore. Dopo che il comando che viene eseguito nel contenitore termina, il contenitore si arresta (si ottiene un contenitore non in esecuzione o uscito). Se si esegue di nuovo un altro comando nella stessa immagine, viene creato un nuovo contenitore e così via.
Tutti i contenitori creati rimarranno sul filesystem host fino a quando non si sceglie di eliminarli utilizzando il comandodocker rm
.
12. Per la creazione e l’esecuzione di un contenitore, è necessario eseguire il comando in una immagine scaricata, in questo caso, Ubuntu, quindi un comando di base sarebbe quello di visualizzare la distribuzione di file di una versione all’interno del contenitore utilizzando il comando cat, come nel seguente esempio:
# docker run ubuntu cat /etc/issue
Il comando di cui sopra è suddiviso come segue:
# docker run
13. Per eseguire uno dei contenitori di nuovo con il comando che è stato eseguito per creare, in primo luogo, è necessario ottenere l’ID contenitore (o il nome generato automaticamente da scaricatore di porto) eseguendo il seguente comando, che consente di visualizzare un elenco di corsa e si fermò (non in esecuzione) contenitori:
# docker ps -l
14. Una volta ottenuto l’ID contenitore, è possibile avviare nuovamente il contenitore con il comando che è stato utilizzato per crearlo, emettendo il seguente comando:
# docker start 923a720da57f
Qui, la stringa 923a720da57f
rappresenta l’ID contenitore.
15. Nel caso in cui il contenitore sia in esecuzione, è possibile ottenere il suo ID emettendo il comando docker ps
. Per arrestare il problema del contenitore in esecuzione docker stop
comando specificando l’ID del contenitore o il nome generato automaticamente.
# docker stop 923a720da57fOR# docker stop cool_lalande# docker ps
16. Un’alternativa più elegante in modo da non dover ricordare l’ID del contenitore sarebbe quella di allocare un nome univoco per ogni contenitore creato utilizzando l’opzione--name
sulla riga di comando, come nell’esempio seguente:
# docker run --name ubuntu20.04 ubuntu cat /etc/issue
17. Quindi, usando il nome che hai allocato per il contenitore, puoi manipolare il contenitore (start, stop, remove, top, stats) ulteriormente 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: Eseguire una sessione interattiva in un contenitore
18. Per connetterti in un contenitore sessione di shell ed eseguire comandi come fare su qualsiasi altro Linux sessione, emettere il seguente comando:
# docker run -it ubuntu bash
Il comando di cui sopra è suddiviso come segue:
-
-i
viene utilizzato per avviare una sessione interattiva. -
-t
alloca un TTY e allega stdin e stdout. -
ubuntu
è l’immagine che abbiamo usato per creare il contenitore. -
bash
(o /bin/bash) è il comando che stiamo eseguendo all’interno del contenitore di Ubuntu.
19. Per uscire e tornare a host dalla sessione contenitore in esecuzione è necessario digitareexit
comando. Il comando exit termina tutti i processi del contenitore e lo arresta.
# exit
20. Se si è connessi in modo interattivo al prompt del terminale del contenitore e si deve mantenere il contenitore in stato di esecuzione ma uscire dalla sessione interattiva, è possibile uscire dalla console e tornare al terminale host premendo i tastiCtrl+p
eCtrl+q
.
21. Per riconnettersi al contenitore in esecuzione è necessario l’ID o il nome del contenitore. Emettere il comandodocker ps
per ottenere l’ID o il nome e, quindi, eseguire il comandodocker attach
specificando l’ID o il nome del contenitore, come illustrato nell’immagine sopra:
# docker attach <container id>
22. Per interrompere un contenitore in esecuzione dalla sessione host, eseguire il seguente comando:
# docker kill <container id>
Questo è tutto per la manipolazione di base del contenitore. Nel prossimo tutorial, discuteremo come salvare, eliminare ed eseguire un server Web in un contenitore Docker.