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

推薦する

JavaScript の非同期処理で待機時間を節約できますか?

JavaScriptで非同期実行の結果を同期的に取得するには、 for ループ内でawaitを使用...

MySQL における USING と HAVING の使用法の簡単な分析

この記事では、例を使用して MySQL での USING と HAVING の使用方法を説明します。...

Web開発で使用される基本的な概念と技術の紹介

本日は、Web 開発で使われる基本的な概念と技術を初心者向けに紹介します。A から Z まで合計 2...

ドラッグ効果を実現するための js オブジェクト指向メソッド

この記事では、ドラッグアンドドロップをJSオブジェクト指向で実装するための具体的なコードを参考までに...

Apache ソースコードのインストールと仮想ホストの設定に関する詳細なチュートリアル

ソースからApacheをインストールする1. Apacheソースコードをアップロードして必要なソフト...

Ubuntu 18.0.4 は mysql をインストールし、エラー 1698 (28000): ユーザー ''root''@''localhost'' のアクセスが拒否されましたを解決します

序文最近 Linux を学び、その後 Win から Ubuntu に変更しました。以前インストールし...

CSSの使用に関する深い理解 clear:both

clear:both清除浮動これは私が常に持っていた印象ですが、私はこれをめったに使用せず、私の理...

Alibaba Cloud ECS サーバーの開始プロセス (初心者必読のチュートリアル)

1. Alibaba Cloudは、個人のニーズに応じて適切なクラウドサーバーを選択し、CPU、メ...

Linux学習におけるmkdirコマンドの詳しい説明

目次序文1. ファイルの概念に関する基礎知識2. mkdir コマンド序文最近、Linux にますま...

MySQLの結合クエリ、ユニオンクエリ、サブクエリの原理と使用例の詳細な説明

この記事では、例を使用して、MySQL の結合クエリ、結合クエリ、サブクエリの原理と使用方法を説明し...

IDEA の Docker プラグインを介して Springboot プロジェクトを公開する方法の詳細なチュートリアル

1. Dockerfileを書く(1)プロジェクト名を右クリックして新しいテキストファイルを作成し、...

Uniapp WeChatアプレット: キー障害の解決策

ユニアプリコード <テンプレート> <表示> <image v-for...

React は antd のアップロード コンポーネントを使用してファイル フォーム送信機能を実装します (完全なコード)

私はプロジェクトを実行するために react を使い始めたばかりで、非常に未熟で完全な初心者です。私...

CSS ボックスを中央揃えするためのよく使われるいくつかの方法 (要約)

最初のもの: CSSの位置プロパティの使用 <スタイル タイプ="text/css&...

パゴダパネルとドッカーを使用して Gogs をインストールするプロセス全体

目次1 Baota Software StoreにDockerをインストールする2 ゴグスイメージを...