Docker je platforma s otevřeným zdrojovým kódem pro vývoj, odesílání a spouštění aplikací. Docker v17.12 je nejnovější stabilní verze v době psaní tohoto článku. Poskytuje možnost zabalit a spustit aplikaci ve zcela izolovaném prostředí zvaném kontejner. Na daném hostiteli můžeme provozovat mnoho kontejnerů současně. Kontejnery jsou lehké a rychlé, protože nepotřebují hypervizor, ale běží přímo v jádře hostitelského počítače.
Architektura Docker
Docker je aplikace typu klient-server, kde lze klienta i démona spustit na stejném systému nebo můžete klienta Docker propojit se vzdáleným démonem Docker. Klienti a démon Docker komunikují prostřednictvím soketů nebo RESTful API (Representational State Transfer – jedná se o bezstavový přenos webové stránky obsahující soubor XML, který obsahuje a popisuje požadovaný obsah, přes HTTP).
Hlavní součásti Dockeru jsou
Docker Daemon
:Démon Docker (dockerd) naslouchá požadavkům rozhraní API Docker a spravuje objekty Docker, jako jsou obrázky, kontejnery, sítě a svazky. Démon může také komunikovat s jinými démony za účelem správy služeb Docker.Docker Client
:Klient Docker (docker) je primární způsob interakce uživatelů Dockeru s Dockerem. Když používáme příkazy jako docker run, docker build atd., klient odešle tyto příkazy docker daemon (dockerd), který je provede. Příkaz docker používá Docker API. Může komunikovat s více než jedním démonem.Docker Registry (2.4.1)
:Registr Docker ukládá obrazy Docker. Docker Hub a Docker Cloud jsou veřejné registry, které může používat každý. Ve výchozím nastavení je Docker nakonfigurován tak, aby vyhledával obrázky na Docker Hub. Můžeme dokonce nastavit vlastní soukromý registr pro naše obrázky.
V tomto článku vysvětlím, jak můžete upgradovat svůj Docker na nejnovější dostupnou verzi na CentOS 7 i Fedoře 27.
Předpoklady
Abychom mohli nainstalovat verzi Docker CE, potřebujeme udržovanou verzi CentOS 7. Musí být povoleno úložiště centos-extras. Toto úložiště je ve výchozím nastavení povoleno, ale pokud jste jej zakázali, musíte jej znovu povolit.
Upgrade Dockeru na CentOS 7.4
Pro upgrade Dockeru se doporučuje nainstalovat Docker Community Edition (Docker CE), který vám pomůže nainstalovat, upgradovat a udržovat Docker s podporou a zárukami požadovanými pro vaši konkrétní pracovní zátěž. Doporučuje se ovladač úložiště Overlay2. overlay2
je výchozí volbou pro Docker CE. Ovladač úložiště řídí, jak jsou obrázky a kontejnery ukládány a spravovány na vašem hostiteli Docker. Docker podporuje několik různých ovladačů úložiště. devicemapper
je naše další volba, ale vyžaduje direct-lvm
pro produkční prostředí pro lepší výkon.
Začněme s kroky k upgradu staré verze Dockeru.
-
Odinstalujte staré verze Docker
Balíčky docker a docker-engine jsou označovány jako staré balíčky. Pokud používáte tyto staré verze, můžete je nejprve odinstalovat a pokračovat dále. Spuštěním tohoto příkazu odstraníte všechna trasování dockeru ze serveru.
#yum remove docker docker-common docker-selinux docker-engine
I když jsou tyto balíčky odstraněny ze serveru, veškerý požadovaný obsah dockeru včetně obrázků, kontejnerů, svazků a sítí je zachován v /var/lib/docker/
složka.
-
Nainstalovat Docker CE
Úložiště Docker můžete nejprve nastavit a nainstalovat pomocí něj. To usnadní instalaci a proces upgradu se stejným úložištěm. Pro nastavení našeho úložiště potřebujeme nástroj yum-config-manager, který je součástí balíčku yum-utils. A jak již bylo řečeno, Docker CE preferuje ovladač úložiště, zde používáme devicemapper
. Proto pro tento ovladač úložiště potřebujeme tyto device-mapper-persistent-data and lvm2 packages
. Pomocí tohoto příkazu můžeme nainstalovat všechny tyto předpoklady pro nastavení našeho úložiště.
#yum install -y yum-utils device-mapper-persistent-data lvm2
Dále můžete pomocí následujícího příkazu povolit stabilní úložiště Docker.
#yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
# yum install docker-ce
Loaded plugins: fastestmirror
docker-ce-stable | 2.9 kB 00:00:00
Loading mirror speeds from cached hostfile
* base: mirrors.coreix.net
* extras: repo.uk.bigstepcloud.com
* updates: mirror.sov.uk.goscomb.net
Resolving Dependencies
--> Running transaction check
---> Package docker-ce.x86_64 0:17.12.0.ce-1.el7.centos will be installed
--> Finished Dependency Resolution
Dependencies Resolved
============================================================================================================================================================================================================
Package Arch Version Repository Size
============================================================================================================================================================================================================
Installing:
docker-ce x86_64 17.12.0.ce-1.el7.centos docker-ce-stable 30 M
Transaction Summary
============================================================================================================================================================================================================
Install 1 Package
This step is optional:
Edge a testovací úložiště jsou také zahrnuty v tomto repo souboru, ve výchozím nastavení je zakázáno. Pokud chcete, můžete tyto repo soubory povolit také spolu se Stable repo a nainstalovat dostupné verze Edge nebo testovací verze. To lze provést zadáním následujícího příkazu:
#yum-config-manager --enable docker-ce-edge
#yum-config-manager --enable docker-ce-test
Po povolení těchto úložišť příkaz install odešle instalaci z úložiště Edge.
# yum install docker-ce
Dependencies Resolved
============================================================================================================================================================================================================
Package Arch Version Repository Size
============================================================================================================================================================================================================
Installing:
docker-ce x86_64 18.01.0.ce-1.el7.centos docker-ce-edge 33 M
Installing for dependencies:
libtool-ltdl x86_64 2.4.2-22.el7_3 base 49 k
Transaction Summary
============================================================================================================================================================================================================
Install 1 Package (+1 Dependent package)
Pokud tedy potřebujete nejnovější stabilní verzi, můžete tato úložiště Edge a Test nechat deaktivovaná. Můžete použít yum-config-manager
pomocí příkazu --disable
příznakem deaktivujete tato úložiště.
Občas mohou být na serveru stále nějaké stopy starých komponent dockeru, i když jsme provedli yum remove
příkaz jako v kroku 1. Pokud jsou během instalace k dispozici nějaké staré verze dockeru, ohlásí chybu, jak je uvedeno níže:
Transaction check error:
file /usr/bin/docker from install of docker-ce-18.01.0.ce-1.el7.centos.x86_64 conflicts with file from package docker-common-2:1.12.6-68.gitec8512b.el7.centos.x86_64
file /usr/bin/docker-containerd from install of docker-ce-18.01.0.ce-1.el7.centos.x86_64 conflicts with file from package docker-common-2:1.12.6-68.gitec8512b.el7.centos.x86_64
file /usr/bin/docker-containerd-shim from install of docker-ce-18.01.0.ce-1.el7.centos.x86_64 conflicts with file from package docker-common-2:1.12.6-68.gitec8512b.el7.centos.x86_64
file /usr/bin/dockerd from install of docker-ce-18.01.0.ce-1.el7.centos.x86_64 conflicts with file from package docker-common-2:1.12.6-68.gitec8512b.el7.centos.x86_64
Tyto balíčky jsem ručně odstranil pomocí příkazu yum remove, abych úspěšně pokračoval v instalaci, jak je uvedeno níže:
# yum remove docker-common-2:1.12.6-68.gitec8512b.el7.centos.x86_64
Dependencies Resolved
============================================================================================================================================================================================================
Package Arch Version Repository Size
============================================================================================================================================================================================================
Removing:
docker-common x86_64 2:1.12.6-68.gitec8512b.el7.centos @extras 4.5 k
Removing for dependencies:
docker-client x86_64 2:1.12.6-68.gitec8512b.el7.centos @extras 11 M
Transaction Summary
============================================================================================================================================================================================================
Remove 1 Package (+1 Dependent package)
Ověření instalace Docker
Po dokončení instalace můžete spustit a povolit službu docker a ověřit instalaci spuštěním hello-world
obrázek.
# systemctl start docker
# systemctl enable docker
# systemctl status docker
● docker.service - Docker Application Container Engine
Loaded: loaded (/usr/lib/systemd/system/docker.service; disabled; vendor preset: disabled)
Active: active (running) since Tue 2018-01-23 06:36:24 UTC; 2s ago
Docs: https://docs.docker.com
Main PID: 30700 (dockerd)
Memory: 23.1M
CGroup: /system.slice/docker.service
├─30700 /usr/bin/dockerd
└─30703 docker-containerd --config /var/run/docker/containerd/containerd.toml
# docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
ca4f61b1923c: Pull complete
Digest: sha256:66ef312bbac49c39a89aa9bcc3cb4f3c9e7de3788c944158df3ee0176d32b751
Status: Downloaded newer image for hello-world:latest
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 bash
Share images, automate workflows, and more with a free Docker ID:
https://cloud.docker.com/
For more examples and ideas, visit:
https://docs.docker.com/engine/userguide/
Upgrade Docker CE
K aktualizaci verze Dockeru na nejnovější stabilní verzi můžete v budoucnu použít příkaz yum upgrade. V současné době je náš server již nainstalován s nejnovější dostupnou verzí Stable Docker, což je verze Docker 17.12.
# docker -v
Docker version 17.12.0-ce, build c97c6d6
Nyní, pokud potřebujeme upgradovat tuto aktuální stabilní verzi na nejnovější dostupnou verzi Edge, stačí povolit soubor edge repo v úložišti Docker a spustit příkaz yum upgrade, jak je uvedeno níže:
# yum-config-manager --enable docker-ce-edge
# yum upgrade docker-ce
Dependencies Resolved
============================================================================================================================================================================================================
Package Arch Version Repository Size
============================================================================================================================================================================================================
Updating:
docker-ce x86_64 18.01.0.ce-1.el7.centos docker-ce-edge 33 M
Transaction Summary
============================================================================================================================================================================================================
Upgrade 1 Package
Tím se nainstaluje nejnovější verze Edge dostupná z úložiště. Verzi Dockeru můžete potvrdit po instalaci. Další informace o verzích Stable a Edge naleznete v této dokumentaci.
# docker -v
Docker version 18.01.0-ce, build 03596f5
Upgrade Dockeru na Fedoře 27
Vzhledem k tomu, že Fedora i CentOS pocházejí od RedHat, použité příkazy jsou do značné míry totožné s výjimkou rozdílů v balíčku Docker. Podobně jako v předchozím případě, i ve Fedoře musíme odstranit staré dostupné verze dockeru a nainstalovat Docker Community Edition (Docker CE), aby se usnadnila instalace a upgrade.
Předpoklady
K instalaci Dockeru potřebujete 64bitovou verzi této nejnovější verze Fedory 27
Začněme s kroky k upgradu vaší staré verze Dockeru na Fedoře.
-
Odinstalujte starou verzi Docker
Jak bylo uvedeno výše, balíčky docker a docker-engine jsou označovány jako staré balíčky. Tyto staré balíčky můžete odstranit pomocí následujícího příkazu:
#dnf remove docker docker-common docker-selinux docker-engine-selinux docker-engine
I když jsou tyto balíčky ze serveru odstraněny, veškerý požadovaný obsah dockeru včetně obrázků, kontejnerů, svazků a sítí je zachován ve složce /var/lib/docker/.
-
Nainstalovat Docker CE
Abychom mohli nainstalovat verzi Docker CE, musíme povolit úložiště Docker pro Fedoru. Abychom mohli nastavit toto úložiště, potřebujeme některé příkazy pro správu správce balíčků dnf. dnf-plugins-core
package poskytuje příkazy pro správu vašich úložišť DNF z příkazového řádku. Můžete to nainstalovat pomocí příkazu níže:
# dnf -y install dnf-plugins-core
Nyní můžeme pomocí tohoto příkazu povolit úložiště Stable a nainstalovat nejnovější verzi Stable dostupnou z tohoto úložiště pomocí dnf install
příkaz.
# dnf config-manager --add-repo https://download.docker.com/linux/fedora/docker-ce.repo
Adding repo from: https://download.docker.com/linux/fedora/docker-ce.repo
# dnf install docker-ce
Last metadata expiration check: 0:00:20 ago on Mon 22 Jan 2018 09:43:35 AM UTC.
Dependencies resolved.
============================================================================================================================================================================================================
Package Arch Version Repository Size
============================================================================================================================================================================================================
Installing:
docker-ce x86_64 17.12.0.ce-1.fc27 docker-ce-stable 31 M
Installing dependencies:
container-selinux noarch 2:2.38-1.fc27 updates 36 k
iptables x86_64 1.6.1-4.fc27 fedora 471 k
libnetfilter_conntrack x86_64 1.0.6-4.fc27 fedora 62 k
libnfnetlink x86_64 1.0.1-11.fc27 fedora 31 k
policycoreutils-python-utils x86_64 2.7-1.fc27 fedora 223 k
Transaction Summary
============================================================================================================================================================================================================
Install 6 Packages
Jak již bylo uvedeno výše, v tomto úložišti Docker (soubor docker.repo) jsou přítomny jak soubory repozitáře Edge, tak soubory Test. Ale oba jsou ve výchozím nastavení zakázány, aby bylo možné povolit pouze stabilní úroveň. Podle potřeby jej můžete povolit pomocí následujících příkazů:
# dnf config-manager --set-enabled docker-ce-edge
# dnf config-manager --set-enabled docker-ce-test
Upgradujte Docker CE
Chcete-li upgradovat svůj Docker CE, můžete použít dnf -y upgrade
. Tím se upgraduje na nejnovější stabilní úroveň dostupnou v úložišti Docker.
# dnf -y upgrade docker-ce
Koneckonců
Docker usnadnil život vývojářům a operačním týmům rychle vytvářet a nasazovat aplikace. Vzhledem k tomu, že společnost vydává rychlé aktualizace pro Docker za účelem vylepšení produktu a řešení požadavků zákazníků, budoucnost je pro Docker rozhodně jasná.