GNU/Linux >> Linux Esercitazione >  >> Panels >> Docker

Nozioni di base su Docker:consente di esporre le porte, il collegamento delle porte e il collegamento Docker

Questo post illustra tre metodi per collegare i contenitori Docker.

Esponi le porte e il collegamento delle porte

Esponi le porte

Questo metodo viene utilizzato all'interno della stessa rete o dell'host Docker. I container sulla stessa rete possono comunicare tra loro sulle porte esposte e tu puoi esporre le porte con uno dei metodi seguenti.

– Inserisci EXPOSE 80 (o qualsiasi porta che desideri) nel tuo Dockerfile che dirà a Docker che il servizio del tuo container può essere connesso alla porta 80.
– Esponi una porta usando '–expose [port number]' dal contenitore docker per 'run –expose [port number]':

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

Collegamento alla porta

Questo metodo viene utilizzato all'esterno della stessa rete. Per consentire la comunicazione tramite le porte definite ai container al di fuori della stessa rete, è necessario pubblicare le porte utilizzando il flag -p su docker run per pubblicare e mappare una o più porte, oppure il flag -P per pubblicare tutte le porte esposte e mappare loro verso porti di ordine superiore. Puoi eseguire il porting delle porte in uno dei seguenti modi:

-Esponi una porta tramite Dockerfile di –espone e pubblicalo con la -P bandiera. Associa la porta esposta all'host Docker su una porta casuale.
-Esponi una porta tramite Dockerfile di –espone e pubblicalo con il -p 21:21 flag, questo legherà la porta di esposizione all'host Docker su una determinata porta 21 con il guest 21.
– Associa la porta tramite il comando di esecuzione del contenitore 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

Esempio:

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

Socket di dominio Unix all'interno di un singolo host

Per comunicare tra container all'interno di un singolo host, puoi utilizzare i meccanismi IPC su Linux utilizzando lo stesso socket. Avvia le due finestre mobili dall'host della finestra mobile condividendo un volume che dovrebbe essere creato nella macchina host:

# 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

Dopo il comando precedente, i container dvc1 e dvc2 possono utilizzare socket come /var/tmp/SocketX all'interconnessione.

Utilizza il meccanismo di collegamento Docker per impostare un collegamento tra i container

Docker può creare un tunnel tra due contenitori usando le variabili di ambiente per passare le informazioni dal contenitore padre al contenitore figlio. Per creare un collegamento, utilizzi il –link bandiera:

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

Esempio:
-Controlla la rete del contenitore principale:

# 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)

-Collega i due nuovi contenitori con il contenitore padre:

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

-Ispeziona il contenitore collegato:

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

-Controlla il file host del nuovo contenitore, contiene le informazioni del contenitore padre:

# 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 /]#
Avviso :il flag –link è una caratteristica legacy di Docker. Potrebbe eventualmente essere rimosso. A meno che tu non debba assolutamente continuare a usarlo, ti consigliamo di utilizzare reti definite dall'utente per facilitare la comunicazione tra due contenitori invece di usare –link. Una funzionalità che le reti definite dall'utente non supportano e che puoi fare con –link è la condivisione delle variabili di ambiente tra i contenitori. Tuttavia, puoi utilizzare altri meccanismi come i volumi per condividere le variabili di ambiente tra i contenitori in modo più controllato.


Docker
  1. Esecuzione di PostgreSQL in Docker, una guida rapida e pratica

  2. Come esportare e importare contenitori Docker

  3. differenza tra podman e docker.

  4. Quando e perché usare Docker

  5. Controlla quali porte e processi sono in esecuzione in Ubuntu

Come installare e utilizzare Docker su Ubuntu 22.04

Come ripulire ed eliminare le immagini Docker

Come esporre o pubblicare una porta Docker

Apertura di una porta su Linux

.NET Core e Docker

.NET e Docker