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インデックスが失敗するいくつかの状況の詳細な分析

推薦する

MySQL 5.7.15 バージョンのインストールと設定方法のグラフィックチュートリアル

この記事では、MySQLバージョン5.7のインストール方法と使用方法、およびデータベースデータの保存...

MySQL の基本ステートメントを最適化するための 10 の原則の概要

序文データベースの応用において、プログラマーは継続的な実践を通じて多くの経験を積んできました。これら...

React Router V6 のアップデート

目次ReactRouterV6 の変更1. <Switch> が <Routes&...

JavaScript フロー制御 (ループ)

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

CentOS サーバーの時間を北京時間に変更する方法

1. VPSとCentOSシステムを購入しましたが、サーバーの時間が北京時間と一致せず、時差があるこ...

MySQLログシステムの詳細情報共有

大規模なシステムに取り組んだことがある人なら誰でも、ログの役割を過小評価してはならないことを知ってい...

小規模プログラムへのデータキャッシュ機構の応用と実装

ミニプログラムデータキャッシュ関連知識データ キャッシュ: データをキャッシュして、アプレットを終了...

JSはプログレスバーをドラッグして要素の透明度を変更することを実装しています

今日ご紹介したいのは、ネイティブ JS を使用してプログレス バーをドラッグし、要素の透明度を変更す...

TypeScript とは何ですか?

目次1. JavaScriptの問題2. TypeScriptの利点3. TypeScriptの欠点...

Nginx 500 内部サーバーエラーの解決方法

今日、Nginxを使っていたら500エラーが発生しました。エラーコードを検索してみんなに共有しました...

nginxを使用して取得したIPアドレスが127.0.0.1である問題を解決する

IPツールを取得 lombok.extern.slf4j.Slf4j をインポートします。 org....

Linux オペレーティング システムの概要と紹介

目次1. オペレーティングシステムとは何か2. Linuxの起源3. Linuxの基本機能4. Li...

HTML のキャンバスに基づくスクリーンショットのデモ

冒頭に書いた以前、Renren で JS ベースのスクリーンショット ソリューションについて説明した...

HTML+CSS を使用して、画像の右上隅に削除の十字と画像削除ボタンを追加します。

記録として、将来使用される可能性があり、困っている友人も使用できます。 BBはもうやめて、まずはレン...

Vueカスタムカプセル化ボタンコンポーネント

Vueボタンコンポーネントのカスタムカプセル化コードは参考用です。具体的な内容は次のとおりです。ボタ...