GNU/Linux >> Linux Esercitazione >  >> Cent OS

Come installare Docker CE su RHEL 8 / CentOS 8

L'ultima versione di RHEL 8 / CentOS 8. Red Hat ha creato i propri strumenti, buildah e podman , che mirano ad essere compatibili con le immagini docker esistenti e funzionano senza fare affidamento su un demone, consentendo la creazione di container come normali utenti, senza la necessità di permessi speciali (con alcune limitazioni:ad es. al momento della scrittura, non è ancora possibile mappa le porte host al container senza privilegi).

Tuttavia, mancano ancora alcuni strumenti specifici:un equivalente di docker-compose , ad esempio non esiste ancora. In questo tutorial vedremo come installare ed eseguire Docker CE originale su Rhel8 utilizzando il repository Docker ufficiale per CentOS7.

In questo tutorial imparerai:

  • Come abilitare il repository docker-ce su RHEL 8 / CentOS 8
  • Come installare docker e docker-compose su RHEL 8 / CentOS 8


Docker installato su RHEL 8 / CentOS 8

Requisiti e convenzioni software utilizzati

Requisiti software e convenzioni della riga di comando Linux
Categoria Requisiti, convenzioni o versione del software utilizzata
Sistema RHEL 8 / CentOS 8
Software Docker versione 18.09.2
Altro Autorizzazione a eseguire il comando con privilegi di root.
Convenzioni # – richiede che i comandi linux dati vengano eseguiti con i privilegi di root direttamente come utente root o usando sudo comando
$ – richiede che i comandi linux dati vengano eseguiti come un normale utente non privilegiato

Cos'è Docker?

Docker è un progetto open source che consente la creazione e la distribuzione di applicazioni all'interno di containers , che sono ambienti standardizzati che possono essere facilmente replicati, indipendentemente dal sistema host. Mentre in Red Hat Enterprise Linux 7 Docker era ufficialmente supportato, nella nuova versione di questo sistema operativo open source, è stato sostituito da una serie di altri strumenti sviluppati dalla stessa Red Hat:buildah e podman .

Utilizzando un repository esterno, tuttavia, è ancora possibile installare Docker CE (Community Edition). In questo tutorial vedremo come installare questo repository; si noti tuttavia che originariamente era pensato per CentOS 7 (un clone RHEL) e la versione community di Docker non ha supporto ufficiale per Red Hat Enterprise Linux. Per questo motivo, esistono problemi:li discutiamo di seguito.

Aggiunta del repository esterno

Poiché Docker non è disponibile su RHEL 8 / CentOS 8, è necessario aggiungere un repository esterno per ottenere il software. In questo caso utilizzeremo il repository ufficiale di Docker CE CentOS:questo è, al momento in cui scriviamo, l'unico modo per installare Docker CE su RHEL 8 / CentOS 8.

Il dnf config-manager utility ci consente, tra le altre cose, di abilitare o disabilitare facilmente un repository nella nostra distribuzione. Per impostazione predefinita, solo appstream e baseos i repository sono abilitati su Rhel8; dobbiamo aggiungere e abilitare anche il docker-ce repo. Tutto quello che dobbiamo fare per portare a termine questo compito, è eseguire il seguente comando:

$ sudo dnf config-manager --add-repo=https://download.docker.com/linux/centos/docker-ce.repo

Possiamo verificare che il repository sia stato abilitato, osservando l'output del seguente comando:

$ sudo dnf repolist -v

Il comando sopra restituirà informazioni dettagliate su tutti i repository abilitati. Questo è ciò che dovresti vedere a questo punto:

Repo-id      : docker-ce-stable
Repo-name    : Docker CE Stable - x86_64
Repo-revision: 1549905809
Repo-updated : Mon 11 Feb 2019 06:23:29 PM CET
Repo-pkgs    : 30
Repo-size    : 618 M
Repo-baseurl : https://download.docker.com/linux/centos/7/x86_64/stable
Repo-expire  : 172,800 second(s) (last: Mon 18 Feb 2019 10:23:54 AM CET)
Repo-filename: /etc/yum.repos.d/docker-ce.repo

