Docker Tidak Bisa Akses Internet Padahal Server Normal

Diposting pada

Kejadian ini pertama kali saya alami saat deploy container baru di server produksi. Server terlihat normal, koneksi internet lancar, dan DNS tidak bermasalah. Namun anehnya, container Docker sama sekali tidak bisa ping keluar.

Awalnya saya kira image bermasalah. Namun setelah ganti image lain, hasilnya tetap sama. Dari situ saya mulai fokus ke jaringan Docker, bukan ke aplikasinya.

Gejala yang Muncul di Docker

Sebelum masalah ini ketahuan, beberapa tanda berikut muncul secara bersamaan:

  • Container gagal update package
  • Ping ke luar dari container timeout
  • Pull image Docker sangat lambat atau gagal
  • Server utama tetap bisa akses internet

Karena host normal, saya langsung curiga ke bridge network Docker.

Cek Koneksi dari Dalam Container

Langkah pertama, saya masuk ke salah satu container:

docker exec -it nama_container /bin/sh

Lalu saya coba ping ke internet:

ping 8.8.8.8

Hasilnya timeout. Namun saat ping dari host, koneksi berjalan normal. Dari sini, jelas masalah hanya terjadi di Docker.

Cek Network Docker

Selanjutnya, saya cek daftar network Docker:

docker network ls

Bridge default masih ada. Namun saat saya inspeksi, terlihat routing tidak berjalan normal.

docker network inspect bridge

Masalah yang Sering Terjadi

Dari pengalaman di beberapa server, masalah ini biasanya muncul karena:

  • Firewall server memblokir forwarding
  • Rule iptables Docker rusak
  • Docker tidak reload setelah update kernel
  • Service Docker restart tidak bersih

Di kasus saya, iptables Docker tidak terbentuk dengan benar.

Restart Docker dan Reload Network

Langkah paling aman yang saya lakukan adalah restart Docker secara penuh:

systemctl restart docker

Setelah itu, saya cek ulang koneksi dari container. Pada beberapa server, cara ini sudah cukup.

Reset Network Bridge Docker

Jika restart belum menyelesaikan masalah, saya biasanya reset bridge Docker:

docker network rm bridge
systemctl restart docker

Docker akan membuat ulang bridge network secara otomatis.

Cek IP Forwarding Server

Saya juga memastikan IP forwarding aktif:

cat /proc/sys/net/ipv4/ip_forward

Jika nilainya 0, saya aktifkan:

sysctl -w net.ipv4.ip_forward=1

Hasil Setelah Diperbaiki

Setelah bridge dan iptables normal kembali, container langsung bisa ping keluar. Pull image berjalan lancar, dan aplikasi kembali normal tanpa perlu rebuild.

Baca Juga :

Dari kejadian ini, saya belajar bahwa masalah Docker tidak selalu datang dari aplikasinya, tetapi sering muncul dari layer network.

Kesimpulan

Jika Docker tidak bisa akses internet sementara server normal, jangan langsung menyalahkan image atau DNS. Fokuslah ke network Docker, iptables, dan service-nya. Pengecekan sederhana bisa menghemat banyak waktu debugging.

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *