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

推薦する

フォーム要素の垂直方向の中央揃えに最適なソリューション

コードをコピーコードは次のとおりです。 <!DOCTYPE html PUBLIC "...

Centos8 の Django プロジェクトに nginx+uwsgi をデプロイするチュートリアル

1. 仮想環境virtualenvのインストール1. virtualenvをインストールするpip3...

Alibaba Cloud ESC サーバー シングルノード MySQL の Docker デプロイメント

1. msyqlの高速バージョンをダウンロードする docker pull hub.c.163.co...

JavaScript イベントの概念の詳細な説明 (静的登録と動的登録の区別)

目次js のイベントイベントタイプ一般的なイベントイベント登録静的および動的登録の例onload 読...

MySQLのSQLモードの特徴のまとめ

序文SQL モードは、MySQL がサポートする SQL 構文と、実行されるデータ検証チェックに影響...

フォーム入力ボックスに関するWebデザインのヒント

1. キャンセル ボタンが押されたときの破線ボックス<br /> 入力に属性値 hide...

Xiaomi公式サイトの登録・ログイン機能を模倣するJavaScript

目次まずページレイアウトを構築する必要がありますJS関数1 JS関数2 JS関数3 JS関数4効果図...

vsftpdで仮想ユーザーログインを設定する方法

yum で vsftpd をインストールします [root@localhost など]# yum -...

MySQL遅延レプリケーションライブラリ方式の詳細な説明

簡単に言えば、遅延レプリケーションとは、スレーブ データベースがマスター データベースより 1 時間...

MySQLデータベースの基礎知識と操作のまとめ

この記事では、例を使用して、MySQL データベースの基本的な知識と操作について説明します。ご参考ま...

Vueモバイル端末は画面上で指をスライドさせる方向を判定する

vueモバイル端末は、画面上で指をスライドさせる方向を判断します。具体的な内容は次のとおりです。これ...

Ubuntu 18.04 で SSH サービスをインストールして設定する方法

sshツールをインストールする1. ターミナルを開き、次のコマンドを入力します。 apt-getアッ...

LinuxでのDockerのインストールチュートリアル

Docker パッケージは、デフォルトの CentOS-Extras リポジトリにすでに含まれていま...

XHTML タグのネスト規則の分析

XHTML 言語では、ul タグに li が含まれ、dl タグに dt と dd が含まれることは誰...

MySQL 実践演習 シンプルなライブラリ管理システム

目次1. ソート機能2. データベースを準備する3. データベースに関連するエンティティクラスの構築...