无法使用 `localhost` 连接到 Podman 容器上的 SQL Server

问题描述 投票:0回答:1

我在连接到 Podman 容器内运行的 SQL Server 实例时遇到问题。服务器托管在

localhost
地址。

安装详细信息:我已使用以下

docker-compose.yml
文件安装了 SQL Server:

name: mssql
services:
  server:
    image: mcr.microsoft.com/mssql/server:2017-latest
    environment:
      - ACCEPT_EULA=Y
      - MSSQL_SA_PASSWORD=some password
      - MSSQL_PID=Developer
    ports:
      - 1433:1433
    volumes:
      - C:\dockers\mssql2017\volumes\data\:/var/opt/mssql/data
      - C:\dockers\mssql2017\volumes\secrets\:/var/opt/mssql/secrets
     

问题

使用 SQL Server Management Studio (SSMS) 时,我可以使用 IP 地址

127.0.0.1
成功连接到服务器(未指定 SQL 实例)。但是,当我尝试使用
localhost
连接时,连接超时。

故障排除步骤:

  • Ping 测试:当我 ping

    localhost
    时,它正确解析为 ::1(相当于 127.0.0.1 的 IPv6)。

    > ping localhost
    Pinging <my machine name> [::1] with 32 bytes of data:
    Reply from ::1: time<1ms
    
  • Docker Desktop:如果我在 Docker Desktop 而不是 Podman 上运行相同的 SQL Server 设置,它可以正常工作,没有任何问题。

怀疑原因:

Podman 处理网络的方式似乎可能有所不同,但我是 Podman 的新手,无法查明确切的问题。任何有关如何解决此问题的指导或建议将不胜感激!

sql-server docker sql-server-2017 podman
1个回答
0
投票

我猜问题出在 SQL 服务器配置上。默认情况下不启用命名管道。所以也许因为这个原因它不接受

localhost

使用IP地址访问可能会更容易。如果您从同一个容器访问 SQL 服务器,我相信使用本地 IP 是可以的。如果这不起作用,您的 SQL Server 容器可能有一些分配的 IP 地址可供访问。

但这不足以解决这个问题,我们不知道您的连接字符串,但也许您也需要稍微调整一下您的连接字符串。我建议你检查一下这个答案。 用户“sa”登录失败。原因:无法打开显式指定的数据库“*databasename*”。 -使用 SQL Server 和 .NET8 的 Kubernetes

希望这有帮助。

© www.soinside.com 2019 - 2024. All rights reserved.