最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Docker容器內(nèi)WS端口映射異常的實(shí)現(xiàn)

 更新時(shí)間:2026年04月29日 09:24:52   作者:新標(biāo)簽頁(yè)  
本文介紹了在Docker容器內(nèi)部署WebSocket服務(wù)時(shí)遇到的問(wèn)題及解決方法,通過(guò)更改代碼獲取容器內(nèi)部真實(shí)IP,解決了端口映射失敗導(dǎo)致的連接不通問(wèn)題,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

在Docker容器內(nèi)部署Websocket服務(wù)時(shí)出現(xiàn)了端口映射失敗,鏈接WS時(shí)始終訪問(wèn)不通的情況。

代碼如下

  var server = new WebSocketServer("ws://127.0.0.1:8888");
            server.Start(socket =>
            {
                socket.OnOpen = () => //當(dāng)建立Socket鏈接時(shí)執(zhí)行此方法
                {
                };
                socket.OnClose = () =>// 當(dāng)關(guān)閉Socket鏈接十執(zhí)行此方法
                {
                };
                socket.OnMessage = message =>// 接收客戶端發(fā)送過(guò)來(lái)的信息
                {
                };
            });
        }

將程序打包進(jìn)入Docker容器后,配置DockerCompose

version: '3.4'
services:
  tdssserver:
    image: test
    restart: always
    container_name: test
    ports:
      - 8988:8888
    environment:
      TZ: Asia/Shanghai
    volumes:
      - ./appsettings.json:/app/appsettings.json

正常情況下應(yīng)該可以通過(guò)WS正常連接到服務(wù)上,但是當(dāng)服務(wù)在Docker內(nèi)正常運(yùn)行的時(shí)候,使用測(cè)試工具進(jìn)行測(cè)試連接發(fā)現(xiàn)一直連不通。

一開始分析以為是WS協(xié)議與Http協(xié)議不是同族協(xié)議,認(rèn)為需要單獨(dú)開啟Docker的Ws協(xié)議支持。但是后來(lái)查閱資料發(fā)現(xiàn)實(shí)際上WS和HTTP都是基于TCP的,所以立馬改變排查方向。
最后分析認(rèn)為可能是使用的127.0.0.1這類的LocalHost地址,導(dǎo)致在配置Docker映射的時(shí)候沒(méi)法正確映射。
分析之后改變?cè)瓉?lái)代碼

            string localIP;
            using (Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, 0))
            {
                socket.Connect("8.8.8.8", 65530);
                IPEndPoint endPoint = socket.LocalEndPoint as IPEndPoint;
                localIP = endPoint.Address.ToString();
            }
            FleckLog.Level = Fleck.LogLevel.Debug;
            var ws = "ws://" + localIP + ":" + planws;
            var server = new WebSocketServer(ws);
            server.Start(socket =>
            {
                socket.OnOpen = () => //當(dāng)建立Socket鏈接時(shí)執(zhí)行此方法
                {
                };
                socket.OnClose = () =>// 當(dāng)關(guān)閉Socket鏈接十執(zhí)行此方法
                {
                };
                socket.OnMessage = message =>// 接收客戶端發(fā)送過(guò)來(lái)的信息
                {
                };
            });

思路是通過(guò)

         string localIP;
            using (Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, 0))
            {
                socket.Connect("8.8.8.8", 65530);
                IPEndPoint endPoint = socket.LocalEndPoint as IPEndPoint;
                localIP = endPoint.Address.ToString();
            }
            FleckLog.Level = Fleck.LogLevel.Debug;
            var ws = "ws://" + localIP + ":" + planws;
            var server = new WebSocketServer(ws);

拿到Localip,最后用容器內(nèi)部的LocalIp創(chuàng)建對(duì)應(yīng)的WS連接。

改變代碼后生成新的Docker鏡像。啟動(dòng)容器,測(cè)試連接正常。

