gpt4 book ai didi

sql-server - docker 容器 : Unable to connect to SQL Server by name

转载 作者:太空狗 更新时间:2023-10-29 11:20:55 25 4
gpt4 key购买 nike

我在同一网络上创建了两个容器,其中一个作为 Sql Server 实例运行。在另一个容器(使用 SQL 工具)中,我能够使用 IP 地址连接到 SQL,但是如果我切换到机器名称,它会失败。

我已经尝试对机器执行 ping 操作,dns 正在解析正确的 IP,我也尝试了 dnslookup,它也能正常工作。有没有人知道如何解决这个问题?

完整测试场景:

  1. 创建新网络

    docker network create --driver=bridge specsnet
  2. 运行 SQL 容器

    docker run -e 'ACCEPT_EULA=Y' -e 'SA_PASSWORD=Password!123456' -p 1401:1433 -d --name=TestDBServer --net=specsnet --rm microsoft/mssql-server-linux:latest
  3. 使用 SQL 工具运行新容器(以测试连接)

    docker run -it --net=specsnet --rm --entrypoint "bash" mcr.microsoft.com/mssql-tools:latest
  4. 加载了一些用于故障排除的工具(到 SQL 工具容器中)

    apt-get update | apt-get install telnet -y | apt-get install iputils-ping -y | apt-get install dnsutils -y | apt-get install nmap -y | apt-get install nano -y
  5. 使用 IP 测试连接(成功 - IP 为 172.18.0.2)

    sqlcmd -S tcp:172.18.0.2,1433 -U sa -P 'Password!123456'
  6. 使用名称测试连接(失败)

    sqlcmd -S tcp:TestDBServer,1433 -U sa -P 'Password!123456'

最佳答案

因此,正如 Bjoern 所建议的那样,我创建了一个 docker compose 文件,在进行了一些测试后,我意识到问题并未得到解决。

然后我开始操作文件,调整属性,发现问题出在 SQL 容器名称上(容器名称有大写字母)。我将 SQL 容器名称设置为“testdbserver”,一切正常。

  1. Docker 组合文件

    version: '2'
    services:
    testdbserver:
    image: microsoft/mssql-server-linux:latest
    ports:
    ["1401:1433"]
    environment:
    SA_PASSWORD: Password!123456
    ACCEPT_EULA: Y
    networks:
    - specsnet

    sqltools:
    image: mcr.microsoft.com/mssql-tools:latest
    depends_on:
    - testdbserver
    networks:
    - specsnet

    networks:
    specsnet:
    driver: bridge
    ipam:
    config:
    - subnet: 10.5.0.0/16
    gateway: 10.5.0.1
  2. 在 Bash 模式下启动 SQL 工具容器

    docker-compose run sqltools bash
  3. 执行 SQL 测试连接(现在可以)

    sqlcmd -S tcp:testdbserver,1433 -U sa -P 'Password!123456'

关于sql-server - docker 容器 : Unable to connect to SQL Server by name,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50705736/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com