DockerコンテナはホストのMySQL操作にアクセスする

DockerコンテナはホストのMySQL操作にアクセスする

背景:

インターフェイスを提供する Flask プロジェクトがあり、これは Docker コンテナを使用して構築および実行されます。MySQL はホスト マシン上で実行されるため、コンテナ内で Flask がホスト マシンの mysql に接続できるようにする必要があります。

ifconfig コマンドを使用すると、docker0 と eth0 があることがわかります。docker コンテナでは、eth0 の IP アドレスとポート番号 (3306) を介してホストの MySQL に接続できます。また、nginx は、docker0 の IP アドレスとコンテナの構築時に指定したポート番号を介してコンテナにアクセスできます。

補足: dockerのmysqlコンテナは正常に動作しますが、ホストマシンはデータベースに接続できません。解決策は次のとおりです。

Dockerはmysqlコンテナを正常に実行しますが、ホストNavicatは接続できません

docker で docker ps を実行すると、次のように表示されました。

つまり、mysql は正常ですが、sqlyog と Navicat を使用してデータベースに接続できません。後で問題が見つかりました。mysql コンテナの作成には成功しましたが (docker run --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=root -d mysql:5.6.35)、無視したプロンプトがありました。

ここでは、ネットワークが利用できないため、ホストはデータベースに接続できないというメッセージが表示されます。

解決策: 次のコマンド vim /usr/lib/sysctl.d/00-system.conf を入力します (vim が機能しない場合は、vi と入力してください)。

すぐに次のメッセージが表示されます:

最後に次の文を追加します: net.ipv4.ip_forward=1 (追加したコマンドは次のとおりです: 最初に i キーを押してから操作できます)。次に保存して終了します (コマンド net.ipv4.ip_forward=1 を記述した後、esc キーを押し、次に Ctrl+: を押し、最後に wq! と入力して保存して終了します)。次に、ネットワーク サービスを再起動します: systemctl restart network まず、先ほどの mysql コンテナを停止します (docker stop docker)。次に、次のようにコンテナを削除します docker rm mysql:

これで、mysql コンテナを再作成して、その効果を確認できます。

ネットワークが利用できないという警告は出ないのでしょうか? sqlyog を使用して接続しましたが、Navicat を使用して接続したときも同じでした。

上記は私の個人的な経験です。参考になれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。間違いや不備な点がありましたら、遠慮なくご指摘ください。

以下もご興味があるかもしれません:
  • Docker コンテナのカスタム ホストのネットワーク アクセス操作
  • Docker ポート マッピングと外部アクセス不可の問題
  • Dockerでリモートアクセスを有効にする方法
  • DockerコンテナがJupyterにアクセスできない問題の解決策
  • Dockerモードで起動したTomcatのホームページにアクセスすると404エラーが発生する
  • Docker イメージのローカル Elasticsearch ポート操作へのアクセス
  • 突然外部ネットワークからDockerにアクセスできなくなる問題の解決方法

<<:  MySQL のあまり知られていないソート方法

>>:  js 配列エントリ() 反復メソッドを取得する

推薦する

jquery+springbootでファイルアップロード機能を実現

この記事の例では、ファイルアップロード機能を実現するためのjquery+springbootの具体的...

MySQL バージョン 5.7.24 のデータベース インストール プロセスの詳細なグラフィック説明

MySQL は最も人気のあるリレーショナル データベース管理システムです。WEB アプリケーションに...

MySQLデータベースの圧縮バージョンのインストールと設定に関する詳細なチュートリアル

目次1. MySQLをダウンロードする2. 圧縮パッケージを解凍する3. MySQLを初期化する4....

nofollowタグの使用と分析に関する簡単な説明

nofollowをめぐる論争Zac と Guoping の間では、nofollow が PR を無駄...

CentOS6.9 での MySQL 5.7.17 のインストールと設定のチュートリアル

CentOS6.9はMysql5.7をインストールします。参考までに、詳細は次のとおりです。 1. ...

ブリージングカルーセルを実装するネイティブJS

今日は、ネイティブ JS で実装されたブリージング カルーセルを紹介します。効果は次のとおりです。 ...

キャンバスはスクラッチカード効果を描画します

この記事では、キャンバスでスクラッチカード効果を描画するための具体的なコードを参考までに共有します。...

テキストエリアの disabled 属性と readonly 属性の具体的な使用法

障害者の定義と使用法disabled 属性はブール属性です。 disabled 属性は、テキスト領域...

Vue3 setup() の高度な使用例の詳細な説明

目次1. オプションAPIと組み合わせAPIの違い2. セットアップを具体的にどのように使用するので...

ウェブページの要素の検査とソースコードの表示の違いについて

Chrome ブラウザで Web ページを開くと、ページを右クリックすると 2 つの非常によく似たオ...

MySQL binlog_ignore_dbパラメータの具体的な使用法

序文:前の記事を読んだ後、binlog はデータベースで実行されたすべての DDL および DML ...

HTML 代替カラーコードを実現する n 通りの方法 サンプルコード

この記事では、主に HTML のサンプル コードを紹介し、次のように交互に色を変更する方法を共有しま...

Reactコンポーネント通信の詳細な説明

目次コンポーネント通信の概要コンテンツ3つの方法まとめコンポーネントコミュニケーション - 父から息...

すべてのウェブ開発者が知っておくべき61のこと

通常、全員のスピーチを最初から最後まで読む必要があります。ただし、Stack Overflow には...

MySQL エラー コード 1064 の解決策

SQL ステートメント内の単語が mysql のキーワードと競合する場合は、`` (タブ キーの上)...