実行中のDockerコンテナのポートマッピングを変更する方法

実行中のDockerコンテナのポートマッピングを変更する方法

序文

docker run がコンテナを作成して実行するときに、-p を使用してポート マッピング ルールを指定できます。しかし、最初にポート マッピングを設定するのを忘れたり、間違って設定したりして変更する必要が生じることがよくあります。 docker start がコンテナを実行する場合、特定のポート マッピング ルールを変更できる -p オプションまたは設定は提供されません。では、この状況にどう対処すればよいのでしょうか?今日は、Docker で実行中の Docker コンテナのポート マッピングを変更する方法を説明します。

方法1: 元のコンテナを削除して新しいコンテナを作成する

この解決策は最も簡単です。元のコンテナを削除して、新しいコンテナを作成するだけです。もちろん今回はポートマッピングを追加することを忘れないでください。

利点と欠点: 利点はシンプルで高速であり、テスト環境でより一般的に使用されることです。欠点は、データベースミラーの場合、再構築して再度再構成するのがより面倒になることです。

方法2: コンテナ構成ファイルを変更し、Dockerサービスを再起動する

コンテナ構成ファイルのパス:

/var/lib/docker/containers/[コンテナのハッシュ]/hostconfig.json

hashofthecontainer は Docker イメージのハッシュ値であり、docker ps または docker inspect containername を通じて表示できます。 (コンテナIDから判別できます)

上記のように、ファイル内の項目の 1 つは PortBindings です。ここで、8080/tcp はコンテナー内のポート 8080 に対応し、HostPort はホストにマップされたポート 9190 に対応します。8361/tcp はコンテナー内のポート 8361 に対応し、HostPort はホストにマップされたポート 9191 に対応します。必要に応じてポートを変更し、Docker サービスを再起動してから、コンテナ サービスを開始します。

systemctl dockerを再起動します

利点と欠点: この方法の利点は、副作用がなく、操作が簡単なことです。欠点は、Docker サービス全体を再起動する必要があることです。同じホスト上で複数のコンテナ サービスが実行されている場合、他のコンテナ サービスに影響が及びます。

方法3: docker commitを使用して新しいイメージを構築する

Docker コミット: コンテナのファイルの変更と構成情報を新しいイメージにコミットします。これはテスト時に非常に便利です。コンテナのすべてのファイル変更と構成情報を新しい Docker イメージにインポートし、この新しいイメージでコンテナを再起動できます。これにより、以前のコンテナは影響を受けません。

1. Dockerコンテナを停止する

docker stop コンテナ01

2. Dockerコンテナをコミットする

docker commit container01 new_image:tag

3. 前の手順で新しく生成されたイメージを使用して新しいコンテナを起動します。

docker run --name container02 -p 80:80 new_image:tag

利点と欠点: この方法の利点は、同じホスト マシン上の他のコンテナーに影響を与えないことです。欠点は、管理が面倒で、2 番目の方法ほど直感的ではないことです。

要約する

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

以下もご興味があるかもしれません:
  • ポートマッピング後に Docker コンテナが突然接続に失敗する問題のトラブルシューティング プロセス
  • Docker ポート マッピングと外部アクセス不可の問題
  • Dockerコンテナの起動後にポートマッピングを追加する
  • Docker で実行中のコンテナのポート マッピングを設定する方法
  • Dockerコンテナの4つのポートマッピングのデモンストレーションと分析

<<:  MySQL の自動増分主キーに関する詳細な説明

>>:  CSS 評価効果の星の例

推薦する

MySQLフィールドのデフォルト値を設定する方法

目次序文: 1. デフォルト値に関する操作2. 使用上の提案要約:序文: MySQL では、テーブル...

Mysql関数呼び出しの最適化の詳細な説明

目次関数呼び出しの最適化関数呼び出しの最適化MySQL 関数は、内部的に決定論的または非決定論的とし...

スパンの最小高さを定義するソリューションは効果がありません

span タグは HTML ウェブページを作成するときによく使用されますが、このタグの使い方がよくわ...

JavaScript フロー制御 (ループ)

目次1. forループ2. 二重の for ループ3. whileループ4. dowhileループ5...

MySQLパーティションテーブルは月別に分類されています

目次テーブルを作成するデータベース ファイルを表示します。入れるクエリ消去補足:Mysqlは月テーブ...

MySQL 文字セットの概要

目次文字セット比較ルール4つのレベルの文字セットと比較規則3つのシステム変数このノートは主にMySQ...

ノードイベントループとメッセージキューの分析

目次非同期とは何ですか?なぜ非同期性が必要なのでしょうか?非同期IOとは何ですか?イベントループとは...

img 画像タグに alt 属性を付与する必要がありますか?

img 画像タグに alt 属性を追加しますか?画像 img タグの alt 属性を見落とすことはよ...

JavaScript における継承の 3 つの方法

継承する1. 継承とは何か継承: まず、継承とは関係、つまりクラス間の関係です。JS にはクラスはあ...

CSS3のall属性の使い方を理解する

1. 互換性以下のように表示されます。 互換性は問題ありません。IE を除き、他のブラウザは基本的に...

Windows 2016 Server セキュリティ設定

目次システムアップデート構成Windows Update サーバーの変更自動更新を有効にして許可する...

NginxはIP経由の直接アクセスを禁止し、カスタム500ページにリダイレクトします

設定ファイルに直接 サーバー{ listen 80 default; # IPへの直接アクセスを禁止...

nginx 設定ファイルで環境変数を使用する方法

序文Nginx はパフォーマンスを重視して設計された HTTP サーバーです。Apache や li...

XHTML 1.0 リファレンス

機能別に並べ替えNN: このタグをサポートする Netscape の以前のバージョンを示しますIE:...

JavaScript カスタム カレンダー効果

この記事では、JavaScriptカスタムカレンダーエフェクトの具体的なコードを参考までに紹介します...