Pokud hledáte informace o tom, jak nainstalovat Docker na Ubuntu, jste na správném místě. Nejen to, ale jako bonus vás tento tutoriál také naučí, jak procházet základními příkazy Dockeru pro spouštění a správu kontejnerů.
Pomocí užitečných funkcí Visual Studio (VS) Code se také naučíte, jak posílit své dovednosti SSH. Začněme!
Související: Chlap s Windows ve světě Linuxu:VS kód a vzdálené SSH
Předpoklady
Pokud chcete v tomto tutoriálu postupovat krok za krokem, ujistěte se, že máte následující:
- Nová instalace Ubuntu Server LTS s povoleným SSH (Tato příručka bude používat Ubuntu Server LTS 20.04.1)
- Počítač se systémem Windows s VSCode nainstalován (tato příručka bude používat Visual Studio Code 1.52.1)
- Nainstalováno oficiální rozšíření SSH VSCode a připojeni k vaší instalaci Ubuntu Server LTS
Instalace Dockeru na Ubuntu
Začněme nejprve instalací Dockeru na Ubuntu. V tomto okamžiku výukový program předpokládá, že jste na místním počítači se systémem Windows s otevřeným kódem VS a jste připojeni k serveru Ubuntu přes SSH. Naučte se, jak nastavit toto praktické prostředí v nejnovějším článku o používání VS Code a SSH .
V níže uvedeném příkladu je VSCode vzdáleně připojen k Ubuntu pomocí domova složka (v tomto případě /home/homelab ) otevřen jako pracovní prostor:

Vlastní proces instalace Dockeru na Ubuntu Server je vzdálen dva příkazy. Ubuntu zpřístupňuje Docker jako možnost instalace ve výchozím správci balíčků, který se dodává s Ubuntu známým jako apt
.
V okně SSH terminálu VS Code spusťte následující dva příkazy k instalaci Dockeru:
sudo apt update -y
sudo apt install docker.io -y
Během instalace serveru Ubuntu vám mohla být nabídnuta možnost nainstalovat Docker jako blesk. Pokud jste tak učinili, nejprve odstraňte balíček snap spuštěním
sudo snap remove docker
Instalaci dockeru můžete sledovat v animaci níže:

Ubuntu je dost hezké na to, aby vám službu automaticky povolilo a nastavilo, aby se spustila při spouštění, takže jste připraveni začít používat Docker!
Vytvoření a spuštění kontejneru Docker na Ubuntu
Nyní, když máte nainstalovaný Docker, co s ním můžete dělat? Začněme vytvořením kontejneru Docker. Tento tutoriál nastaví statický webový server jako dobrý příklad kontejneru Docker. V této sekci:
- Nastavte nový kontejner z Docker Hub Image Repository pro spuštění služby HTTP
- Pomocí mapování portů namapujte port HTTP v kontejneru na hostitele Ubuntu
- Nastavte Bind Mounts pro mapování důležitých dat z kontejneru na vašeho hostitele Ubuntu
- Nastavte pro svůj kontejner trvalost prostřednictvím restartování
Pokud vám některý z výše uvedených kroků připadá matoucí, nemějte obavy, každý krok probereme, jeden po druhém, abychom vám pomohli celý proces pochopit.
Stažení obrázku Docker
První otázka, kterou si musíte položit, je, odkud bude tento kontejner pocházet? Pojďme se podívat na Docker Hub.
Velká část Dockeru rozumí úložišti obrázků . Spíše než aby byly služby distribuovány jako balíčky, jsou služby v Dockeru distribuovány jako Docker Images.
Obrázek Dockeru je snímek softwaru, který chce vydavatel distribuovat, a celého systému evidence! Je to analogické s vytvářením bitové kopie .wim systému Windows.
Toto zachycení souborového systému dělá Docker tak populární:software je zachycen spolu s celým operačním prostředím. Tím se eliminují problémy způsobené rozdíly mezi serverovými prostředími.
Jedním z nejoblíbenějších úložišť (a výchozím) pro obrázky je Docker Hub také známý jako oficiální úložiště Docker. Úložiště obrázků je místo, kde si můžete stáhnout tisíce předem vytvořených obrázků Docker, které lze spustit jako kontejnery.
Protože tento tutoriál nastavuje statický webový server, musíte si stáhnout obraz webového serveru. Dva nejoblíbenější webové servery jsou Apache httpd a Nginx ale abychom to trochu změnili a potenciálně vám představili nový webový server, použijeme jeden s názvem Caddy .
Caddy je webový server známý svou jednoduchostí. Mnoho platných konfigurací serveru lze nasadit pomocí jediného řádku v souboru. Jednoduché je dobré a je to také dobrý základní příklad.
- Nejprve budete muset najít obrázek Docker. Na počítači se systémem Windows přejděte na https://hub.docker.com .
- Vyhledejte caddy v levém horním rohu stránky. Měla by se zobrazit stránka podobná následující:

