You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Docker中SQL Server 1434管理端口占用致启动延迟3分钟求排查方案

Docker部署SQL Server因1434端口等待3分钟的排查方案

启动基于Docker的SQL Server容器时,每次都会因SQL Server无法打开1434管理端口而等待3分钟,相关日志如下:

...
14:05:21.13 spid30s     Starting up database 'msdb'.
14:05:21.13 spid14s     Starting up database 'mssqlsystemresource'.
14:05:21.13 spid31s     Starting up database 'mydb'.
14:05:21.14 spid14s     The resource database build version is 15.00.4312. This is an informational message only. No user action is required.
14:05:21.14 spid26s     Server is listening on [ 'any' <ipv6> 1433].
14:05:21.15 spid14s     [3]. Feature Status: PVS: 0. CTR: 0. ConcurrentPFSUpdate: 1.
14:05:21.15 spid14s     Starting up database 'model'.
14:05:21.16 spid26s     Server is listening on [ 'any' <ipv4> 1433].
14:05:21.16 Server      Server is listening on [ ::1 <ipv6> 1434].
14:05:21.19 spid31s     Parallel redo is started for database ' mydb' with worker pool size [10].
14:05:21.23 Server      Common language runtime (CLR) functionality initialized.
14:05:21.25 spid14s     Clearing tempdb database.
14:05:21.32 spid30s     Parallel redo is shutdown for database 'mydb' with worker pool size [10].
14:05:21.35 spid14s     [2]. Feature Status: PVS: 0. CTR: 0. ConcurrentPFSUpdate: 1.
14:05:21.35 spid14s     Starting up database 'tempdb'.
14:05:21.71 spid14s     The tempdb database has 8 data file(s).
14:05:21.72 spid30s     The Service Broker endpoint is in disabled or stopped state.
14:05:21.72 spid30s     The Database Mirroring endpoint is in disabled or stopped state.
14:05:21.73 spid30s     Service Broker manager has started.
14:08:21.79 Server      Error: 26024, Severity: 16, State: 1.
14:08:21.79 Server      Server failed to listen on 127.0.0.1 <ipv4> 1434. Error: 0x2742. To proceed, notify your system administrator.
14:08:21.79 Server      Dedicated admin connection support was not started because of error 0x2742, status code: 0x1. This error typically indicates a socket-based error, such as a port already in use.
14:08:21.79 spid26s     Server is listening on [ ::1 <ipv6> 1431].
14:08:21.79 spid26s     Server is listening on [ 127.0.0.1 <ipv4> 1431].
14:08:21.80 spid26s     Recovery is complete. This is an informational message only. No user action is required.
14:08:21.80 spid26s     SQL Server is now ready for client connections. This is an informational message; no user action is required.

使用的docker-compose文件如下(取消1434端口映射注释也无法解决):

version: '3.4'

services:

  sql-data:
    image: "mcr.microsoft.com/mssql/server:2019-latest"
    environment:
      SA_PASSWORD: "MyDockerPwd!"
      ACCEPT_EULA: "Y"
    ports:
      - "5433:1433"
#      - "5434:1434/udp"
    volumes:
      - sql-data-system:/var/opt/mssql
      - sql-data-user:/var/opt/sqlserver

volumes:
  sql-data-system:
    name: sql_data_system
  sql-data-user:
    name: sql_data_user

已尝试在主机上分配相关端口,执行netsh int ip show excludedportrange protocol=tcp的输出如下:

netsh int ip show excludedportrange protocol=tcp

Protocol tcp Port Exclusion Ranges

Start Port    End Port
----------    --------
      5357        5357
      5433        5433     *
      5434        5434     *
      8884        8884
     49735       49834
     49835       49934
     50000       50059     *
     50060       50159
     50160       50259
     50260       50359
     50400       50499     *
     50508       50607
     51036       51135
     51259       51358
     61200       61299     *

* - Administered port exclusions.

排查步骤

  • 检查容器内1434端口占用
    进入SQL Server容器,Linux容器执行netstat -tulpn | grep :1434,Windows容器执行netstat -ano | findstr :1434,确认容器内部是否有其他进程占用该端口。
  • 禁用DAC端口监听
    若不需要使用专用管理员连接(DAC),直接禁用该功能避免端口监听冲突:
    1. 在docker-compose的environment中添加MSSQL_DISABLE_DAC=true;
    2. 或者进入容器修改/var/opt/mssql/mssql.conf,添加以下配置:
      [network]
      disableDac = true
      
    保存后重启容器即可。
  • 检查主机UDP 1434端口占用
    1434是UDP端口,之前的netsh命令仅检查TCP端口,Windows主机执行netstat -ano -p udp | findstr :1434,Linux主机执行ss -ulpn | grep :1434,查看主机上是否有进程占用UDP 1434,如有则终止对应进程。
  • 修改DAC监听端口
    若必须使用DAC,可修改其监听端口避免冲突:
    在mssql.conf中添加:
    [network]
    dacPort = 1431
    
    重启容器后,SQL Server会使用指定端口作为DAC端口,不会再尝试绑定1434。
  • 重置主机端口排除范围
    若为Windows主机动态端口分配导致的冲突,可重启WinNAT服务重置端口范围:
    net stop winnat
    net start winnat
    
    执行后重新检查端口排除列表,确认5434是否已解除排除。
  • 验证Docker网络配置
    尝试切换容器网络模式为host(仅测试用),启动容器看是否还会出现等待问题,排除Docker端口映射的干扰;若问题消失,说明桥接网络存在端口冲突,可尝试重新创建Docker网络。

内容的提问来源于stack exchange,提问作者samneric

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 11:57:07