【问题标题】:Unable to connect to SQL Server running in container inside Ubuntu VM on Azure无法连接到在 Azure 上的 Ubuntu VM 内的容器中运行的 SQL Server
【发布时间】:2020-04-01 17:45:23
【问题描述】:

docker-compose.yml

version: "3"
services:
    coreapi:
        build:
            context: ./theapi
            dockerfile: Dockerfile
        ports:
            - "5000:5000"
    sqlserver:
        build:
            context: ./sqlserver
        ports:
            - "1433:1433"    
        environment: 
            - ACCEPT_EULA="Y"
            - SA_PASSWORD="Pwd12345!"
    angular:
        build:
            context: ./frontend
            dockerfile: Dockerfile
        ports:
            - "4300:4200"    

我在 stackoverflow 上阅读了类似的帖子,并在我的 VM 上添加了打开的入站端口。

但无济于事:

编辑:

【问题讨论】:

  • 我假设上面的密码不是您真正的撰写文件中的密码。就像一个实验,尝试使用大写字母、小写字母和数字只有八个或更长的密码来满足 SQL Server 的 sa 密码复杂度要求。一些标点符号可能会在运行时与 YML 或 shell 转义混淆。
  • 你能分享一下你的sqlserver的上下文吗?而且我建议你可以测试一下是否可以连接到VM和容器内部的sqlserver。
  • @AlwaysLearning 我用nano检查了我在yml文件中设置的密码。它是一样的。密码12345!
  • @CharlesXu 我无法从容器内连接到它。我找不到 sqlcmd
  • 它只是一个工具,你可以安装它来测试。

标签: sql-server azure docker ubuntu docker-compose


【解决方案1】:

NSG - 入站端口规则 -> 通过将值从 1433 更改为 *,允许任何“源端口”连接到在 Docker 中运行的 Sql 服务器。

它将解决您的问题。我复制了您的步骤并重现了您的问题。此修复程序将解决它。

参考我曾经做过你的设置 https://docs.microsoft.com/en-us/sql/linux/quickstart-install-connect-docker?view=sql-server-ver15&pivots=cs1-bash

注意:在 Ubuntu 的 docker 中有一个单独的 MS Sql 服务器映像。我相信您正在使用 linux 的映像。

在 ubuntu Az VM 内的 docker 中运行的我的 sql 服务器:

我的 Azure ubuntu 虚拟机配置:

我的 NSG 入站端口规则:

来自 SSMS 的连接:

连接细节:

【讨论】:

  • 这对我不起作用 :( 你能告诉我你是如何在 SSMS 中输入凭据的吗?服务器名:138.91.187.131,1433?
  • 你必须使用sql server身份验证输入用户名和密码。我已经在我的答案部分上传了截图 - 底部
  • 我认为我的登录方式没有问题。因为如果我只使用 sql server 的 Dockerfile 运行 docker,我可以在笔记本电脑上使用 SSMS 中的公共 ip 登录。但是当我使用 docker-compose.. 它不起作用
猜你喜欢
  • 2015-02-16
  • 1970-01-01
  • 1970-01-01
  • 2019-06-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-11-19
相关资源
最近更新 更多