Docker

Bagaimana cara memeriksa koneksi jaringan yang sudah Siap di dalam Docker?

Melihat dan mengelola koneksi jaringan yang dibuat oleh kontainer Docker.

Seringkali saat bekerja dengan kontainer Docker, kita perlu melihat koneksi jaringan yang digunakan oleh kontainer untuk tujuan debugging atau pemecahan masalah awal. Anda mungkin ingin melihat IP mana yang mendengarkan di port atau berapa banyak koneksi yang saat ini aktif di penampung.

Karena Docker adalah lingkungan yang terisolasi, menjalankan netstat di server tidak akan memberi Anda koneksi jaringan dari container. Sebaliknya, Anda harus masuk ke dalam container untuk menjalankan netstat atau menjalankannya dari jarak jauh.

Mari kita lihat kedua opsi…

# 1. Masuk ke dalam container Docker untuk menjalankan netstat

Sebagai langkah pertama, temukan ID Penampung dari penampung yang ingin Anda pecahkan masalahnya.

$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
0ce7cfb9be37 nginx "/docker-entrypoint.…" 2 minutes ago Up 2 minutes 0.0.0.0:80->80/tcp web-server
4ab8551671d7 nginx "/docker-entrypoint.…" 6 minutes ago Up 6 minutes 80/tcp vigilant_ganguly
$

Di sini yang ingin saya pecahkan adalah container dengan ID 0ce7cfb9be37. Sekarang untuk mendapatkan sesi shell (bash) dari kontainer ini, gunakan:

$ docker exec -it 0ce7cfb9be37 bash

Ini akan membawa Anda ke prompt bash di dalam wadah.

root@0ce7cfb9be37:/#

Anda dapat menginstal netstatpaket untuk mencari koneksi jaringan yang mapan. Secara default, utilitas ini mungkin tidak tersedia di dalam wadah.

Jadi untuk menginstalnya, gunakan:

apt update

apt install net-tools

Sekarang, kita bisa menggunakan perintah netstat seperti biasa.

# netstat -an

Keluaran:

Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN
tcp 0 0 172.17.0.3:80 223.233.99.46:64429 FIN_WAIT2
tcp 0 0 172.17.0.3:80 223.233.99.46:4811 ESTABLISHED
tcp 0 0 172.17.0.3:80 223.233.99.46:64430 FIN_WAIT2
tcp 0 0 172.17.0.3:80 223.233.99.46:4810 ESTABLISHED
tcp6 0 0 :::80 :::* LISTEN
Active UNIX domain sockets (servers and established)
Proto RefCnt Flags Type State I-Node Path
unix 3 [ ] STREAM CONNECTED 35748
unix 3 [ ] STREAM CONNECTED 35749

Seperti yang Anda lihat dari keluaran di atas, koneksi yang dibuat dengan alamat sumber dan tujuan terdaftar. Untuk melihat proses mendengarkan di port, Anda dapat menggunakan:

# netstat -tulnp

Keluaran:

Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 1/nginx: master pro
tcp6 0 0 :::80 :::* LISTEN 1/nginx: master pro

# 2. Jalankan netstat tanpa masuk ke dalam container

Hal pertama yang pertama, kita perlu mendapatkan ID penampung dengan docker psperintah.

[root@relicflare-shared-services ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e5db9a01d4a8 postgres:13.1-alpine "docker-entrypoint.s…" 9 days ago Up 9 days 0.0.0.0:5432->5432/tcp relicflare_server_postgres
[root@relicflare-shared-services ~]#

Dan, kemudian jalankan perintah buruh pelabuhan seperti di bawah ini untuk mengetahui semua koneksi yang dibuat untuk kontainer.

docker exec e5db9a01d4a8 netstat |grep ESTABLISHED

Ini akan menghasilkan sesuatu seperti di bawah ini.

[root@relicflare-shared-services ~]# docker exec e5db9a01d4a8 netstat | grep ESTABLISHED
tcp 0 0 e5db9a01d4a8:postgresql 161.35.XXX.XXX:49128 ESTABLISHED
udp 0 0 localhost:48818 localhost:48818 ESTABLISHED
[root@relicflare-shared-services ~]#

Jadi idenya adalah menjalankan perintah netstat bersama dengan docker execperintah.

Kesimpulan

Sekarang Anda memiliki detail koneksi yang diperlukan, Anda dapat melanjutkan pemecahan masalah Anda dengan melihat lebih jauh pada buruh pelabuhan dan log proses.

2 Comments

2 Comments

Leave a Reply

Your email address will not be published. Required fields are marked *

Most Popular

To Top