Coba ubah 127.0.0.1:6379
ke redis:6379
.
Meskipun Redis sedang berjalan, python
your Anda wadah tidak dapat berkomunikasi dengannya; ini karena mencoba menyambung ke 127.0.0.1:6379
, tetapi dari perspektif penampung, tidak ada yang berjalan di sana. Ini bisa sedikit membuat frustrasi untuk di-debug, tetapi sedikit lebih mudah jika Anda ingat bahwa container mendapatkan namespace jaringan mereka sendiri. Akibatnya, python
's localhost !=redis
's localhost !=localhost
mesin host Anda .
Untungnya, mudah untuk menghubungkan container yang berbagi bridge yang sama, dan secara default, docker-compose
membuat jaringan jembatan tunggal dan menghubungkan semua wadah Anda dengannya, menyediakan DNS yang diperlukan untuk memungkinkan mereka menemukan satu sama lain. Akibatnya, komunikasi container-to-container bekerja hanya dengan menggunakan nama layanan.
Sebagai catatan, Anda dapat menjalankan container di namespace yang sama, dan menjalankannya di namespace host, melalui --net=container:<container-id>
atau --net=host
bendera. Ini sangat berguna untuk menjalankan alat debugging dalam wadah dan melampirkannya ke ruang nama jaringan baik wadah lain atau host, mis. menggunakan netshoot untuk melihat port mana yang mendengarkan di dalam wadah (terbuka atau tidak), docker run --rm -it --net container:test_web_1 nicolaka/netshoot netstat -tulpn
.