Dockerでホストされるサービスを、同じホスト上の他のコンテナーのみがアクセスできるようにするのは簡単です。あなたの場合:
- サーバーを0.0.0.0または::0(すべてのアドレス)にバインドまたはリッスンするように設定します。
- デフォルト以外のDockerネットワークを作成します(Docker Composeはこれを自動的に行います)。
- そのDockerネットワーク上でサーバーコンテナーと関連するクライアントコンテナーを起動します(Docker Composeはデフォルトでこれを実行します)。および
- しないでください
docker run -p
を設定します またはDockerComposeports:
オプション
その場合、クライアントコンテナは、そのコンテナ名をホスト名として使用してサーバーコンテナに到達できますが、ホストおよび他のホスト上のDocker以外のプロセスはサーバーに到達できません。
ホストに複数のネットワークインターフェースがあり、それらの1つにバインドするとサービスが「プライベート」になる場合は、docker run -p
を使用して同じことを行うことができます。 。ホストにパブリックIPアドレス10.20.30.40/16とプライベートIPアドレス192.168.144.128/24がある場合、docker run -p 192.168.144.128:6379:6379
プライベートネットワーク(および上記の他のDockerコンテナ)で利用できるようになりますが、パブリックネットワークでは利用できなくなります。 (コンテナー内のサーバー自体は、0.0.0.0にバインドする必要があります。)
それ以外の場合、サーバーをオフホストで表示する必要があるが、一部のIPアドレスにのみ表示する必要がある場合は、iptables
を使用していると思います。 Dockerに固有ではない魔法。