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 モジュールの詳細な説明

推薦する

Linux の操作とメンテナンスの基本 httpd 静的 Web ページ チュートリアル

目次1. ウェアハウスを使用してhttpd lrzsz解凍ファイルを作成する2. ソースコードファイ...

同じページを動的にロードするための Vue ルーティングリスニングの例

目次シナリオ分析発達要約するシナリオ分析システムでは、1 つのモジュールに 3 つのサブモジュールが...

Vueプロジェクトでコンポーネントをカプセル化する簡単な手順

目次序文Toastコンポーネントをカプセル化する方法ユースケース具体的な実装要約する序文ビジネスが発...

レスポンシブWebデザイン学習(2) — 動画をレスポンシブにすることはできるのか?

前回のエピソードレビュー:昨日は、ページがさまざまなデバイス サイズにどのように対応するかについて説...

CSS3 Flex エラスティックレイアウトのサンプルコードの詳細な説明

1. 基本概念 //任意のコンテナを Flex レイアウトとして指定できます。 。箱{ ディスプレイ...

CSS で中空マスク レイヤーを実装するサンプル コード

この記事の内容: ページ中空マスクレイヤー、ページ中空マスクガイドレイヤー、画像中空マスク通常のマス...

加算、減算、乗算、除算の機能を実現するには、HTML に 2 つの数値を入力します。

1. parseFloat() 関数Web ページ上に簡単な計算機を作成し、テキスト ボックスに ...

Javascript の奇妙な点をご存知ですか?

私たちのベテランの先人たちは、数え切れないほどのコードを書き、数え切れないほどの落とし穴に陥ってきま...

IE 環境での css-vars-ponyfill の使用に関する詳細な説明 (nextjs ビルド)

css-vars-ポニーフィルCSS 変数を使用して Web ページのスキニングを実現すると、互換...

JavaScript イベント委任 (プロキシ) の使用例の詳細

目次導入例: イベントの委任記述方法1: イベント委譲書き方2: 各子要素がイベントをバインドする例...

Ubuntu 20.04 に Xrdp サーバー (リモート デスクトップ) をインストールする方法

Xrdp は、グラフィカル インターフェイスを通じてリモート システムを制御できる Microsof...

HTML テーブルタグチュートリアル (17): テーブルタイトルの垂直配置属性 VALIGN

表のキャプションは表の上または下に配置でき、プロパティで調整できます。デフォルトのテーブル タイトル...

Vue ディレクティブ v-html と v-text

目次1. v-text テキストレンダリング命令2. v-html 1. v-text テキストレン...

ベースリンクタグの使用の紹介ベース

<br />リンクをクリックすると、ポップアップ表示される Web ページ アドレスは ...