私はKafkaサーバー上のローカルマシンポート9092で実行しています。docker-composeを使用するDockerコンテナでサービスを実行していますkafkaサーバーにメッセージを送信します。
'localhost'とIPを使用してサービスコードでプロデューサーを記述しようとしましたが、どちらも機能しません。
誰かが問題を解決するのを手伝ってくれる?
docker-composeを使用:
Network_modeオプションを使用して、localhostポートへの接続を許可します
network_mode: "Host"
docker-composeなし:
--netフラグを使用して、localhostポートへの接続を許可します
docker run -it --net=Host
--networkフラグも使用できます
--network="Host"
Dockerの公式ドキュメントによると、これらは「コンテナにDバスなどのローカルシステムサービスへの完全なアクセス権を与えるため、安全ではないと見なされています」。
もちろん、localhost:9092で実行されているサービスをコンテナー化すると、Dockerコンテナーでも実行でき、-linkフラグを使用して2つのDockerコンテナーをリンクできます。
docker run -t -d myService
docker run -t -d --link myService:myService_ref myOtherService
ホストのIPアドレスを修正し、「extra_hosts」オプションを使用してdocker-compose経由でこれをdockerに渡すことができます。
何かのようなもの:
Sudo ifconfig lo0 alias 172.16.123.1
次にdocker composeで:
extra_hosts:
- "service.localhost:172.16.123.1"
次に、コンテナ内で次のことができるはずです。
ping service.localhost
コメントを追加できません。だから、これは正義であり、私を助けてくれた以前の答えの更新です。
コンテナからローカルマシンに接続します。 localhostのIPエイリアスを作成する
Sudo ifconfig lo:0 172.18.1.1 up
Docker-compose設定サービス行に追加
extra_hosts:
- 'local.machine:172.18.1.1'
コンテナの再起動後、接続に使用できます
'web-socket-server' => 'ws://172.18.1.1',