GNU/Linux >> Belajar Linux >  >> Panels >> Docker

Dasar-dasar Docker – Mengekspos port, pengikatan port, dan tautan buruh pelabuhan

Postingan ini mengilustrasikan tiga metode untuk menautkan container Docker.

Mengekspos port dan pengikatan port

Mengekspos port

Metode ini digunakan untuk dalam jaringan yang sama atau host buruh pelabuhan. Kontainer di jaringan yang sama dapat berbicara satu sama lain melalui port yang terbuka dan Anda dapat mengekspos port tersebut dengan salah satu metode di bawah ini.

– Letakkan EXPOSE 80 (atau port apa pun yang Anda inginkan) di Dockerfile Anda yang akan memberi tahu Docker bahwa layanan container Anda dapat terhubung ke port 80.
– Ekspos port menggunakan '–expose [nomor port]' dari docker container dengan 'run –expose [nomor port]':

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

Pengikatan port

Metode ini digunakan untuk di luar jaringan yang sama. Untuk mengizinkan komunikasi melalui port yang ditentukan ke kontainer di luar jaringan yang sama, Anda perlu memublikasikan port dengan menggunakan flag -p pada docker run untuk menerbitkan dan memetakan satu atau lebih port, atau flag -P untuk memublikasikan semua port dan peta yang terbuka mereka ke port tingkat tinggi. Anda dapat melakukan porting melalui salah satu cara di bawah ini:

-Mengekspos port melalui Dockerfile dengan –mengekspos dan publikasikan dengan -P bendera. Ini akan mengikat port yang terbuka ke host Docker pada port acak.
-Mengekspos port melalui Dockerfile dengan –mengekspos dan publikasikan dengan -p 21:21 flag, ini akan mengikat port eksposur ke host Docker pada port 21 tertentu dengan guest 21.
– Bind port dengan perintah run container 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

Contoh:

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

Soket Domain Unix dalam satu host

Untuk berkomunikasi antar container dalam satu host, Anda dapat menggunakan mekanisme IPC di Linux menggunakan soket yang sama. Jalankan dua docker dari host docker dengan berbagi volume yang harus dibuat di mesin 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

Setelah perintah di atas, container dvc1 dan dvc2 dapat menggunakan socket sebagai /var/tmp/SocketX untuk interkoneksi.

Gunakan mekanisme tautan Docker untuk menyiapkan tautan antar container

Docker dapat membuat terowongan antara dua wadah dengan menggunakan variabel lingkungan untuk meneruskan informasi dari wadah induk ke wadah anak. Untuk membuat tautan, Anda menggunakan –link bendera:

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

Contoh:
-Periksa jaringan penampung induk:

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

-Tautkan dua wadah baru dengan wadah induk:

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

-Periksa wadah tertaut:

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

-Periksa file host wadah baru, ia memiliki informasi wadah induk:

# 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 /]#
Peringatan :Bendera –link adalah fitur warisan Docker. Ini akhirnya dapat dihapus. Kecuali Anda benar-benar perlu untuk terus menggunakannya, kami menyarankan Anda menggunakan jaringan yang ditentukan pengguna untuk memfasilitasi komunikasi antara dua wadah alih-alih menggunakan –link. Salah satu fitur yang tidak didukung oleh jaringan yang ditentukan pengguna yang dapat Anda lakukan dengan –link adalah berbagi variabel lingkungan antar container. Namun, Anda dapat menggunakan mekanisme lain seperti volume untuk berbagi variabel lingkungan antar container dengan cara yang lebih terkontrol.


Docker
  1. Kapan dan Mengapa Menggunakan Docker

  2. Instal Docker dan WordPress Di Ubuntu

  3. Mencegah aplikasi lain mengikat ke port 80 dan 443

  1. Menjalankan PostgreSQL di Docker, Panduan Cepat dan Praktis

  2. Cara Mengekspor dan Mengimpor Kontainer Docker

  3. perbedaan antara podman dan buruh pelabuhan.

  1. Apa itu Docker (dan wadah Linux?)

  2. Periksa port dan proses apa yang berjalan di Ubuntu

  3. Memahami pemetaan port buruh pelabuhan