実行中の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 パフォーマンス最適化のための魔法のツール、Explain の基本的な使用分析

導入MySQL には、SELECT ステートメントを分析し、開発者が最適化できるように SELECT...

Minio 軽量オブジェクト ストレージ サービスのインストールとブラウザの使用チュートリアル

目次導入インストール1. マウントするフォルダを作成する2. イメージをプルする3. コンテナを作成...

Centos8.3、dockerデプロイメントspringbootプロジェクトの実際のケース分析

導入現在、k8s は非常に人気があり、それについて学ぶために本を購入しました。しかし、k8s では数...

JavaScriptはシンプルな計算機能を実装します

この記事では、参考までに、簡単な計算機能を実装するためのJavaScriptの具体的なコードを紹介し...

CSS の位​​置属性 (absolute|relative|static|fixed) の概要と応用

まず、CSS3 Api の position 属性の定義を見てみましょう。 static: 特別な配...

MySQLにおけるビューの作成(CREATE VIEW)と使用制限の詳しい説明

この記事では、例を使用して、MySQL ビューの作成 (CREATE VIEW) と使用上の制限につ...

CSS3アニメーションを使用して、小さい円から大きい円に拡大し、外側に広がる効果を実現する例

序文この記事では、CSS3アニメーションを使用して、円が小さいものから大きく拡大し、外側に広がる効果...

Linux ユーザー スクリプトの作成/推測ゲーム/ネットワーク カード トラフィック監視の紹介

目次1. ユーザーが作成したスクリプト2. 単語当てゲーム3. ネットワークカードのトラフィック監視...

Xftp のダウンロードとインストールのチュートリアル (グラフィック チュートリアル)

Windows と Linux 間でファイルを転送する場合は、Xftp ツールを使用できます。この...

Webデザインチュートリアル(3):デザインの手順と考え方

<br />前のチュートリアル:Webデザインチュートリアル(2):模倣と盗作について。...

docker で zabbix_agent をデプロイする方法

zabbix_agent のデプロイメント:推奨事項: zabbix_agent は docker-...

UbuntuはPythonスクリプトのサンプルコードを定期的に実行する

オリジナルリンク: https://vien.tech/article/157序文この記事では、Ub...

MySQLのユーザー権限の確認と管理方法の詳細な説明

この記事では、例を使用して、MySQL ユーザー権限を確認および管理する方法を説明します。ご参考まで...

Windows 10 Home Edition に Docker for Windows をインストールする

0. 背景ハードウェア: Xiaomi Notebook Air 13/Inter Core i7-...

MySQLのロングトランザクションに関する深い理解

序文:この記事では主にMySQLのロングトランザクションに関する内容を紹介します。例えば、トランザク...