Repo-id      : rhel-8-for-x86_64-appstream-rpms
Repo-name    : Red Hat Enterprise Linux 8 for x86_64 - AppStream Beta (RPMs)
Repo-revision: 1542158694
Repo-updated : Wed 14 Nov 2018 02:24:54 AM CET
Repo-pkgs    : 4,594
Repo-size    : 4.9 G
Repo-baseurl : https://cdn.redhat.com/content/beta/rhel8/8/x86_64/appstream/os
Repo-expire  : 86,400 second(s) (last: Mon 18 Feb 2019 10:23:55 AM CET)
Repo-filename: /etc/yum.repos.d/redhat.repo

Repo-id      : rhel-8-for-x86_64-baseos-rpms
Repo-name    : Red Hat Enterprise Linux 8 for x86_64 - BaseOS Beta (RPMs)
Repo-revision: 1542158719
Repo-updated : Wed 14 Nov 2018 02:25:19 AM CET
Repo-pkgs    : 1,686
Repo-size    : 925 M
Repo-baseurl : https://cdn.redhat.com/content/beta/rhel8/8/x86_64/baseos/os
Repo-expire  : 86,400 second(s) (last: Mon 18 Feb 2019 10:23:56 AM CET)
Repo-filename: /etc/yum.repos.d/redhat.repo
Total packages: 6,310

Installazione di Docker-ce

Il docker-ce-stable repository è ora abilitato sul nostro sistema. Il repository contiene diverse versioni di docker-ce pacchetto, per visualizzarli tutti, possiamo eseguire:

$ dnf list docker-ce --showduplicates | sort -r
docker-ce.x86_64            3:19.03.2-3.el7                     docker-ce-stable
docker-ce.x86_64            3:19.03.1-3.el7                     docker-ce-stable
docker-ce.x86_64            3:19.03.0-3.el7                     docker-ce-stable
docker-ce.x86_64            3:18.09.9-3.el7                     docker-ce-stable
docker-ce.x86_64            3:18.09.8-3.el7                     docker-ce-stable
docker-ce.x86_64            3:18.09.7-3.el7                     docker-ce-stable
docker-ce.x86_64            3:18.09.6-3.el7                     docker-ce-stable
docker-ce.x86_64            3:18.09.5-3.el7                     docker-ce-stable
docker-ce.x86_64            3:18.09.4-3.el7                     docker-ce-stable
docker-ce.x86_64            3:18.09.3-3.el7                     docker-ce-stable
docker-ce.x86_64            3:18.09.2-3.el7                     docker-ce-stable
docker-ce.x86_64            3:18.09.1-3.el7                     docker-ce-stable
docker-ce.x86_64            3:18.09.0-3.el7                     docker-ce-stable
docker-ce.x86_64            18.06.3.ce-3.el7                    docker-ce-stable
docker-ce.x86_64            18.06.2.ce-3.el7                    docker-ce-stable
docker-ce.x86_64            18.06.1.ce-3.el7                    docker-ce-stable
docker-ce.x86_64            18.06.0.ce-3.el7                    docker-ce-stable
docker-ce.x86_64            18.03.1.ce-1.el7.centos             docker-ce-stable
docker-ce.x86_64            18.03.0.ce-1.el7.centos             docker-ce-stable
docker-ce.x86_64            17.12.1.ce-1.el7.centos             docker-ce-stable
docker-ce.x86_64            17.12.0.ce-1.el7.centos             docker-ce-stable
docker-ce.x86_64            17.09.1.ce-1.el7.centos             docker-ce-stable
docker-ce.x86_64            17.09.0.ce-1.el7.centos             docker-ce-stable
docker-ce.x86_64            17.06.2.ce-1.el7.centos             docker-ce-stable
docker-ce.x86_64            17.06.1.ce-1.el7.centos             docker-ce-stable
docker-ce.x86_64            17.06.0.ce-1.el7.centos             docker-ce-stable
docker-ce.x86_64            17.03.3.ce-1.el7                    docker-ce-stable
docker-ce.x86_64            17.03.2.ce-1.el7.centos             docker-ce-stable
docker-ce.x86_64            17.03.1.ce-1.el7.centos             docker-ce-stable
docker-ce.x86_64            17.03.0.ce-1.el7.centos             docker-ce-stable

