Docker では、さまざまなネットワークを選択することで、コンテナーにネットワーク接続を提供できます。驚くべきことに、明示的にネットワークを設定していないにもかかわらず、Docker は依然としてデフォルトのネットワークをコンテナに割り当てます。ネットワーク構成に関連する問題が発生する可能性があるため、この問題は多くの開発者を悩ませています。この記事では、Docker コンテナーにデフォルトのネットワークがある理由と、PHP エディター Youzi の助けを借りてさまざまなネットワークから選択する方法について詳しく説明します。
go サービスの docker 構成のセットアップに問題があります。私のセットアップの概要は次のとおりです
リーリーgraphql プレイグラウンド (http) を http://localhost:8080
で実行しています。ポートは公開されているはずですが、プレイグラウンド UI にアクセスできません。
私がやりたいことは:
rules_docker
と同じネットワーク上にコンテナーを配置する方法がわかりません)。 docker exec -it ... /bin/bash
を docker コンテナに追加します (bash がインストールされていないため機能しませんが、この container_image コマンドを使用して bash をインストールする方法がわかりません) )
エラーは次のとおりです: 生成された docker イメージ ID を取得して docker run -p 8080:8080 image_id
を実行すると、graphql プレイグラウンドにアクセスできますが、mysql コンテナーと通信できません
次のようにネットワークを変更すると: docker run --network=host -p 8080:8080 image_id
dockerized go アプリケーションは mysql コンテナと正常に通信できますが、graphql プレイグラウンドにアクセスできなくなります。 --network=bridge
を維持する場合にのみ、graphql プレイグラウンドにアクセスできます。 mysql を起動するときにネットワークを指定しなかったので、なぜ mysql が bridge
を使用しないのかもわかりません。これがmysqlコンテナを取得した方法です
go_binary( name = "main_arm64", embed = [":server_lib"], goarch = "arm64", goos = "linux", visibility = ["//visibility:public"], ) container_image( name = "ww_server_image", base = "@go_image_static_arm64//image", entrypoint = ["/main_arm64"], files = [":main_arm64"], ports = [ "8080", "3306", ], )
答えはここにあります: go と docker を使用して mysql サーバーに接続できません - ダイヤルアップ TCP 127.0.0.1:3306: 接続: 接続が拒否されました
Mac 上の Docker は Linux VM を使用するため、実際には次のアドレスを使用して mysql にアクセスする必要があることがわかりました。 リーリー
以上がDockerコンテナはネットワークを設定していないにもかかわらず、別のネットワークを選択しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。