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 配列エントリ() 反復メソッドを取得する

推薦する

SWFObjectを使用すると、HTMLにFlashを挿入する際のブラウザ互換性の問題を完全に解決できます。

一緒に学びましょう1. 伝統的な方法コードをコピーコードは次のとおりです。 <object c...

国内SNSのホームページを比較・分析して得た経験をみんなで共有(写真)

この記事では、ソーシャル ウェブサイトのホームページを比較分析することで洞察を得て、ソーシャル ウェ...

Baota LinuxパネルにFTP接続できない問題の解決方法の詳細な説明

Alibaba Cloud Server を使用している場合は、セキュリティ グループ設定でポート ...

MySQL 最適化の概要 - クエリエントリの合計数

1. COUNT(*) と COUNT(COL) COUNT(*)は通常、主キーに対してインデックス...

Linux で Xfce デスクトップ環境を使用すべき 8 つの理由

いくつかの理由(好奇心も含む)から、数週間前に Linux デスクトップとして Xfce を使い始め...

ブラウザでTIF形式の画像を表示する方法

ブラウザはTIF形式の画像を表示しますコードをコピーコードは次のとおりです。 <html>...

CSS で雨滴アニメーション効果を実装するサンプルコード

ガラス窓今日実現するのは雨滴効果です。ただし、雨滴効果を実現する前に、まずは曇りガラス効果を作成しま...

MySQL 5.7.17 圧縮バージョンのインストールノート

この記事では、参考までにMySQL 5.7.17圧縮版のインストール手順を紹介します。具体的な内容は...

CSS マルチレベルメニュー実装コード

これは、Web ページを Windows のスタート メニューなどのデスクトップ プログラムのように...

Navicatは機能ソリューション共有を作成できません

初めて MySQL FUNCTION を書いたとき、エラーが何度も発生しました。 Err] 1064...

Vueはカウンターのシンプルな生成を実装します

この記事では、Vueカウンターの簡単な実装コードを例として紹介します。具体的な内容は以下のとおりです...

GobangゲームのWebバージョンを実装するためのJavaScript

この記事では、GobangゲームのWebバージョンを実装するためのJavaScriptの具体的なコー...

CSSスタイルシートを効率的に使用するためのヒント: スタイルシートの力を最大限に活用する

インターネット経済の継続的な発展に伴い、インターネット上の専門ウェブサイト、公共サービスウェブサイト...

VMware vSphere 6.5 インストール チュートリアル (画像とテキスト)

vmware vSphere 6.5 は vSphere ソフトウェアのクラシック バージョンであ...