Výhodou (a nevýhodou) Docker Hub je, že kdokoli, dokonce i vy, můžete vytvářet a nahrávat obrázky Docker na web.
Musíte být opatrní, abyste zajistili, že obrázek, který vyberete, pochází z důvěryhodného zdroje. Kdokoli může umístit malware do obrázku, pokud se tak rozhodne a nahraje svou verzi do Docker Hub.
3. Poznamenejte si název obrázku. Na výše uvedeném snímku obrazovky je jméno caddy přesně tak. Tento název budete potřebovat k zadání názvu obrázku v dalších krocích.
Spuštění kontejneru s Dockerem na Ubuntu
Jakmile znáte název obrázku, který si chcete stáhnout, je čas si jej stáhnout a vytvořit z něj kontejner.
Spuštění kontejneru z obrázku vyžaduje jeden příkaz. Ve svém terminálu SSH připojeném k serveru Ubuntu spusťte následující docker run
příkaz.
Níže uvedený příkaz zkontroluje caddy obrázek na místním počítači. Pokud neexistuje, stáhne obrázek z Docker Hub, vytvoří kontejner a spustí jej. Níže uvedený příkaz používá -p
přepněte a namapujte naslouchací port 80 serveru Ubuntu na port 80 kontejneru. Tato funkce se nazývá mapování portů.
sudo docker run -p 80:80 caddy
Většina obrázků Docker Hub se řídí konvencí pojmenování /
. Obrázky označené jako „oficiální“ společností Docker však nemají před sebou (jako caddy výše).
Spuštění výše uvedených příkazových výstupů jako je následující, přičemž informace o nosiči se zobrazí přímo v terminálu:

Můžete si všimnout, že téměř všechny příkazy dockeru mají předponu
sudo
, abyste vynutili spuštění příkazů jako správce. Ve výchozím nastavení je služba docker spuštěna jakoroot
a všechny změny, které provedete v kontejnerech nebo obrázcích, musíte provést jako správce.
A… jste připraveni! To je vše. Nejste rádi, že jste si na Ubuntu nainstalovali Docker?
Nyní přejděte na http://

caddy kontejner nyní běží, ale možná jste si všimli problému. Spuštění tohoto docker
příkaz převezme váš příkazový řádek. Nemůžete spouštět žádné další příkazy, a pokud relace skončí, běžící kontejner se zastaví. Pojďme tento problém vyřešit spuštěním kontejneru na pozadí (známé také jako odpojení kontejneru).
Spouštění kontejnerů Docker na pozadí
Nyní máte spuštěný kontejner, ale váš příkazový řádek je zavěšen. nemůžete dělat nic jiného. Potřebujete lepší způsob spouštění kontejneru tak, že jej spustíte na pozadí jako službu. Chcete-li to provést:
- Zastavte aktuální kontejner stisknutím control+c v příkazovém řádku. To by vám mělo vrátit příkazový řádek.
- Nyní spusťte znovu stejný příkaz jako předchozí pouze s
-d
parametr tentokrát, jak je uvedeno níže. Uvidíte, že Docker vrátí ID kontejneru a předá vám příkazový řádek.
sudo docker run -d -p 80:80 caddy

