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

Základy dockeru – odhalte porty, vazbu portů a odkaz dockeru

Tento příspěvek ukazuje tři způsoby propojení kontejnerů Docker.

Odhalit porty a vazbu portů

Odhalit porty

Tato metoda se používá v rámci stejné sítě nebo hostitele dockeru. Kontejnery ve stejné síti spolu mohou hovořit přes své odkryté porty a porty můžete odhalit jednou z níže uvedených metod.

– Vložte EXPOSE 80 (nebo libovolný port, který chcete) do svého Dockerfile, který Dockeru sdělí, že službu vašeho kontejneru lze připojit na port 80.
– Vystavte port pomocí „–expose [číslo portu]“ z docker kontejner pomocí 'run –expose [číslo portu]':

# docker run --expose=[port number] test

Vazba portu

Tato metoda se používá mimo stejnou síť. Chcete-li povolit komunikaci přes definované porty s kontejnery mimo stejnou síť, musíte porty publikovat pomocí parametru -p při spuštění dockeru pro publikování a mapování jednoho nebo více portů nebo pomocí parametru -P pro publikování všech vystavených portů a mapování. do portů vyššího řádu. Port portování můžete provést jedním z níže uvedených způsobů:

-Vystavit port prostřednictvím Dockerfile pomocí –expose a publikujte jej pomocí -P vlajka. Připojí vystavený port k hostiteli Docker na náhodném portu.
-Vystavení portu prostřednictvím Dockerfile pomocí –expose a publikujte jej pomocí -p 21:21 příznak, toto sváže port vystavení k hostiteli Docker na určitém portu 21 s hostem 21.
– Svažte port příkazem spuštění kontejneru docker:

# docker run -p [port number on docker host]:[port number on container]/tcp -p [port number on docker host]:[port number on container]/udp test

Příklad:

# docker run -p 80:80/tcp -p 500:500/udp test

Unixový doménový soket v rámci jednoho hostitele

Chcete-li komunikovat mezi kontejnery v rámci jednoho hostitele, můžete v Linuxu použít mechanismy IPC pomocí stejného soketu. Spusťte dva dockery z hostitele dockeru, který sdílí svazek, který by měl být vytvořen v hostitelském počítači:

# docker run -d -it --name dvc1 -v /var/tmp:/host oraclelinux:7 /bin/bash
# docker run -d -it --name dvc2 -v /var/tmp:/host oraclelinux:7 /bin/bash

Po výše uvedeném příkazu mohou kontejnery dvc1 a dvc2 používat zásuvky jako /var/tmp/SocketX k propojení.

K nastavení propojení mezi kontejnery použijte mechanismus propojení Docker

Docker může vytvořit tunel mezi dvěma kontejnery pomocí proměnných prostředí k předání informací z nadřazeného kontejneru do podřízeného kontejneru. Chcete-li vytvořit odkaz, použijte –odkaz příznak:

# docker run -itd --name=[child container] --link [parent container] [child container image] /bin/bash

Příklad:
-Zkontrolujte síť nadřazeného kontejneru:

# docker ps|grep dvc
7d5ad19de678 j_web:v1 "/bin/sh -c '/usr/bi…" 2 days ago Up 5 hours dvc1
# docker exec -it dvc1 /bin/bash
# ifconfig
eth0 Link encap:Ethernet HWaddr 02:42:AC:11:00:04
inet addr:172.17.0.4 Bcast:172.17.255.255 Mask:255.255.0.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)

-Propojit dva nové kontejnery s nadřazeným kontejnerem:

# docker run -it --name dvc1_dup1 --rm --link dvc1 j_web:v1 /bin/bash

-Zkontrolujte propojený kontejner:

# docker inspect -f "{{ .HostConfig.Links }}" dvc1_dup1
[/dvc1:/dvc1_dup1/dvc1]

-Zkontrolujte hostitelský soubor nového kontejneru, obsahuje informace o nadřazeném kontejneru:

# docker exec -it dvc1_dup1 /bin/bash
[root@b56d465976bc /]# cat /etc/hosts
127.0.0.1 localhost
::1 localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
172.17.0.4 dvc1 7d5ad19de678
172.17.0.5 b56d465976bc
[root@b56d465976bc /]#
Upozornění :Příznak –link je starší funkcí Dockeru. Nakonec může být odstraněn. Pokud jej nezbytně nepotřebujete nadále používat, doporučujeme namísto použití –link použít uživatelem definované sítě pro usnadnění komunikace mezi dvěma kontejnery. Jednou funkcí, kterou uživatelsky definované sítě nepodporují a kterou můžete provést pomocí –link, je sdílení proměnných prostředí mezi kontejnery. Můžete však použít jiné mechanismy, jako jsou svazky, ke sdílení proměnných prostředí mezi kontejnery lépe kontrolovaným způsobem.


Docker
  1. Jak exportovat a importovat kontejnery Docker

  2. rozdíl mezi podmanem a dockerem.

  3. Co je Docker (a Linux kontejnery?)

  1. Nainstalujte Docker a WordPress na Ubuntu

  2. Zkontrolujte, jaké porty a procesy běží v Ubuntu

  3. Zabránění jiným aplikacím ve spojení s porty 80 a 443

  1. Spuštění PostgreSQL v Dockeru, Rychlý a praktický průvodce

  2. Kdy a proč používat Docker

  3. Pochopení mapování portů dockeru