3. Port & Akses
Container punya jaringan sendiri
Section titled “Container punya jaringan sendiri”Secara bawaan, container hidup di jaringan internal Docker. Nginx di dalam container memang mendengarkan port 80 — tapi port 80 milik container, bukan milik server. Supaya bisa diakses dari luar, port itu harus diteruskan (publish).
Publish port dengan -p
Section titled “Publish port dengan -p”docker run -d --name web -p 8080:80 nginx# ▲ ▲# port host port di dalam containerSekarang permintaan ke port 8080 server diteruskan ke port 80 container:
curl localhost:8080Satu port host hanya bisa dipakai satu container. Kalau dipakai dua kali, Docker menolak dengan pesan port is already allocated. Solusinya: pakai port host lain, misalnya -p 8081:80.
Mengintip ke dalam container — docker exec
Section titled “Mengintip ke dalam container — docker exec”docker exec web ls /usr/share/nginx/htmldocker exec web cat /etc/os-releasedocker exec -it web sh # shell interaktif (di server sungguhan)exec menjalankan perintah di dalam container yang sedang berjalan. Opsi -it membuka shell interaktif — sangat berguna untuk debugging. (Shell interaktif tidak tersedia di terminal latihan, tapi perintah biasa bisa.)
Log permintaan
Section titled “Log permintaan”Setiap kali kamu curl ke nginx, nginx mencatatnya. Lihat dengan docker logs web — kamu akan melihat baris "GET / HTTP/1.1" 200.
- Jalankan nginx bernama
webdan teruskan port host 8080 ke port 80 container.Petunjuk
docker run -d --name web -p 8080:80 nginx - Buka halamannya dengan
curl.Petunjuk
curl localhost:8080 - Coba jalankan container
web2di port host yang sama (8080) — perhatikan error-nya.Petunjuk
docker run -d --name web2 -p 8080:80 nginx - Jalankan
web2di port host 8081.Petunjuk
docker run -d --name web2 -p 8081:80 nginx - Buka
web2dengancurl.Petunjuk
curl localhost:8081 - Lihat log
web— permintaan curl tadi tercatat.Petunjuk
docker logs web - Intip isi folder web di dalam container
web.Petunjuk
docker exec web ls /usr/share/nginx/html