Správa kontejnerů na pozadí pomocí příkazů Docker
Jakmile budete mít spuštěn jeden nebo více dockerů na pozadí, budete je muset nějak spravovat. Docker vám k tomu poskytuje několik různých příkazů pomocí docker container
příkazy.
sudo docker container list -a
:Uvádí všechny kontejnery (běžící i zastavené) a jejich stavsudo docker container stop <name>
:zastavit ukotvitelný kontejner podle jména (nebo podle ID)sudo docker container start <name>
:spusťte ukotvitelný kontejner podle jména (nebo podle ID)sudo docker container prune
:zničit a odstranit všechny zastavené nádoby
Všechny výše uvedené příkazy použité v kontextu můžete vidět na níže uvedeném snímku obrazovky:

Existuje mnoho dalších příkazů kontejneru dockeru k zobrazení, změně, kontrole nebo dokonce vzdálenému přístupu do kontejnerů na vašem serveru. Všechny je můžete zobrazit spuštěním
sudo docker container --help
.
I když jste nyní nasadili webový server v kontejneru běžícím na pozadí, stále nemáte žádný způsob, jak hostit svůj vlastní obsah. Jak je, Caddy pouze zobrazuje výchozí webovou stránku.
Pojďme se nyní podívat na to, jak můžete použít obrázky Docker s konceptem zvaným bind mounts k nasazení kontejnerů se smysluplnými daty.
Ukládání dat kontejneru pomocí Bind Mounts
Docker pracuje na konceptu obrázků (a kontejnerů, které generují) jako nepoužitelných nebo přechodných . Pokud dojde k aktualizaci softwaru Caddy, službu neaktualizujete, vyhodíte celé miminko i s vaničkou a použijete zcela nový obrázek od začátku.
Výhody likvidace a obnovy kontejnerů, jako je tato, jsou významné. Nestabilita v softwaru se časem zavádí neustálou aktualizací (potenciálně) let starého softwaru. Díky použití nového obrazu pokaždé vám Docker poskytuje stabilní, spolehlivou a (pravděpodobně) testovanou základnu při každé aktualizaci.
Tento koncept je ekvivalentní použití nové instalace systému Windows při každé aktualizaci aplikačního softwaru systému Windows. Není to zábavný nápad pro Windows, ale extrémně použitelný v Dockeru.
Metodika vyhazování má však jasný problém. Nechcete, aby byla vyhozena základní data, když se vaše současná služba ztratí. Docker tento problém řeší pomocí konceptu zvaného bind mounts .
Pojďme nyní prozkoumat, jak vytvořit spojovací držák pro kontejner.
Vytvoření struktury složek a vyčištění
Než budete moci použít připojení připojení, musíte vytvořit umístění pro uložení těchto dat. Tento tutoriál vytvoří složku ve vašem domovském adresáři. Chcete-li tak učinit v kódu VS, když jste stále připojeni k serveru Ubuntu:
- Klikněte pravým tlačítkem do prázdné oblasti Explorer VS Code panelu a zvolte nová složka.
2. Pojmenujte novou složku kontejnery/caddy/soubory.
Názvy složek jsou na vás, pokud jsou správně definovány v nadcházejícím příkazu dockeru. Pomocí dopředného lomítka to VS Code interpretuje jako vytvoření tří složek. soubory složka je podadresářem caddy a caddy je podadresář kontejnerů. Nemusíte používat tuto strukturu složek, ale tato struktura dává větší smysl, když máte na stejném serveru více kontejnerů.
Pokud jste tak neučinili dříve, zastavte a odstraňte všechny kontejnery, které jste vytvořili dříve, pomocí následujícího:
# stop and remove ALL currently running containers.
# The $(sudo docker ps -q) dynamically grabs all running container IDs
sudo docker container stop $(sudo docker ps -q)
sudo docker container prune
Tento příkaz můžete vidět na níže uvedeném snímku obrazovky:

Rozmístění kontejneru Caddy s držáky na vázání
Nyní máte strukturu složek postavenou na serveru Ubuntu. Je čas vytvořit kontejner Caddy s držáky na vazbu.
- Než se dostanete příliš daleko, nejprve zjistěte, kde kontejner, se kterým pracujete, uchovává trvalá data. Toto umístění se bude lišit v závislosti na tom, kdo vytvořil obrázek Docker a k jakému účelu slouží.
Nejlepší možností, jak zjistit, kde jsou uložena trvalá data, je zkontrolovat dokumentaci v Docker Hub pro příslušný obrázek. Pro Caddy najdete dokumentaci zde :

