我无法连接到容器内的 SQL Server

时间:2021-06-24 18:19:00

标签: sql-server docker ubuntu

这是我的 docker-compose.yml 文件:

version: "3.9"
services: 
    api:
        # configuration of API here
    db:
        image: mcr.microsoft.com/mssql/server
        restart: always
        container_name: Database
        volumes:
            - ./Data:/var/opt/mssql
        environment: 
            - ACCEPT_EULA=Y
            - SA_PASSWORD=lksU2o412f7tBj58t07B
            - MSSQL_PID=Express
        ports:
            - 1433:1433
        command: >
            sh -c
            "
            tail -f /dev/null
            "


如您所见,我使用的是 MS SQL Server 的官方 docker 映像,mcr.microsoft.com/mssql/server

我的笔记本电脑是 Ubuntu 20.04 LTS

我先运行 docker-compose up -d,然后运行 ​​docker exec -it db sh 以获得交互式 shell。

然后我写这个命令:

/opt/mssql-tools/bin/sqlcmd -S localhost -U SA -P 'lksU2o412f7tBj58t07B'

我得到了这个回复:

<块引用>

Sqlcmd:错误:Microsoft ODBC Driver 17 for SQL Server:登录超时已过期。
Sqlcmd:错误:Microsoft ODBC Driver 17 for SQL Server:TCP 提供程序:错误代码 0x2749。
Sqlcmd:错误:Microsoft ODBC Driver 17 for SQL Server:建立与 SQL Server 的连接时发生与网络相关或特定于实例的错误。服务器未找到或无法访问。检查实例名称是否正确以及 SQL Server 是否配置为允许远程连接。有关详细信息,请参阅 SQL Server 联机丛书..

这是官方图片,我没有改变任何东西。

也在我的 api 容器中,我可以 ping dbDatabase。但我无法 telnet 端口 1433

我的主机也可以telnet localhost 1433,但我得到了这个响应:

<块引用>

正在尝试 127.0.0.1...
连接到本地主机。
转义字符是“^]”。
连接被外部主机关闭。

这是使用 Microsoft 容器的糟糕体验。容器不应该开箱即用吗?容器技术不就是为了解决这些愚蠢的问题吗?

我该怎么办?

0 个答案:

没有答案