GNU/Linux >> Znalost Linux >  >> Cent OS

Jak nainstalovat Docker CE na RHEL 8 / CentOS 8

Nejnovější vydání RHEL 8 / CentOS 8. Red Hat vytvořil své vlastní nástroje, buildah a podman , jejichž cílem je být kompatibilní se stávajícími obrazy dockerů a pracovat bez spoléhání se na démona, což umožňuje vytvářet kontejnery jako běžní uživatelé bez potřeby speciálních oprávnění (s určitými omezeními:např. v okamžiku zápisu stále není možné mapovat hostitelské porty na kontejner bez oprávnění).

Některé specifické nástroje však stále chybí:ekvivalent docker-compose , například ještě neexistuje. V tomto tutoriálu uvidíme, jak nainstalovat a spustit původní Docker CE na Rhel8 pomocí oficiálního úložiště Docker pro CentOS7.

V tomto tutoriálu se naučíte:

  • Jak povolit úložiště docker-ce na RHEL 8 / CentOS 8
  • Jak nainstalovat docker a docker-compose na RHEL 8 / CentOS 8


Docker nainstalovaný na RHEL 8 / CentOS 8

Požadavky na software a použité konvence

Softwarové požadavky a konvence příkazového řádku systému Linux
Kategorie Požadavky, konvence nebo použitá verze softwaru
Systém RHEL 8 / CentOS 8
Software Docker verze 18.09.2
Jiné Oprávnění ke spuštění příkazu s právy root.
Konvence # – vyžaduje, aby dané linuxové příkazy byly spouštěny s právy root buď přímo jako uživatel root, nebo pomocí sudo příkaz
$ – vyžaduje, aby dané linuxové příkazy byly spouštěny jako běžný neprivilegovaný uživatel

Co je Docker?

Docker je projekt s otevřeným zdrojovým kódem, který umožňuje vytváření a distribuci aplikací uvnitř containers , což jsou standardizovaná prostředí, která lze snadno replikovat nezávisle na hostitelském systému. Zatímco v Red Hat Enterprise Linux 7 byl Docker oficiálně podporován, v novém vydání tohoto operačního systému s otevřeným zdrojovým kódem byl nahrazen řadou dalších nástrojů vyvinutých samotným Red Hatem:buildah a podman .

Pomocí externího úložiště je však stále možné nainstalovat Docker CE (Community Edition). V tomto tutoriálu uvidíme, jak nainstalovat toto úložiště; všimněte si však, že to bylo původně určeno pro CentOS 7 (klon RHEL) a komunitní verze Dockeru nemá žádnou oficiální podporu pro Red Hat Enterprise Linux. Z tohoto důvodu existují problémy – diskutujeme o nich níže.

Přidání externího úložiště

Protože Docker není k dispozici na RHEL 8 / CentOS 8, musíme pro získání softwaru přidat externí úložiště. V tomto případě použijeme oficiální úložiště Docker CE CentOS:toto je v době psaní článku jediný způsob, jak nainstalovat Docker CE na RHEL 8 / CentOS 8.

dnf config-manager utility nám mimo jiné umožní snadno povolit nebo zakázat úložiště v naší distribuci. Ve výchozím nastavení pouze appstream a baseos úložiště jsou povolena na Rhel8; musíme přidat a povolit také docker-ce repo. Vše, co musíme udělat, abychom tento úkol splnili, je spustit následující příkaz:

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

Můžeme ověřit, že úložiště bylo povoleno, pohledem na výstup následujícího příkazu:

$ sudo dnf repolist -v

Výše uvedený příkaz vrátí podrobné informace o všech povolených úložištích. V tomto bodě byste měli vidět toto:

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

Instalace docker-ce

docker-ce-stable úložiště je nyní v našem systému povoleno. Úložiště obsahuje několik verzí docker-ce balíček, pro zobrazení všech z nich můžeme spustit:

$ 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