2. Spusťte kontejner pomocí níže uvedeného příkazu. the -v ~/containers/caddy/files:/usr/share/caddy
parametr mapuje cestu před dvojtečkou (~/containers/caddy/files ) do složky uvnitř kontejneru (/usr/share/caddy ). Funguje to velmi podobně jako příkaz mapování portů:Kromě toho, že mapujete složku místo portu. Tento typ příkazu se nazývá Bind Mount .
# bind a folder on the host (the path before the colon) to
# /usr/share/caddy inside the container
sudo docker run -d -p 80:80 -v ~/containers/caddy/files:/usr/share/caddy caddy
tilda (
~
) ve výše uvedeném kódu odkazuje na domovskou složku. Pro tento článek je to ekvivalentní/home/homelab
.
3. Otevřete prohlížeč a přejděte zpět na http adresu vašeho serveru. Všimnete si, že server nyní obsluhuje 404
strana. To se očekává, protože aktuálně nemáte index.html soubor v ~/containers/caddy/files .
4. Vytvořte index.html soubor v ~/containers/caddy/files na serveru Ubuntu v okně VS Code Explorer, které vypadá takto:
<body><h2>hello world!</h2></body>
5. Přejděte na adresu HTTP svého serveru a potvrďte, že kontejner nyní obsluhuje váš nový index.html stránku.
Vše výše uvedené můžete vidět v následující animaci:

Na rozdíl od příkazů správy dockeru jsou soubory, které vytváříte (např. index.html ) nevyžadují administrátorská práva. Je to proto, že vlastníte obsah, který server caddy poskytuje, protože je ve vaší domovské složce.
Ověření připojení Bind
Vynikající! Nejen, že používáte zcela nový kontejner Docker, ale tento kontejner obsluhuje obsah uložený lokálně ve vaší domovské složce! Můžete to dokázat spuštěním následujícího:
- Zastavte a vyjměte běžící nádobu. Tento krok zcela odstraní vše včetně tohoto souboru index.html, pokud jste nepoužívali připojení.
sudo docker container stop $(sudo docker ps -q)
sudo docker container prune
2. Vytvořte zcela nový kontejner.
sudo docker run -d -p 80:80 -v ~/containers/caddy/files:/usr/share/caddy caddy
3. Ověřte, že nový kontejner stále obsluhuje soubor index.html na http://<your server>
adresu.
Vytváření trvalých kontejnerů dockeru
Kontejner není tak užitečný, pokud se zastaví, když se server restartuje. Ve výchozím nastavení se to stane, pokud to neuděláte. Abychom tomu zabránili, vygenerujeme znovu nový kontejner nosiče, ale tentokrát se restartuje, když se restartuje hostitel Dockeru, v tomto případě Ubuntu.
- Zastavte a odstraňte všechny běžící kontejnery.
# stop and remove ALL currently running containers
sudo docker container stop $(sudo docker ps -q)
sudo docker container prune
2. Restartujte kontejner nosiče pomocí --restart always
parametr, chcete-li nastavit tento nový kontejner tak, aby začínal s hostitelem při restartu. Pomocí --restart always
příznak na místě, váš kontejner se nyní chová jako správná služba:spouští se automaticky při bootování.
sudo docker run -d -p 80:80 -v ~/containers/caddy/files:/usr/share/caddy --restart always caddy
3. Restartujte server.
4. Nyní ověřte, že se objevil nový kontejner a stále obsluhuje soubor index.html na http://<your server>
adresu.
Níže můžete vidět následující použité příkazy:

Jdeme dál
V této fázi byste měli mít funkční prostředí Docker a základní znalosti obrázků a kontejnerů. Můžete táhnout, spouštět, zastavovat a provádět základní správu vašich kontejnerů. Úspěšně jste také vytvořili běžící kontejner webové služby pomocí připojení připojení a mapování portů.
V souvislosti s Dockerem je stále co probírat:Zůstaňte naladěni na tento prostor, protože další článek se bude věnovat pokročilé správě dockerů pomocí Docker Compose.