Sangat mudah untuk membuat layanan yang dihosting Docker hanya dapat diakses oleh container lain di host yang sama. Jika Anda:
- Setel server untuk mengikat atau mendengarkan pada 0.0.0.0 atau ::0 (semua alamat);
- Buat jaringan Docker non-default (Docker Compose akan melakukannya secara otomatis);
- Luncurkan wadah server dan wadah klien terkait apa pun di jaringan Docker itu (Docker Compose akan melakukan ini secara default); dan
- Jangan jangan atur
docker run -p
atau Docker Composeports:
pilihan
maka wadah klien dapat mencapai wadah server menggunakan nama wadahnya sebagai nama host, tetapi proses non-Docker di host dan host lain tidak dapat menjangkau server.
Jika host Anda memiliki beberapa antarmuka jaringan dan mengikat ke salah satunya akan membuat layanan menjadi "pribadi" maka Anda dapat melakukan hal yang sama dengan docker run -p
. Jika host Anda memiliki alamat IP publik 10.20.30.40/16 dan juga alamat IP pribadi 192.168.144.128/24, maka docker run -p 192.168.144.128:6379:6379
akan membuatnya tersedia untuk jaringan pribadi (dan wadah Docker lainnya seperti di atas) tetapi bukan jaringan publik. (Server itu sendiri, di dalam wadah, masih perlu mengikat ke 0.0.0.0.)
Jika Anda memerlukan server agar terlihat di luar host, tetapi hanya untuk beberapa alamat IP, saya pikir Anda menggunakan iptables
sihir yang bukan asli Docker.