実行中の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 評価効果の星の例

推薦する

Apache ab同時負荷ストレステストの実装方法

腹筋コマンドの原則Apache の ab コマンドは、マルチスレッドの同時リクエストをシミュレートし...

iframe ページで js 関数を呼び出すには js を使用します

最近、私は毎日論文提案に取り組んでいます。自分のスキルを発揮して、再びWebをデザインしたくてうずう...

Docker コンテナを他のサーバーに移行する 5 つの方法

多くの場合、移行は避けられません。ハードウェアのアップグレード、データ センターの変更、古いオペレー...

Vueはログイン時に画像認証コードを実装します

この記事では、Vueログイン用画像認証コードの具体的なコードを例として紹介します。具体的な内容は以下...

React 高階コンポーネント HOC 使用方法の概要

HOCを紹介する一文高階コンポーネント (HOC) とは何ですか? 公式ドキュメントによると、「高階...

Deepin で virtualenv をインストールして使用するチュートリアル

virtualenv は、分離された Python 仮想環境を作成するためのツールです。独立したディ...

Ubuntu 20.04 をインストールした後に行うべきこと (初心者向けガイド)

Ubuntu 20.04 がリリースされ、多くの新機能が導入されましたが、慣れていない機能も多くあ...

docker を使用して Linux 環境に Springboot パッケージをデプロイするチュートリアル

springboot には tomcat サーバーが組み込まれているため、jar パッケージにパッケ...

より人気がありクリエイティブなダーク背景のウェブデザインの例

暗い背景スタイルのページ デザインは非常に人気があり、シックでエレガント、そして非常にクリエイティブ...

vue-cropper コンポーネントは画像の切り取りとアップロードを実現します

この記事では、画像の切り取りとアップロードを実装するためのvue-cropperコンポーネントの具体...

MySQL全文インデックスの原理と欠点

MySQL フルテキスト インデックスは、特定のテーブルの特定の列に表示されるすべての単語のリストを...

Quickjs は JavaScript サンドボックスの詳細をカプセル化します

目次1. シナリオ2. 基盤となるAPIを簡素化する2.1 自動的に破棄を呼び出す2.2 VM値を作...

js でオブジェクトを作成するさまざまな方法とその長所と短所のまとめ

目次初期作成方法ファクトリーパターンコンストラクターパターンコンストラクタパターンの最適化プロトタイ...

Nginxを使用してストリーミングメディアサーバーを構築し、ライブブロードキャスト機能を実現する

前面に書かれた近年、ライブストリーミング業界は非常に人気が高まっています。伝統的な業界でのライブスト...

Docker イメージのエクスポート、インポート、コピーの例の分析

最初の解決策は、イメージを公開イメージリポジトリにプッシュし、それをプルダウンすることです。 2 番...