Quale versione installare? Bene, Red Hat sembra aver bloccato in qualche modo l'installazione di containerd.io> 1.2.0-3.el7 , che è una dipendenza di docker-ce . Per questo motivo, è sufficiente eseguire sudo dnf install docker-ce comando, non funzionerà. Come vedremo tra un minuto, è ancora possibile aggirare questo problema; una volta docker-ce è installato, tuttavia, diventa evidente un altro problema:fintanto che firewalld , il gestore del firewall di sistema è abilitato, DNS resolution all'interno dei contenitori Docker non funziona.

Questo è, ovviamente, un problema critico. Tuttavia, se vuoi comunque procedere con l'installazione, ecco i possibili metodi che possono essere utilizzati per evitare problemi di dipendenze:

  • Installa una versione specifica di docker-ce che richiede una versione installabile di containerd.io pacchetto;
  • Forza l'installazione fornendo il --nobest opzione
  • Installa l'ultimo containerd.io disponibile rpm manualmente;

Installa una versione specifica di docker-ce

Al momento della scrittura le versioni di docker-ce installati senza problemi sono:

  • docker-ce-3:18.09.1-3.el7
  • docker-ce-18.06.3.ce-3.el7;
  • docker-ce-17.12.1.ce-1.el7.centos

Per installare una versione specifica, tutto ciò che dobbiamo fare è fornire il nome completo del pacchetto, ad esempio:

$ sudo dnf install docker-ce-3:18.09.1-3.el7

Forza l'installazione di docker-ce con l'opzione –nobest

Normalmente, quando si installa un pacchetto, il miglior candidato disponibile viene selezionato da un repository. In questo caso, ad esempio, l'installazione dell'ultima versione di docker-ce viene tentato (e fallisce). Usando il --nobest opzione, possiamo modificare questo comportamento in modo che la prima versione di docker-ce con dipendenze soddisfacenti è selezionato come “fallback”, in questo caso 3:18.09.1-3.el7 .

$ sudo dnf install --nobest docker-ce
Dependencies resolved.

Problem: package docker-ce-3:19.03.2-3.el7.x86_64 requires containerd.io >= 1.2.2-3, but none of the providers can be installed
  - cannot install the best candidate for the job
  - package containerd.io-1.2.2-3.3.el7.x86_64 is excluded
  - package containerd.io-1.2.2-3.el7.x86_64 is excluded
  - package containerd.io-1.2.4-3.1.el7.x86_64 is excluded
  - package containerd.io-1.2.5-3.1.el7.x86_64 is excluded
  - package containerd.io-1.2.6-3.3.el7.x86_64 is excluded
=======================================================================================================================================================
 Package                            Arch         Version                                                  Repository                              Size
=======================================================================================================================================================
Installing:
 docker-ce                          x86_64       3:18.09.1-3.el7                                          docker-ce-stable                        19 M
Installing dependencies:
 containerd.io                      x86_64       1.2.0-3.el7                                              docker-ce-stable                        22 M
 docker-ce-cli                      x86_64       1:19.03.2-3.el7                                          docker-ce-stable                        39 M
 container-selinux                  noarch       2:2.94-1.git1e99f1d.module+el8.0.0+4017+bbba319f         rhel-8-for-x86_64-appstream-rpms        43 k
 tar                                x86_64       2:1.30-4.el8                                             rhel-8-for-x86_64-baseos-rpms          838 k
 libcgroup                          x86_64       0.41-19.el8                                              rhel-8-for-x86_64-baseos-rpms           70 k
 python3-policycoreutils            noarch       2.8-16.1.el8                                             rhel-8-for-x86_64-baseos-rpms          2.2 M
 python3-libsemanage                x86_64       2.8-5.el8                                                rhel-8-for-x86_64-baseos-rpms          127 k
 python3-setools                    x86_64       4.2.0-2.el8                                              rhel-8-for-x86_64-baseos-rpms          598 k
 checkpolicy                        x86_64       2.8-2.el8                                                rhel-8-for-x86_64-baseos-rpms          338 k
 python3-audit                      x86_64       3.0-0.10.20180831git0047a6c.el8                          rhel-8-for-x86_64-baseos-rpms           85 k
 policycoreutils-python-utils       noarch       2.8-16.1.el8                                             rhel-8-for-x86_64-baseos-rpms          228 k