Jakou verzi nainstalovat? Zdá se, že Red Hat nějak zablokoval instalaci containerd.io> 1.2.0-3.el7 , což je závislost docker-ce . Z tohoto důvodu jednoduše spusťte sudo dnf install docker-ce příkaz, nebude fungovat. Jak uvidíme za minutu, je stále možné tento problém obejít; jednou docker-ce Pokud je nainstalován, objeví se další problém:pokud je firewalld , je povolen správce brány firewall systému, DNS resolution uvnitř kontejnerů docker nefunguje.

To je samozřejmě kritický problém. Pokud však přesto chcete pokračovat v instalaci, zde jsou možné metody, které lze použít, abyste se vyhnuli problémům se závislostmi:

  • Nainstalujte konkrétní verzi docker-ce což vyžaduje instalovatelnou verzi containerd.io balíček;
  • Vynutit instalaci poskytující --nobest možnost
  • Nainstalujte nejnovější dostupný containerd.io ot/min ručně;

Nainstalujte konkrétní verzi docker-ce

V okamžiku psaní verzí docker-ce které jsou nainstalovány bez problémů:

  • 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

Chcete-li nainstalovat konkrétní verzi, vše, co musíme udělat, je poskytnout plně kvalifikovaný název balíčku, například:

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

Vynutit instalaci docker-ce pomocí volby –nobest

Obvykle je při instalaci balíčku vybrán nejlepší dostupný kandidát z úložiště. V tomto případě jde například o instalaci nejnovější verze docker-ce se pokusí (a selže). Pomocí --nobest můžeme toto chování změnit tak, aby první verze docker-ce s uspokojivými závislostmi je vybráno jako „záložní“, v tomto případě 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]:

Ručně nainstalujte nejnovější dostupný balíček containerd.io

Pokud nutně potřebujeme nainstalovat nejnovější verzi docker-ce , můžeme nainstalovat požadovanou verzi containerd.io ručně spuštěním:

$ 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

Po instalaci balíčku můžeme jednoduše nainstalovat nejnovější 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]:

Tato možnost je méně pohodlná, protože containerd.io balíček není nainstalován jako závislost docker-ce , proto nebude automaticky odstraněn, když bude odinstalován ze systému.

Ať už k instalaci docker-ce použijeme jakoukoli metodu , jak již bylo řečeno, za účelem DNS resolution pracovat uvnitř kontejnerů Docker, musíme zakázat firewall (může být také potřeba restartovat systém):

$ sudo systemctl disable firewalld

Spusťte a povolte démona docker

Jednou docker-ce je nainstalován, musíme spustit a povolit démona dockeru, aby se také automaticky spouštěl při bootování. Příkaz, který musíme spustit, je následující:

$ sudo systemctl enable --now docker

V tomto okamžiku můžeme potvrdit, že démon je aktivní spuštěním:

$ systemctl is-active docker
active

Podobně můžeme zkontrolovat, zda je povoleno při spouštění, spuštěním:

$ systemctl is-enabled docker
enabled

Instalace docker-compose

Docker compose je velmi užitečný balíček, který nám umožňuje spravovat vícekontejnerové aplikace, jako jsou například ty založené na LAMP stacku, kde je každá část prostředí (PHP, Apache, MariaDB) poskytována vyhrazeným kontejnerem (pokud máte zájem v předmětu se podívejte na náš výukový program o vytvoření sestavy lamp na bázi dockeru). Balíček není k dispozici na Rhel8 ani neexistuje ekvivalent pro použití s ​​nástroji Rhel. Je však možné jej nainstalovat mnoha způsoby:pokračujte ve čtení a rozhodněte se, co vám nejlépe vyhovuje.

Globální instalace

Způsob, jakým bychom měli nainstalovat docker-compose se liší podle toho, zda jej chceme instalovat globálně nebo pouze pro jednoho uživatele. V okamžiku psaní je jediným způsobem, jak jej nainstalovat globálně, stáhnout si binární soubor ze stránky projektu github:

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

