Docker è uno strumento che consente di creare, distribuire e gestire pacchetti autonomi e leggeri chiamati contenitori . Questi contenitori hanno il codice, le librerie, il runtime, le impostazioni di sistema e le dipendenze necessarie per eseguire un'applicazione.
Questa guida illustra l'installazione del Docker Engine su varie distribuzioni Linux utilizzando YUM o DNF gestore di pacchetti, inclusi CentOS e Fedora, oltre a ottenere ed eseguire immagini Docker.
Prima di iniziare
-
Assicurati di avere accesso alla riga di comando a un server Linux che esegue una distribuzione Linux supportata. In caso contrario, segui le guide Introduzione e Configurazione e protezione di un'istanza di calcolo per creare un nuovo Linode.
Nota Questa guida è scritta per un utente non root. I comandi che richiedono privilegi elevati sono preceduti da
sudo
. Se non hai familiarità consudo
comando, vedere la guida Utenti e gruppi. -
Consulta le seguenti guide Docker per comprendere meglio Docker, i suoi vantaggi e quando utilizzarlo.
- Introduzione a Docker
- Quando e perché utilizzare Docker
Installazione del motore Docker
Docker Engine è il software di containerizzazione sottostante utilizzato durante la distribuzione di container Docker. Le seguenti istruzioni installeranno Docker su CentOS e Fedora usando YUM gestore di pacchetti.
Distribuzioni supportate: CentOS 7, CentOS 8 (inclusi altri derivati di RHEL 8 come AlmaLinux e RockyLinux) e Fedora 32 (e successivi)
Nota Mentre il YUM il gestore dei pacchetti è stato sostituito con DNF su CentOS 8 e Fedora, il yum
il comando è ancora presente come collegamento simbolico a DNF. Pertanto, queste istruzioni continuano a funzionare come previsto.
-
Assicurati che Docker non sia attualmente installato. L'output che indica che nessuno dei pacchetti è stato trovato può essere tranquillamente ignorato.
sudo yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine
-
Installa yum-utils pacchetto, che include
yum-config-manager
. Questo installerà automaticamentednf-plugins-core
quando si utilizza DNF.sudo yum install yum-utils
-
Aggiungi il repository Docker, usando
yum-config-manager
. Questo si associa automaticamente aldnf config-manager
comando quando si utilizza DNF. Nel comando seguente, sostituisci[url]
con l'URL del repository per la tua distribuzione:sudo yum-config-manager --add-repo [url]
- RHEL/CentOS e derivati:
https://download.docker.com/linux/centos/docker-ce.repo
- Fedora 32 e successivi:
https://download.docker.com/linux/fedora/docker-ce.repo
- RHEL/CentOS e derivati:
-
Installa Docker Engine e altri pacchetti richiesti:
sudo yum install docker-ce docker-ce-cli containerd.io
Durante questo passaggio, potrebbe essere richiesto di accettare la chiave GPG. L'impronta dovrebbe essere
060A 61C5 1B55 8A7F 742B 77AA C52F EB6B 621E 9F35
. Verifica questi dettagli e inserisci y accettare.
Ulteriori istruzioni di installazione per queste distribuzioni sono disponibili nella documentazione di Docker:
- Installa Docker Engine su CentOS
- Installa Docker Engine su Fedora
Avvio e test di Docker
Dopo aver installato Docker Engine, avvia Docker e verifica che tutto funzioni eseguendo un'immagine di prova.
-
Assicurati che il server Docker sia in esecuzione.
sudo systemctl start docker
-
Facoltativamente, configurare Docker per l'avvio all'avvio del server. Questa operazione è consigliata se intendi eseguire un'applicazione di produzione all'interno di questa installazione Docker.
sudo systemctl enable docker sudo systemctl enable containerd
-
Verifica che Docker sia installato correttamente eseguendo l'immagine "hello-world".
sudo docker run hello-world
In caso di esito positivo, Docker dovrebbe scaricare ed eseguire l'immagine hello-world e generare un messaggio di successo. Tra l'altro testo, l'output dovrebbe includere un messaggio simile al seguente:
Hello from Docker! This message shows that your installation appears to be working correctly.
Gestione di Docker con un utente non root
Per impostazione predefinita, sudo
è necessario per eseguire i comandi Docker, ma un nuovo gruppo, chiamato docker , è stato creato durante l'installazione. Quando il demone Docker si avvia, apre un socket Unix per la docker membri del gruppo.
Prima di continuare, assicurati di disporre di un account utente limitato non appartengono al gruppo sudo. Se non hai ancora creato un account utente limitato, consulta le guide Configurazione e protezione di un'istanza di calcolo o Utenti e gruppi Linux per istruzioni.
-
Immettere il comando seguente per aggiungere un utente alla docker gruppo, sostituendo [utente] con il nome del tuo account utente limitato.
sudo usermod -aG docker [user]
-
Accedi al sistema come utente limitato.
-
Verifica che l'utente limitato possa eseguire
docker
comandi senzasudo
eseguendo ancora una volta l'immagine "hello-world".docker run hello-world
L'output dovrebbe avere un messaggio di successo simile all'output precedente.
Attenzione La finestra mobile group concede privilegi simili a quelli dell'utente root. Consulta la guida Docker Daemon Attack Surface nella documentazione di Docker per ulteriori informazioni su come ciò può influire sulla sicurezza del sistema. Per eseguire il demone Docker senza utilizzare i privilegi di root, segui le istruzioni in Esegui il demone Docker come utente non root (modalità senza root).
Risoluzione degli errori durante il caricamento dei file di configurazione
Se l'utente ha eseguito sudo docker
comandi prima di entrare nel gruppo, potrebbe essere presentato un errore durante il caricamento del file di configurazione, come questo:
WARNING: Error loading config file: /home/user/.docker/config.json -
stat /home/user/.docker/config.json: permission denied
Il problema è che la directory .docker nella loro home directory (~/.docker) è stata creata con i permessi concessi da sudo
.
Ci sono due possibili soluzioni:
-
Rimuovere il
.docker
directory dalla loro directory home. Docker lo ricreerà automaticamente, ma tutte le impostazioni personalizzate andranno perse. -
Modifica le autorizzazioni su
.docker
directory utilizzando i comandi:sudo chown example_user:example_user /home/example_user/.docker -R sudo chmod g+rwx "/home/example_user/.docker" -R
Utilizzo di immagini Docker per distribuire contenitori
Le immagini Docker sono modelli che includono le istruzioni e le specifiche per la creazione di un contenitore. Per utilizzare Docker, devi prima ottenere un'immagine o crearne una tua creando un dockerfile. Per ulteriori informazioni, consulta Introduzione a Docker.
Elenco immagini
Per elencare tutte le immagini sul tuo sistema, esegui il comando seguente. Questo dovrebbe produrre il hello-world immagine che è stata utilizzata in un passaggio precedente, nonché eventuali immagini aggiuntive che potresti aver già ottenuto.
docker images
Trovare un'immagine
Le immagini vengono archiviate nei registri Docker, come Docker Hub (il registro ufficiale di Docker). Puoi cercare le immagini su quel sito Web o utilizzare il comando seguente per cercare nel registro Docker. Nel comando seguente, sostituisci [keyword]
con le parole chiave che desideri cercare, come nginx o apache .
docker search [keyword]
Come ottenere un'immagine
Una volta trovata un'immagine, scaricala sul tuo server. Nel comando seguente, sostituisci [image]
con il nome dell'immagine che desideri utilizzare.
docker pull [image]
Ad esempio, per visualizzare l'immagine ufficiale di nginx, esegui:docker pull nginx
.
Esecuzione di un'immagine
Quindi, crea un contenitore basato sull'immagine utilizzando docker run
comando. Di nuovo, sostituisci [image]
con il nome dell'immagine che desideri utilizzare.
docker run [image]
Se l'immagine non è stata ancora scaricata ed è disponibile nel registro di Docker, l'immagine verrà automaticamente scaricata sul tuo server.
Gestione dei contenitori Docker
Contenitori di elenchi
Per elencare tutti i contenitori Docker attivi (e inattivi) in esecuzione sul tuo sistema, esegui il comando seguente:
docker ps -a
L'output dovrebbe essere simile al seguente. Questo output di esempio mostra il hello-world
contenitore.
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
5039168328a5 hello-world "/hello" 2 hours ago Exited (0) 2 hours ago magical_varahamihira
Avvio di un container
Avvia un container Docker con il comando seguente, sostituendo [ID]
con l'ID contenitore corrispondente al contenitore che desideri avviare:
docker start [ID]
Arresto di un container
Arresta un container Docker con il comando seguente, sostituendo [ID]
con l'ID contenitore corrispondente al contenitore che desideri fermare:
docker stop [ID]
Alcune immagini (come hello-world
image) si arrestano automaticamente dopo l'esecuzione. Tuttavia, molti altri contenitori continuano a essere eseguiti fino a quando non viene esplicitamente comandato l'arresto e potresti voler eseguire questi contenitori in background. In questi casi, questo comando può tornare utile.
Rimozione di un container
Rimuovere un contenitore Docker con il seguente comando, sostituendo [ID]
con l'ID contenitore corrispondente al contenitore che desideri rimuovere:
docker rm [ID]
Maggiori informazioni
Si consiglia di consultare le seguenti risorse per ulteriori informazioni su questo argomento. Sebbene questi siano forniti nella speranza che possano essere utili, tieni presente che non possiamo garantire l'accuratezza o la tempestività dei materiali ospitati esternamente.
- Sito Web per Docker
- Documentazione per Docker
- Sito web per container