Dockerコンテナがホストポートにアクセスできない場合の解決策

Dockerコンテナがホストポートにアクセスできない場合の解決策

最近、仕事中に問題が発生しました。Docker コンテナがホストの redis にアクセスできず、telent6379 ポートがブロックされていました。

調査の結果、サーバーでファイアウォールが有効になっており、ファイアウォールが docker0 ネットワーク カードのポート 6379 へのアクセスを許可していることが判明しました。

操作は以下のとおりです。

ファイアウォールコマンド --permanent --zone=trusted --change-interface=docker0

ファイアウォール-cmd --reload

追加情報: Docker が mysql コンテナを起動すると、エラーが発生します: ポートが利用できません: listen tcp 0.0.0.0:3306

エラーのスクリーンショットは次のとおりです

このエラーは、ローカル ポート 3306 が占有されていることが原因で発生します。MySQL がローカルにインストールされ、MySQL サービスが開始されている可能性があります。

解決策1:サービスを開き、mysqlサービスを見つけて停止するか、ポートを変更します

次に次のコマンドを実行します

docker run --name MYSQL -e MYSQL_ROOT_PASSWORD=123456 -p 3306:3306 -itd mysql:latest /bin/bash

図に示すように、起動は成功しています

解決策2:ポートマッピングを変更する

docker run --name MYSQL -e MYSQL_ROOT_PASSWORD=123456 -p 3309:3306 -itd mysql:latest /bin/bash

例:

-p 3309:3306: -p ホスト ポート: コンテナ ポート。つまり、ホスト ポート 3309 をコンテナ ポート 3306 にマップします。ホストがコンテナ データベースにログインするときは、3309 などのホスト ポートを使用します。

docker コンテナがホストポートにアクセスできない問題に対する上記の解決策は、エディターが皆さんと共有する内容のすべてです。 皆さんの参考になれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • Dockerはコンテナとホスト間でのシェルコマンドのシームレスな呼び出しを可能にします
  • Dockerコンテナにホストディレクトリへの書き込み権限がない場合の解決策
  • ホスト上のDockerコンテナ内でシェルまたはプログラムを実行する
  • Dockerコンテナ内でホストDocker操作を呼び出して実行する
  • dockerコンテナがIP経由でホストマシンにアクセスできない問題を解決する方法の詳細な説明
  • Dockerコンテナを使用してホストネットワークにアクセスする方法
  • Dockerコンテナとホストマシン間の8時間の差の問題を解決する

<<:  MYSQL データベース GTID はマスタースレーブレプリケーションを実現します (超便利)

>>:  HTML テーブル セルの幅と高さを設定する方法

推薦する

Baidu デッドリンクファイルを作成する方法

Baidu によって定義されているデッドリンク形式には 2 種類あります。 1: XML形式のデッド...

ElementUI の el-dropdown に複数のパラメータを実装する方法

最近、業務上のボタンの増加により、ページレイアウトにボタンが多すぎて、ページが美しくなく、ユーザーエ...

MySQLトリガーの使用

目次1. トリガーの紹介1. トリガーとは何ですか? 2. トリガーの特徴2. トリガーを作成する1...

keepalived+nginx の高可用性を実装する方法の例

1. keepalived の紹介Keepalived は、もともと LVS クラスタ システム内の...

vue+tp5はシンプルなログイン機能を実現

この記事では、参考までに、簡単なログイン機能を実装するためのvue+tp5の具体的なコードを紹介しま...

JavaScript のフラット配列をツリー構造に変換する例

目次バックグラウンドで10,000個のデータが失われた再帰法非再帰的方法要約するバックグラウンドで1...

Windows はリモート デスクトップが長時間自動的に切断されるのを防ぎます

Windows リモート デスクトップを使用してサーバーに接続したことがある人なら、リモート デスク...

Vueのキャッシュ方法の例の詳細な説明

最近、「フロントエンドキャッシュ」という新しい要件が作成されました要件背景: フォームへの高頻度の繰...

Dockerコンテナを更新、パッケージ化、Alibaba Cloudにアップロードする方法

今回は、実行中のコンテナをイメージにパッケージ化して Alibaba Cloud にアップロードし、...

Zabbix設定 DingTalkアラーム機能実装コード

必要Zabbix で DingTalk アラームを設定する方法は、Prometheus で Ding...

mysqld_multi を使用して単一のマシンに複数のインスタンスをデプロイする方法に関する MySQL チュートリアル

目次1. MySQLのコンパイルとインストール: 2. 最初のマルチインスタンス3307を準備する3...

VUE でタブページを切り替える 4 つの方法

目次1. 静的実装方法: 2. 第2のシミュレーション動的方法3. 3番目の動的データ方式4. 動的...

MySQLでデータをエクスポートするいくつかの方法の詳細な説明

MySQL データをエクスポートする目的は、データベースのバックアップ、テーブル構造のエクスポート、...

小さな画像をクリックしたときに更新せずに大きな画像コードが表示されるようにLightboxを実現するためにCSSを使用する

小さな画像をクリックしたときに更新せずに大きな画像コードが表示されるようにLightboxを実現する...

MySQL 5.7 の同時レプリケーションにおける暗黙のバグの分析

序文当社の MySQL オンライン環境のほとんどはバージョン 5.7.18 を使用しています。このバ...