到此這篇關(guān)于Docker容器內(nèi)WS端口映射異常的文章就介紹到這了,更多相關(guān)Docker WS端口映射內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Docker NFS volume創(chuàng)建與使用方式

    Docker NFS volume創(chuàng)建與使用方式

    這篇文章主要介紹了Docker NFS volume創(chuàng)建與使用方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-02-02
  • 詳解使用Dockerfile創(chuàng)建帶Apache服務(wù)的CentOS Docker鏡像

    詳解使用Dockerfile創(chuàng)建帶Apache服務(wù)的CentOS Docker鏡像

    本篇文章主要介紹了使用Dockerfile創(chuàng)建帶Apache服務(wù)的CentOS Docker鏡像,具有一定的參考價(jià)值,有興趣的可以了解一下。
    2016-12-12
  • 詳解docker pull 下來(lái)的鏡像文件存放的位置

    詳解docker pull 下來(lái)的鏡像文件存放的位置

    本篇文章主要介紹了詳解docker pull 下來(lái)的鏡像文件存放的位置,具有一定的參考價(jià)值,有興趣的可以了解一下。
    2017-04-04
  • Docker拉取部署OpenJDK的完整指南

    Docker拉取部署OpenJDK的完整指南

    OpenJDK 作為 Java SE 的開源實(shí)現(xiàn),是企業(yè)級(jí) Java 應(yīng)用的核心運(yùn)行環(huán)境,而 Docker 的容器化部署能有效解決環(huán)境一致性、資源隔離等問(wèn)題,本文將詳細(xì)介紹 Docker 環(huán)境搭建、OpenJDK 拉取部署步驟,需要的朋友可以參考下
    2026-01-01
  • docker端口映射及外部無(wú)法訪問(wèn)問(wèn)題

    docker端口映射及外部無(wú)法訪問(wèn)問(wèn)題

    這篇文章主要介紹了docker端口映射及外部無(wú)法訪問(wèn)問(wèn)題,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • Docker部署Nginx 及Nginx的基本使用最佳實(shí)踐

    Docker部署Nginx 及Nginx的基本使用最佳實(shí)踐

    Nginx是一個(gè)高性能的HTTP和反向代理服務(wù)器,廣泛應(yīng)用于Web服務(wù)、負(fù)載均衡和靜態(tài)資源托管等領(lǐng)域,這篇文章主要介紹了Docker部署Nginx 以及Nginx的基本使用,需要的朋友可以參考下
    2025-04-04
  • Docker安裝mysql教程以及解決mysqld: Can‘t read dir of ‘/etc/mysql/conf.d/‘問(wèn)題

    Docker安裝mysql教程以及解決mysqld: Can‘t read dir&nbs

    本文詳細(xì)介紹了如何通過(guò)Docker來(lái)安裝和配置MySQL數(shù)據(jù)庫(kù),包括拉取MySQL鏡像、啟動(dòng)MySQL容器、配置MySQL、解決常見錯(cuò)誤等步驟,提供了詳盡的命令和參數(shù)說(shuō)明,幫助用戶順利完成MySQL的安裝和配置,文中還提到了如何處理MySQL容器啟動(dòng)時(shí)遇到的“無(wú)法讀取目錄”
    2024-10-10
  • Mac系統(tǒng)上用Docker搭建lamp環(huán)境

    Mac系統(tǒng)上用Docker搭建lamp環(huán)境

    這篇文章主要給大家介紹了Mac系統(tǒng)上用Docker如何搭建lamp環(huán)境,文章給大家介紹的很詳細(xì),有需要的朋友們可以參考借鑒,下面來(lái)一起看看吧。
    2016-12-12
  • Docker本地目錄掛載的實(shí)現(xiàn)步驟

    Docker本地目錄掛載的實(shí)現(xiàn)步驟

    本文主要介紹了Docker本地目錄掛載的實(shí)現(xiàn)步驟
    2024-02-02
  • Docker部署nginx并修改配置文件的實(shí)現(xiàn)方法

    Docker部署nginx并修改配置文件的實(shí)現(xiàn)方法

    這篇文章主要介紹了Docker部署nginx并修改配置文件的實(shí)現(xiàn)方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09

最新評(píng)論

印江| 固原市| 社会| 调兵山市| 定西市| 乾安县| 扬州市| 明光市| 阿坝县| 溆浦县| 南平市| 北宁市| 萨迦县| 奉新县| 牡丹江市| 扎赉特旗| 乃东县| 高淳县| 望都县| 长垣县| 堆龙德庆县| 嘉善县| 双牌县| 家居| 崇左市| 台江县| 宁南县| 灵丘县| 青冈县| 酒泉市| 札达县| 万山特区| 商南县| 城固县| 绥德县| 华阴市| 平安县| 柳江县| 休宁县| 商丘市| 神池县|