Jakmile je binární soubor stažen, přesuneme jej do /usr/local/bin a uděláme to spustitelným:

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

/usr/local hierarchie není zvolena náhodně. Tato adresářová struktura je určena k použití pro soubory instalované místním správcem ručně (například pro software zkompilovaný ze zdroje), aby bylo zajištěno oddělení od softwaru nainstalovaného pomocí správce systémových balíčků.

I když normální uživatel může spouštět příkazy související s dockerem, pokud je součástí docker group (skupina se automaticky vytvoří, když nainstalujeme docker-ce), ve výchozím nastavení musí být z bezpečnostních důvodů spuštěny s právy root. Když potřebujeme udělat to druhé, protože /usr/local/bin adresář není v PATH uživatele root , musíme buď zavolat binární soubor s uvedením jeho umístění, nebo přidat /usr/local/bin na PATH sám. První možnost je ta, kterou v tomto případě doporučuji.

Instalace pro uživatele

Pokud je náš uživatel součástí docker group, a proto je povoleno spouštět příkazy docker, a protože docker-compose je k dispozici jako balíček python, můžeme jej také nainstalovat pomocí pip , správce balíčků pythonu. Nejprve se ujistěte, že je nainstalován samotný pip:

$ sudo dnf install python3-pip

Pro získání docker-compose spustíme:

$ pip3.6 install docker-compose --user

Všimněte si prosím, že i když by bylo možné spustit pip jako root a nainstalovat balíček globálně, nedoporučuje se to a důrazně se to nedoporučuje.

Testovací ukotvitelný panel

Nainstalovali jsme docker a docker-compose, nyní, abychom zkontrolovali, že vše funguje podle očekávání, můžeme zkusit vytvořit image a spustit kontejner:v tomto případě použijeme oficiální httpd jeden. Jediné, co musíme udělat, je spustit následující příkaz:

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

Protože httpd obrázek lokálně neexistuje, bude automaticky načten a vytvořen. Nakonec se v popředí spustí kontejner na něm založený (při zastavení bude automaticky odstraněn). Měli bychom být schopni vidět It works! když přes prohlížeč dosáhneme IP adresy našeho počítače.

Závěry

Red Hat Enterprise Linux 8 nepodporuje Docker:v této distribuci byl nahrazen vlastními nástroji Red Hat, jako je buildah a podman , které jsou kompatibilní s Dockerem, ale ke spuštění nepotřebují architekturu server/klient. Použití nativních nástrojů, kde je to možné, je vždy doporučeným způsobem, ale z nějakého důvodu možná budete chtít nainstalovat původní Docker. V tomto tutoriálu jsme viděli, jak je možné nainstalovat Docker CE na Rhel8 pomocí oficiálního úložiště Docker pro CentOS7, což je 100% kompatibilní klon.

Toto není ideální řešení, a jak jsme viděli, v tuto chvíli jsou potřeba nějaká řešení, aby Docker fungoval na RHEL8. Pokud se objeví nějaké nové problémy nebo budou nalezena lepší řešení výše uvedených problémů, bude tento článek odpovídajícím způsobem aktualizován. Zůstaňte naladěni.


Cent OS
  1. Jak nainstalovat Docker na CentOS 7 / RHEL 7

  2. Jak nainstalovat Docker v CentOS

  3. Jak nainstalovat docker na CentOS / RHEL / Fedora

  1. Jak nainstalovat Docker na CentOS 7

  2. Jak nainstalovat Docker Compose na CentOS 7

  3. Jak nainstalovat Docker na CentOS 8

  1. Jak nainstalovat Rancher na CentOS 7

  2. Jak nainstalovat phpMyAdmin na RHEL 8 / CentOS 8

  3. Jak nainstalovat P7Zip na RHEL 8 / CentOS 8