Skipping packages with broken dependencies:
 docker-ce                          x86_64       3:19.03.2-3.el7                                          docker-ce-stable                        24 M

Transaction Summary
=======================================================================================================================================================
Install  12 Packages
Skip      1 Package

Total download size: 85 M
Installed size: 351 M
Is this ok [y/N]:

Installa manualmente l'ultimo pacchetto containerd.io disponibile

Se dobbiamo assolutamente installare l'ultima versione di docker-ce , possiamo installare la versione richiesta di containerd.io manualmente, eseguendo:

$ sudo dnf install https://download.docker.com/linux/centos/7/x86_64/stable/Packages/containerd.io-1.2.6-3.3.el7.x86_64.rpm

Dopo aver installato il pacchetto, possiamo semplicemente installare l'ultimo docker-ce :

$ sudo dnf install docker-ce
Dependencies resolved.
=======================================================================================================================================================
  Package                          Arch                      Version                             Repository                                        Size
=======================================================================================================================================================
Installing:
  docker-ce                        x86_64                    3:19.03.2-3.el7                     docker-ce-stable                                  24 M
Installing dependencies:
  docker-ce-cli                    x86_64                    1:19.03.2-3.el7                     docker-ce-stable                                  39 M
  tar                              x86_64                    2:1.30-4.el8                        rhel-8-for-x86_64-baseos-rpms                    838 k
  libcgroup                        x86_64                    0.41-19.el8                         rhel-8-for-x86_64-baseos-rpms                     70 k

Transaction Summary
=======================================================================================================================================================
Install  4 Packages

Total download size: 65 M
Installed size: 275 M
Is this ok [y/N]:

Questa opzione è meno conveniente dal momento che containerd.io il pacchetto non è installato come dipendenza di docker-ce , pertanto non verrà rimosso automaticamente alla disinstallazione di quest'ultimo dal sistema.

Qualunque sia il metodo che utilizziamo per installare docker-ce , come detto prima, al fine di effettuare DNS resolution lavorare all'interno dei container Docker, dobbiamo disabilitare firewalld (potrebbe essere necessario anche un riavvio del sistema):

$ sudo systemctl disable firewalld

Avvia e abilita il demone Docker

Una volta docker-ce è installato, dobbiamo avviare e abilitare il demone docker, in modo che venga avviato automaticamente anche all'avvio. Il comando che dobbiamo eseguire è il seguente:

$ sudo systemctl enable --now docker

A questo punto possiamo confermare che il demone è attivo eseguendo:

$ systemctl is-active docker
active

Allo stesso modo, possiamo verificare che sia abilitato all'avvio, eseguendo:

$ systemctl is-enabled docker
enabled

Installazione di Docker-Compose

Docker compose è un pacchetto molto utile che ci permette di gestire applicazioni multi-container, come ad esempio quelle basate sullo stack LAMP, dove ogni parte dell'ambiente (PHP, Apache, MariaDB) è fornita da un container dedicato (se sei interessato nell'argomento, dai un'occhiata al nostro tutorial sulla creazione di una pila di lampade basata su docker). Il pacchetto non è disponibile su Rhel8, né esiste un equivalente da utilizzare con gli strumenti Rhel. Tuttavia, è possibile installarlo in molti modi:continua a leggere e decidi cosa ti si addice di più.

Installazione globale

Il modo in cui dovremmo installare docker-compose varia a seconda se vogliamo installarlo globalmente o solo per un singolo utente. Al momento in cui scrivo, l'unico modo per installarlo globalmente è scaricare il binario dalla pagina github del progetto:

$ curl -L "https://github.com/docker/compose/releases/download/1.23.2/docker-compose-$(uname -s)-$(uname -m)" -o docker-compose

Una volta scaricato il file binario, lo spostiamo in /usr/local/bin e lo rendiamo eseguibile:

$ sudo mv docker-compose /usr/local/bin && sudo chmod +x /usr/local/bin/docker-compose

Il /usr/local la gerarchia non è scelta a caso. Questa struttura di directory è realizzata per essere utilizzata per i file installati manualmente dall'amministratore locale (per il software compilato dal sorgente, ad esempio), in modo da garantire la separazione dal software installato con il gestore di pacchetti di sistema.

Sebbene sia possibile per un utente normale eseguire comandi relativi alla finestra mobile se fa parte della docker group (il gruppo viene creato automaticamente quando installiamo docker-ce), per impostazione predefinita devono essere eseguiti con privilegi di root per motivi di sicurezza. Quando abbiamo bisogno di fare quest'ultimo, dal momento che /usr/local/bin directory non è nel PATH dell'utente root , dobbiamo chiamare il file binario specificandone la posizione o aggiungere /usr/local/bin al PATH si. La prima opzione è quella che consiglio in questo caso.

Installazione per utente

Se il nostro utente fa parte della docker gruppo, e quindi è consentito eseguire comandi docker, e poiché docker-compose è disponibile come pacchetto python, possiamo anche installarlo usando pip , il gestore di pacchetti Python. Innanzitutto, assicurati che pip stesso sia installato:

$ sudo dnf install python3-pip

Per ottenere docker-compose eseguiamo:

$ pip3.6 install docker-compose --user

Tieni presente che anche se fosse possibile eseguire pip come root per installare un pacchetto a livello globale, questo non è raccomandato e altamente sconsigliato.

Testo Docker

Abbiamo installato docker e docker-compose, ora per verificare che tutto funzioni come previsto, possiamo provare a costruire un'immagine ed eseguire un container:in questo caso utilizzeremo il httpd ufficiale uno. Tutto quello che dobbiamo fare è lanciare il seguente comando:

sudo docker run --rm --name=linuxconfig-test -p 80:80 httpd

Dal momento che il httpd l'immagine non esiste localmente verrà automaticamente recuperata e creata. Infine, verrà lanciato in primo piano un contenitore basato su di esso (verrà rimosso automaticamente quando viene interrotto). Dovremmo essere in grado di vedere It works! messaggio quando raggiungiamo l'ip della nostra macchina tramite browser.

Conclusioni

Red Hat Enterprise Linux 8 non supporta Docker:su questa distribuzione è stato sostituito da strumenti propri di Red Hat come buildah e podman , che sono compatibili con Docker ma non necessitano di un'architettura server/client per essere eseguiti. L'utilizzo di strumenti nativi, ove possibile, è sempre la strada consigliata, ma per un motivo o per l'altro potresti comunque voler installare il Docker originale. In questo tutorial abbiamo visto come è possibile installare Docker CE su Rhel8, utilizzando il repository Docker ufficiale per CentOS7, che è un clone compatibile al 100%.

Questa non è una soluzione ideale e, come abbiamo visto, al momento sono necessarie alcune soluzioni alternative per far funzionare Docker su RHEL8. Se sorgono nuovi problemi o vengono trovate soluzioni migliori ai problemi sopra menzionati, questo articolo verrà aggiornato di conseguenza. Resta sintonizzato.


Cent OS
  1. Come installare Docker su CentOS 7

  2. Come installare Docker Compose su CentOS 7

  3. Come installare Docker su CentOS 7 / RHEL 7

  4. Come installare Docker in CentOS

  5. Come installare la finestra mobile su CentOS / RHEL / Fedora

Come installare la bussola su RHEL 8 / CentOS 8

Come installare Puppet su RHEL 8 / CentOS 8

Come installare YUM su RHEL 8 / CentOS 8

Come installare Docker CE su CentOS 8 / RHEL 8

Come installare Docker su CentOS

Come installare Docker su CentOS 7