Dockerでudpポート番号を指定する問題を解決する

Dockerでudpポート番号を指定する問題を解決する

Docker はコンテナを起動するときにアクセス ポートを指定します。複数の -p オプションを使用して複数のポート マッピングを指定できます。

udp はバックグラウンドで独自のポート番号を持ちますが、これはサービスがアクセスするポート番号とは異なります。このとき、サービスを起動するときにそれを指定する必要があります。

のように:

docker run -p 8080:8090 -p 10000:11000/udp aaa:最新

8080 はサービス自体によって公開されるポート番号であり、8090 はサービス自体のポート番号です。 10000 は udp によって公開されるポート番号で、11000 は udp 自体が listen するポートです。udp の場合は、宣言するように注意してください。

補足知識: Dockerコンテナ内のプロジェクトはudpをリッスンしており、メッセージを受信できません

コンテナを生成して実行するときに、外部公開ポートを設定する必要があります。udp を使用する場合は、udp ポートも別途指定する必要があります。

1.udp送信者(ip xxxxxx ポート: 9200)

現在のディレクトリに Dockerfile を作成し、それを使用してイメージ docker build -t イメージ名を生成します。(最後のドットを忘れないようにしてください。これはディレクトリを意味します)

生成されたイメージを実行します。docker run -tid --name コンテナ名 -p 19008:8080 --restart=always イメージ名

注: 送信者はポートを公開する必要はありません。送信者はマシンのポートを使用する必要がないことは理解できます。送信時に、情報にターゲット ホストの IP とポートが含まれているだけです。

2.UDP受信側

現在のディレクトリに Dockerfile を作成し、それを使用してイメージ docker build -t イメージ名を生成します。(上記と同じ)

生成されたイメージを実行します。docker run -tid --name コンテナ名 -p 19008:8080 -p 9200:9200/udp --restart=always イメージ名

注: 受信側はポートを公開する必要があります。受信側はローカルマシンのポートをリッスンする必要があることは理解できますが、ホストマシンの対応するポートはコンテナ内でリッスンできません。たとえば、1 で送信された udp 情報はホストポート 9200 に対応していますが、2 のコンテナ内の udp 受信側がホストポート 9200 をリッスンしたい場合は、コンテナ内の 9200 をホストの 9200 にマッピングする必要があります。

結果: 上記の設定後、udpメッセージは正常に受信されました

上記のdockerでudpポート番号を指定する問題を解決する記事は、編集者が皆さんと共有する内容のすべてです。これが皆さんの参考になれば幸いです。また、123WORDPRESS.COMを応援していただければ幸いです。

以下もご興味があるかもしれません:
  • 複数の Docker コンテナが同じポート番号を持たない場合の解決策
  • Raspberry Pi シリーズ: Docker を使用して Qinglong Panel をインストールし、ポート番号の設定の問題を変更する

<<:  vuex での mapState の考え方の応用

>>:  MySQLインデックスが失敗するいくつかの状況の詳細な分析

推薦する

CSS変数を使用してスタイルを変更する方法の例

質問js を使用して CSS 疑似クラス スタイルを変更するにはどうすればよいでしょうか?しかし、j...

HTML、CSS、JSコメントの標準的な使用法の概要

必要なコメントを追加することは、責任感と道徳心のあるフロントエンド開発者が持つべき良い習慣であり、コ...

CSS属性のマージンの理解について話す

1.マージンとは何ですか?マージンは、要素の周囲のスペースの間隔を制御するために使用され、視覚的にス...

MySQL 最適化: キャッシュ最適化

何人かのブロガーが私の記事を評価してくれたのは嬉しいです。マークと知り合ってからは、私は彼をフォロー...

MySQL の複合インデックスはどのように機能しますか?

目次背景複合インデックスを理解する左端一致原則フィールド順序の影響複合インデックスは単一のインデック...

Navicat が MySQL にリモート接続するときに発生する 10060 不明エラーを解決する方法

はじめに:今日は、サーバー上のMySQLにリモート接続したいと思います。使用するソフトウェアはNav...

elementui での el-cascader カスケードセレクタの実践

目次1. 効果2. メインコード1. 効果機能: インターフェイスから取得したデータを使用してオプシ...

Docker での Redis のマスタースレーブ構成チュートリアルの詳細説明

1. Redisイメージを取得するdocker pull redis 2. それぞれポート6379、...

CentOS7環境にMySQL5.5データベースをインストールする

目次1. 現在のシステムにMySQLがインストールされているかどうかを確認する2. インストールされ...

mysql 簡単な操作例を表示

この記事では、例を挙げて mysql show 操作について説明します。ご参考までに、詳細は以下の通...

Webリクエストと処理のTomcatソースコード分析

目次序文1. エンドポイント2. 接続ハンドラ3. コヨーテ4. コンテナ責任チェーンパターン序文T...

WIN10 での JDK インストールと環境変数の設定手順 (詳細版)

目次1. JDKをダウンロードする(例としてjdk1.8.0を使用する) 2. JDK をインストー...

JavaScriptカルーセルの実装について

今日もとても実践的な事例です。名前を聞くだけで高度で難しそうですよね?今日はカルーセル画像の真髄を簡...

Dockerでrabbitmqをデプロイする際に発生した2つの問題

1. 背景DockerでRabbitMQをデプロイする際に、次の2つの問題が発生します。問題1: ス...

JavaScript プロトタイプとプロトタイプチェーンの深い理解

目次1. プロトタイプとは何ですか? 2. プロトタイプ__プロト__ 4. コンストラクター5. ...