GNU/Linux >> Znalost Linux >  >> Panels >> Docker

Vysvětlení pojmů Docker Networking

Docker networking se v podstatě používá k navázání komunikace mezi dockerovými kontejnery a vnějším světem prostřednictvím hostitelského stroje nebo lze říci, že jde o komunikační průchod, přes který všechny izolované kontejnery komunikují mezi sebou v různých situacích za účelem provedení požadovaných akcí. V této příručce vysvětlíme základní koncepty sítí Docker s praktickými příklady na Ubuntu.

Pokud jste Docker ještě nenainstalovali, přečtěte si následující příručku.

  • Jak nainstalovat Docker na serveru Ubuntu 18.04 LTS

Základy použití Dockeru:

  • Začínáme s Dockerem

Vysvětlení pojmů Docker Networking

Všechny níže uvedené příkazy jsou testovány s rootem oprávnění na Ubuntu .

Ke správě síťových operací, jako je vytvoření nové sítě, připojení kontejneru k síti, odpojení kontejneru od sítě, výpis dostupných sítí a odstranění sítí atd., používáme následující příkaz:

# docker network

Typy síťových ovladačů dockeru

Chcete-li zobrazit seznam všech sítí, spusťte:

# docker network ls

Pojďme si je všechny krátce představit.

  1. Mostová síť: Když spustíte Docker, automaticky se vytvoří výchozí síť mostu. Automaticky se k němu připojí nově spuštěný kontejner. Můžete také vytvořit uživatelsky definované vlastní přemosťovací sítě. Uživatelsky definované sítě mostů jsou lepší než výchozí síť mostů.
  2. Hostitelská síť: Odstraňuje síťovou izolaci mezi kontejnerem a hostitelem Docker a přímo využívá síť hostitele. Pokud spustíte kontejner, který se váže na port 80 a používáte hostitelskou síť, aplikace kontejneru je k dispozici na portu 80 na IP adrese hostitele. Znamená to, že nebudete moci provozovat více webových kontejnerů na stejném hostiteli, na stejném portu, protože port je nyní společný pro všechny kontejnery v hostitelské síti.
  3. Žádná síť: V tomto druhu sítě nejsou kontejnery připojeny k žádné síti a nemají žádný přístup k externí síti nebo jiným kontejnerům. Tato síť se tedy používá, když chcete zcela zakázat síťový zásobník na kontejneru.
  4. Překryvná síť: Vytváří interní privátní síť, která se rozprostírá přes všechny uzly účastnící se swarm clusteru. Překryvné sítě tedy usnadňují komunikaci mezi službou docker swarm a samostatným kontejnerem nebo mezi dvěma samostatnými kontejnery na různých démonech Docker.
  5. Síť Macvlan: Některé aplikace, zejména starší aplikace nebo aplikace, které monitorují síťový provoz, očekávají, že budou přímo připojeny k fyzické síti. V tomto typu situace můžete použít síťový ovladač Macvlan k přiřazení MAC adresy k rozhraní virtuální sítě každého kontejneru, takže to vypadá, že jde o fyzické síťové rozhraní přímo připojené k fyzické síti.

Dovolte mi, abych vám ukázal praktická cvičení pro sítě Bridge a Host.

1. Přemosťovací síť

K vysvětlení tohoto typu sítě použiji dva kontejnery Alpine.

Nyní budu provozovat dva kontejnery Alpine a to C1 a C2 pomocí příkazů:

# docker run -it -d --name c1 alpine ash
# docker run -it -d --name c2 alpine ash

Dále zjistěme IP adresu těchto běžících kontejnerů. Chcete-li to provést, spusťte:

# docker exec -it c1 sh –c “ip a”
# docker exec -it c2 sh –c “ip a”

Jak vidíte, IP adresa kontejneru C1 je 172.17.0.2 a IP adresa C2 je 172.17.0.3 .

Nyní pojďme do toho a pokusme se navzájem pingnout, abychom se ujistili, že mohou komunikovat.

Nejprve se připojte k běžícímu kontejneru C1 a zkuste ping kontejneru C2:

# docker attach c1
# Ping –c 2 172.17.0.3

Podobně se připojte ke kontejneru C2 a zkuste ping kontejner C1.

