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
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 verzicontainerd.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.