Docker でコンテナのポート マッピングを動的に変更する方法

Docker でコンテナのポート マッピングを動的に変更する方法

前書き: Docker のポート マッピングは、多くの場合、Docker Run コマンド中に -p を介してコンテナの内部ポートをホスト マシンの指定ポートにマッピングすることで行われます。一般的には、コンテナ ポートに対応するポートが事前に決定され、マッピングされます。ただし、場合によっては、一時的にポートをマッピングする必要があります。たとえば、Docker で MySQL コンテナを実行する場合、デフォルトのポートは開いていません。では、実行中のコンテナで指定されたポートを公開する方法はありますか?以下をお読みください--->

方法 1: Docker 構成ファイルを変更する (危険)

目標を達成するには、Docker 構成ファイルを変更する必要があります。一般的には、config.v2.json と hostconfig.json というファイルを変更する必要があります。デフォルトのパスは/var/lib/docker/containers/<容器名稱>です。

まず、 systemctl stop dockerを使用して Docker サービスをシャットダウンします。次に、config.v2.json ファイルの ExposedPorts 構成情報を変更して、コンテナーの内部ポート ("8080/tcp":{} など) を追加します。次に、hostconfig.json の PortBindings 構成情報を次のように変更します。

上記の設定が完了したら、 systemctl restart docker Docker サービスを再起動し、指定したコンテナを再起動して対応するポートにアクセスします。 (この方法はリスクがあり、頻繁に使用することはお勧めしません)

 「設定」: {
  「公開ポート」: {
   // 内部ポート 5432 マッピングを追加します "5432/tcp": {},
   "8080/tcp": {}
  },s
  ...
 },

「ポートバインディング」:{
  // 内部ポートと外部ポート 15432 を追加
  "5432/tcp":[
   {
    "ホストIP":"",
    "ホストポート":"15432"
   }
  ]、
  "8080/tcp":[
   {
    "ホストIP":"",
    "ホストポート":"28080"
   }
  ]
 },

方法2: Iptablesポート転送

Docker のネットワーク ポート マッピングの原則は、Iptables を介してポート転送を実現することです。この原則に基づいて、iptables を直接使用してポートをターゲット コンテナ IP に転送できます。ポート転送は次のコマンドを使用して実現できます。この方法は Iptables ルールに依存します。シナリオによっては、Iptables ルールの競合が発生し、コンテナの有効な起動に影響する可能性があります。

# ポートマッピング iptables -t nat -A DOCKER -p tcp --dport <コンテナの外部ポート> -j DNAT --to-destination <コンテナの IP>:<コンテナの内部ポート>
# ポートマッピングルールをキャンセルします iptables -t nat -D DOCKER -p tcp -d 0/0 --dport <コンテナの外部ポート> -j DNAT --to-destination <コンテナの IP>:<コンテナの内部ポート>

Docker でコンテナのポート マッピングを動的に変更する方法についての記事はこれで終わりです。Docker でコンテナのポート マッピングを変更する方法の詳細については、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • 複数の Docker コンテナが同じポート番号を持たない場合の解決策
  • 実行中のDockerコンテナのポートマッピングを変更する方法
  • Windows 10でDockerコンテナのポートにアクセスできない問題に対する完璧な解決策
  • Dockerはポートを介してコンテナに接続します
  • Dockerはコンテナにポートを動的に公開します
  • Dockerコンテナがホストポートにアクセスできない場合の解決策
  • Dockerはコンテナポートバインディングのローカルポートを実装します

<<:  MySQL 集計統計データの低速クエリの最適化

>>:  JavaScript ES6 モジュールの詳細な説明

推薦する

Vue で ToDo アプリケーションを実装する例

背景まず最初に、私はフロントエンド開発の専門家ではないことを述べておきたいと思います。私の以前のコン...

HTMLタグのデフォルトスタイルの配置

html、address、blockquote、body、dd、div、dl、dt、fieldset...

Mysql 5.6.37 winx64 インストール デュアル バージョン mysql ノート

マシンに MySQL バージョン 5.0 がすでに存在する場合は、最新バージョンの MySQL のイ...

CSS3を使用してテキストの垂直配置を実現する方法

最近のプロジェクトでは、テキストを垂直に揃えたいと考え、CSS の writing-mode プロパ...

MySQL データベースのアップグレードにおけるいくつかの「落とし穴」

商用データベースの場合、データベースのアップグレードは優先度が高く、バージョンアップのロードマップ、...

JavaScript で判決文をエレガントに記述する例

目次序文1. モナドの判断1.1 例1.2 オブジェクトに入れる1.3 マップに載せる2. 複数の判...

WeChatアプレットがシンプルな計算機機能を実装

WeChatアプレット:シンプルな計算機、参考までに、具体的な内容は次のとおりです。ミニプログラムに...

MySQL グループレプリケーションの設定手順 (推奨)

MySQL-Group-Replication は、MySQL-5.7.17 で開発された新しい機...

Linuxターミナルでの一般的なMySQL操作コマンドの詳細な説明

仕える: # chkconfig --list すべてのシステム サービスを一覧表示します # ch...

このリファレンスとJavaScriptのカスタムプロパティの詳細な説明

目次1. このキーワード2. カスタム属性3. 包括的なケース1:タブの実装付録要約する1. このキ...

CentOS 7 で RPM を使用して mysql5.7.13 をインストールする

0. 環境この記事のオペレーティング システム: CentOS 7.2.1511 x86_64 My...

鏡像効果を実現する JavaScript キャンバス

この記事では、JavaScriptキャンバスでミラーイメージ効果を実現するための具体的なコードを参考...

HTML文書の基本構造(Webページ作成の基礎知識)

HTMLの動作原理: 1. ローカル操作: ブラウザでhtmlファイルを開く2. リモートアクセス...

JavaScriptを使用してSMS認証コード間隔を送信する機能を実装する

多くのアプリやウェブサイトでは、ログインやアカウント登録の際にSMS認証コード1を送信する場所があり...

MySQLのINサブクエリによってインデックスが使用できなくなる問題を解決する

今日は、MySQL IN サブクエリの最適化に関するケーススタディを見ました。最初は少し懐疑的でした...