Saya ingin mem-block akses langsung ke port container saya, karena saya ingin mengakses lewat domain agar lebih mudah. Gampangnya, saya blok saja menggunakan perintah ufw deny ... tapi tidak berhasil. Coba ganti ke firewalld, masih gagal juga, aplikasi di container masih bisa di akses lewat port. Akhirnya coba ganti lagi ke ufw, container network malah berantakan, container ga bisa jalan sama sekali, hadeh…

Andai saja, saya googling sebelum beralih ke firewalld, hal itu tidak akan terjadi. Saya menemukan solusi dan penjelasan paling bagus di mkubaczyk - force docker not bypass ufw. Solusinya dengan

  1. Pastikan rule outgoing ufw di buat default, ufw default allow outgoing
  2. Menambahkan file daemon.json di docker
echo "{
\"iptables\": false
}" > /etc/docker/daemon.json
  1. Izinkan UFW untuk melakukan NAT dari interface external ke interface internal, sed -i -e 's/DEFAULT_FORWARD_POLICY="DROP"/DEFAULT_FORWARD_POLICY="ACCEPT"/g' /etc/default/ufw && ufw reload

  2. Tambahkan rule iptables, iptables -t nat -A POSTROUTING ! -o docker0 -s 172.17.0.0/16 -j MASQUERADE

** Restart service docker nya**, kalau add error akibat ganti firewall seperti saya, cara mudahnya rebuild container dari awal :)

Sumber : mkubaczyk - force docker not bypass ufw