ホームページ  >  記事  >  バックエンド開発  >  Dockerコンテナはネットワークを設定していないにもかかわらず、別のネットワークを選択します

Dockerコンテナはネットワークを設定していないにもかかわらず、別のネットワークを選択します

PHPz
PHPz転載
2024-02-09 11:51:17537ブラウズ

Dockerコンテナはネットワークを設定していないにもかかわらず、別のネットワークを選択します

Docker では、さまざまなネットワークを選択することで、コンテナーにネットワーク接続を提供できます。驚くべきことに、明示的にネットワークを設定していないにもかかわらず、Docker は依然としてデフォルトのネットワークをコンテナに割り当てます。ネットワーク構成に関連する問題が発生する可能性があるため、この問題は多くの開発者を悩ませています。この記事では、Docker コンテナーにデフォルトのネットワークがある理由と、PHP エディター Youzi の助けを借りてさまざまなネットワークから選択する方法について詳しく説明します。

質問内容

go サービスの docker 構成のセットアップに問題があります。私のセットアップの概要は次のとおりです

リーリー

graphql プレイグラウンド (http) を http://localhost:8080 で実行しています。ポートは公開されているはずですが、プレイグラウンド UI にアクセスできません。

私がやりたいことは:

  1. graphql プレイグラウンドと、コンテナー内の他のポートで実行されている他の A​​PI にアクセスできるようにする
  2. Docker 化された Go アプリから別の mysql コンテナーにリクエストを送信できるようになります (rules_docker と同じネットワーク上にコンテナーを配置する方法がわかりません)。
  3. 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 サイトの他の関連記事を参照してください。

声明:
この記事はstackoverflow.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。