127.0.0.1:6379
を変更してみてください redis:6379
へ 。
Redisは実行されていますが、python
コンテナはそれと通信できません。これは、127.0.0.1:6379
に接続しようとしているためです。 、しかし、コンテナの観点からは、そこには何も実行されていません。これはデバッグするのに少しイライラするかもしれませんが、コンテナが独自のネットワーク名前空間を取得することを覚えておくと少し簡単になります。その結果、python
のローカルホスト!=redis
's localhost!=ホストマシンのlocalhost
。
幸い、同じブリッジを共有しているコンテナを接続するのは簡単です。デフォルトでは、docker-compose
単一のブリッジネットワークを作成し、すべてのコンテナをそれらに接続して、コンテナが相互に検出できるようにするために必要なDNSを提供します。その結果、コンテナ間の通信は、サービス名を使用するだけで機能します。
注として、--net=container:<container-id>
を使用して、同じ名前空間でコンテナーを実行し、ホストの名前空間でコンテナーを実行することができます。 または--net=host
国旗。これは、コンテナでデバッグツールを実行し、それらを別のコンテナまたはホストのネットワーク名前空間にアタッチする場合に特に便利です。 netshootを使用して、コンテナー内でリッスンしているポート(公開されているかどうか)を確認します。docker run --rm -it --net container:test_web_1 nicolaka/netshoot netstat -tulpn
。