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

推薦する

Linuxはiptablesを使用して複数のIPからのサーバーへのアクセスを制限します

序文Linux カーネルでは、netfilter は、パケット フィルタリング、ネットワーク アドレ...

Dockerスペースがいっぱいでコンテナに入れない場合の解決策

トラブル発生が突然で、業務も迫っていたため、現場のスクリーンショットを撮る時間がありませんでしたので...

Mysql が CPU を過剰に占有する場合の最適化方法 (必読)

Mysql が CPU を占有しすぎる場合、どこから最適化を開始すればよいでしょうか? CPU 使...

mysql 5.7.18 winx64 パスワード変更

MySQL 5.7.18 が正常にインストールされた後、バージョン 5.7 では空のパスワードでのロ...

MySQL 8.0.18 ハッシュ結合は左/右結合をサポートしていません 左と右の結合の問題

MySQL 8.0.18 では、インデックスが作成されていないフィールドに適用でき、等価値の関連付け...

React Hooksの使用例

目次簡単なコンポーネントの例より複雑な親子コンポーネントのケースオンセレクトの書き方反応する子供Re...

Centos6にMysql5.7をインストールする方法

環境セントロス6.6 MySQL 5.7インストールシステムがインストールされている場合は、まずアン...

CentOS 8/RHEL 8 に Cockpit をインストールして使用する方法

Cockpit は、CentOS および RHEL システムで使用できる Web ベースのサーバー管...

css n番目から始まるすべての要素を取得する

具体的なコードは次のとおりです。 <div id="ボックス"> &...

HTML でランダムロールコーラーを実装するためのサンプルコード

この点呼装置は簡易版であり、自動停止の必要性を考慮していないため、点呼を開始した後、停止ボタンをクリ...

HTML の iframe と frame の違いを例を使って説明します

プロジェクトで frameset 属性を使用したことがあるかどうかはわかりません。昨年、オンライン ...

Mysqlアカウント管理の原理と実装方法の詳細な説明

この記事では、例を使用して、MySQL アカウント管理の原則と実装方法を説明します。ご参考までに、詳...

CSS における要素の表示モード

CSS では、要素タグは、要素の表示モードの違いに応じて、インラインレベル要素とブロックレベル要素の...

MySQLのバージョンアップ方法を超詳しく解説

目次1. はじめに2. データベースをバックアップする3. オリジナルのMysqlをアンインストール...

60件のページング事例と優れた実践例を推奨

<br />構造と階層により複雑さが軽減され、読みやすさが向上します。記事やサイトが整理...