# docker attach c2
# Ping –c 2 172.17.0.2

Jak vidíte na výše uvedených snímcích obrazovky, komunikace probíhá mezi kontejnery ve stejné síti.

Můžeme to také ověřit kontrolou sítě mostu pomocí příkazu:

# docker network inspect bridge

Výše uvedený příkaz zobrazí všechny informace o síti, jako je typ sítě, podsíť, brána, název kontejneru a adresy iip atd.

1.1 Vytváření uživatelsky definované přemosťovací sítě

Jak jsem již řekl, když spustíte Docker, automaticky se vytvoří výchozí síť mostu . Všechny nově spuštěné kontejnery se k němu automaticky připojí. Můžete však také vytvořit uživatelsky definované vlastní přemosťovací sítě.

Chcete-li vytvořit nový síťový ovladač, jednoduše spusťte:

# docker network create my_net

Nebo,

# docker network create --driver bridge dhruv_net

Oba příkazy budou dělat stejnou práci. Pokud nezadáte název ovladače, vytvoří se ve výchozím síťovém ovladači, tj. most .

V uživatelsky definovaných sítích, jako je dhruv_net, mohou kontejnery nejen komunikovat podle IP adresy, ale mohou také přeložit název kontejneru na IP adresu. Tato funkce se nazývá automatické zjišťování služeb .

Abychom zajistili, že kontejnery mohou mezi sebou komunikovat, spusťte tři alpské kontejnery, konkrétně A1 , A2 a A3 na dhruv_net síť, kterou jsme vytvořili dříve.

# docker run -it -d --name A1 --network dhruv_net alpine ash
# docker run -it -d --name A2 --network dhruv_net alpine ash
# docker run -it -d --name A3 --network dhruv_net alpine ash

Nyní se pokuste připojit k některému z kontejnerů a ping na další dva pomocí názvu kontejneru.

Z výše uvedených snímků obrazovky je dokázáno, že kontejnery mohou být schopny mezi sebou komunikovat.

2. Hostitelská síť

Provozujeme kontejner, který se váže na port 80 pomocí hostitelské sítě, aplikace kontejneru je dostupná na portu 80 na IP adrese hostitele.

Hostitelská síť je potřeba pouze tehdy, když spouštíte programy s velmi specifickou sítí. Aplikace běžící v kontejneru Docker vypadají, jako by běžely na samotném hostiteli, z pohledu sítě. Umožňuje kontejneru větší přístup k síti, než může normálně získat.

Zde jsme použili netstat -ntlp příkaz k zobrazení naslouchajícího portu na serveru. Chcete-li zjistit, která služba naslouchá na konkrétním portu, tento průvodce .

Probrali jsme pouze základy síťových konceptů Docker. Chcete-li získat další podrobnosti, doporučuji vám nahlédnout do níže přiloženého průvodce sítí Docker.

  • Docker Container Networking

Doporučené čtení:

  • Vysvětlení svazků Docker
  • Jak automaticky aktualizovat spuštěné kontejnery Docker
  • ctop – nástroj pro monitorování příkazového řádku pro linuxové kontejnery
  • Portainer – nejsnazší způsob správy Dockeru
  • PiCluster – jednoduchá webová aplikace pro správu dockerů
  • Dockly – Správa kontejnerů Docker z terminálu

O autorovi:

Dhruv Tiwari je DevOps Engineer, který miluje automatizaci věcí, práci s Linuxem ve velkém a sní o dni, kdy jsou systémy dostatečně chytré, aby se nikdy nemusely přihlašovat k linuxovému boxu. Cesta CI/CD od zdrojového kódu přes nasazení kódu až po produkci.


Docker
  1. Získejte náš linuxový síťový cheat sheet

  2. Máte skutečný problém se sítí Systemctl?

  3. Jak čistě nastavit síťový docker v Ubuntu Gnome 15.10?

  1. Jak restartovat síť na Ubuntu

  2. Úvod do Dockeru

  3. Jak získat přístup k síťovému jmennému prostoru Docker Container z hostitele

  1. Přístavní dělník

  2. Instalace Dockeru (Ubuntu)

  3. Úvod do Dockeru