【问题标题】:cant connect to sqlserver docker image无法连接到 sql server docker image
【发布时间】:2018-08-17 12:55:26
【问题描述】:

运行容器

docker run -e "ACCEPT_EULA=Y" -e "SA_PASSWORD=Password_01!" -p 1433:1433 --name sql1 -d microsoft/mssql-server-linux:2017-latest

容器状态为UP

正在尝试连接

docker exec -it sql1 /opt/mssql-tools/bin/sqlcmd -S localhost -U sa -P Password_01!

或使用 localhost 的 docker machine ip insted

docker exec -it sql1 /opt/mssql-tools/bin/sqlcmd -S 192.168.99.100 -U SA -P 'Password_01!'

我收到了这个错误:

Sqlcmd: Error: Microsoft ODBC Driver 17 for SQL Server : Login timeout expired.
Sqlcmd: Error: Microsoft ODBC Driver 17 for SQL Server : TCP Provider: Timeout error [258]. .
Sqlcmd: Error: Microsoft ODBC Driver 17 for SQL Server : Unable to complete login process due to delay in prelogin response.

这是容器日志

$ docker logs sql1
2018-08-17 12:41:55.65 Server      Setup step is copying system data file 'C:\templatedata\master.mdf' to '/var/opt/mssql/data/master.mdf'.
2018-08-17 12:41:55.77 Server      Did not find an existing master data file /var/opt/mssql/data/master.mdf, copying the missing default master and other system database files. If you have moved the database location, but not moved the database files, startup may fail. To repair: shutdown SQL Server, move the master database to configured location, and restart.
2018-08-17 12:41:55.78 Server      Setup step is copying system data file 'C:\templatedata\mastlog.ldf' to '/var/opt/mssql/data/mastlog.ldf'.
2018-08-17 12:41:55.81 Server      Setup step is copying system data file 'C:\templatedata\model.mdf' to '/var/opt/mssql/data/model.mdf'.
2018-08-17 12:41:55.91 Server      Setup step is copying system data file 'C:\templatedata\modellog.ldf' to '/var/opt/mssql/data/modellog.ldf'.
2018-08-17 12:41:56.01 Server      Setup step is copying system data file 'C:\templatedata\msdbdata.mdf' to '/var/opt/mssql/data/msdbdata.mdf'.
2018-08-17 12:41:56.17 Server      Setup step is copying system data file 'C:\templatedata\msdblog.ldf' to '/var/opt/mssql/data/msdblog.ldf'.
2018-08-17 12:41:56.26 Server      Microsoft SQL Server 2017 (RTM-CU9-GDR) (KB4293805) - 14.0.3035.2 (X64)
        Jul  6 2018 18:24:36
        Copyright (C) 2017 Microsoft Corporation
        Developer Edition (64-bit) on Linux (Ubuntu 16.04.5 LTS)
2018-08-17 12:41:56.27 Server      UTC adjustment: 0:00
2018-08-17 12:41:56.27 Server      (c) Microsoft Corporation.
2018-08-17 12:41:56.27 Server      All rights reserved.
2018-08-17 12:41:56.27 Server      Server process ID is 4120.
2018-08-17 12:41:56.27 Server      Logging SQL Server messages in file '/var/opt/mssql/log/errorlog'.
2018-08-17 12:41:56.27 Server      Registry startup parameters:
         -d /var/opt/mssql/data/master.mdf
         -l /var/opt/mssql/data/mastlog.ldf
         -e /var/opt/mssql/log/errorlog
2018-08-17 12:41:56.28 Server      SQL Server detected 1 sockets with 1 cores per socket and 1 logical processors per socket, 1 total logical processors; using 1 logical processors based on SQL Server licensing. This is an informational message; no user action is required.
2018-08-17 12:41:56.29 Server      SQL Server is starting at normal priority base (=7). This is an informational message only. No user action is required.
2018-08-17 12:41:56.29 Server      Detected 3160 MB of RAM. This is an informational message; no user action is required.
2018-08-17 12:41:56.30 Server      Using conventional memory in the memory manager.
2018-08-17 12:41:56.70 Server      Buffer pool extension is already disabled. No action is necessary.
2018-08-17 12:41:57.35 Server      InitializeExternalUserGroupSid failed. Implied authentication will be disabled.
2018-08-17 12:41:57.35 Server      Implied authentication manager initialization failed. Implied authentication will be disabled.
2018-08-17 12:41:57.35 Server      Successfully initialized the TLS configuration. Allowed TLS protocol versions are ['1.0 1.1 1.2']. Allowed TLS ciphers are ['ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-ECDSA-AES128-SHA:AES256-GCM-SHA384:AES128-GCM-SHA256:AES256-SHA256:AES128-SHA256:AES256-SHA:AES128-SHA:!DHE-RSA-AES256-GCM-SHA384:!DHE-RSA-AES128-GCM-SHA256:!DHE-RSA-AES256-SHA:!DHE-RSA-AES128-SHA'].
2018-08-17 12:41:57.59 Server      The maximum number of dedicated administrator connections for this instance is '1'
2018-08-17 12:41:57.59 Server      Node configuration: node 0: CPU mask: 0x0000000000000001:0 Active CPU mask: 0x0000000000000001:0. This message provides a description of the NUMA configuration for this computer. This is an informational message only. No user action is required.
2018-08-17 12:41:57.72 Server      Using dynamic lock allocation.  Initial allocation of 2500 Lock blocks and 5000 Lock Owner blocks per node.  This is an informational message only.  No user action is required.
2018-08-17 12:41:57.80 Server      In-Memory OLTP initialized on lowend machine.
2018-08-17 12:41:58.09 Server      Database Instant File Initialization: enabled. For security and performance considerations see the topic 'Database Instant File Initialization' in SQL Server Books Online. This is an informational message only. No user action is required.
ForceFlush is enabled for this instance.
2018-08-17 12:41:58.13 Server      Query Store settings initialized with enabled = 1,
2018-08-17 12:41:58.33 spid6s      Starting up database 'master'.
2018-08-17 12:41:58.39 Server      Software Usage Metrics is disabled.
ForceFlush feature is enabled for log durability.
2018-08-17 12:41:58.95 spid6s      The tail of the log for database master is being rewritten to match the new sector size of 4096 bytes.  3072 bytes at offset 418816 in file /var/opt/mssql/data/mastlog.ldf will be written.
2018-08-17 12:42:00.16 spid6s      Converting database 'master' from version 862 to the current version 869.
2018-08-17 12:42:00.16 spid6s      Database 'master' running the upgrade step from version 862 to version 863.
2018-08-17 12:42:00.62 spid6s      Database 'master' running the upgrade step from version 863 to version 864.
2018-08-17 12:42:01.38 spid6s      Database 'master' running the upgrade step from version 864 to version 865.
2018-08-17 12:42:01.76 spid6s      Database 'master' running the upgrade step from version 865 to version 866.
2018-08-17 12:42:02.12 spid6s      Database 'master' running the upgrade step from version 866 to version 867.
2018-08-17 12:42:02.56 spid6s      Database 'master' running the upgrade step from version 867 to version 868.
2018-08-17 12:42:02.97 spid6s      Database 'master' running the upgrade step from version 868 to version 869.
2018-08-17 12:42:05.05 spid6s      Resource governor reconfiguration succeeded.
2018-08-17 12:42:05.06 spid6s      SQL Server Audit is starting the audits. This is an informational message. No user action is required.
2018-08-17 12:42:05.07 spid6s      SQL Server Audit has started the audits. This is an informational message. No user action is required.
2018-08-17 12:42:05.36 spid6s      SQL Trace ID 1 was started by login "sa".
2018-08-17 12:42:05.77 spid20s     Password policy update was successful.
2018-08-17 12:42:06.15 spid6s      Server name is '980bd8d92bc7'. This is an informational message only. No user action is required.
2018-08-17 12:42:06.35 spid23s     Always On: The availability replica manager is starting. This is an informational message only. No user action is required.
2018-08-17 12:42:06.36 spid6s      Starting up database 'msdb'.
2018-08-17 12:42:06.36 spid23s     Always On: The availability replica manager is waiting for the instance of SQL Server to allow client connections. This is an informational message only. No user action is required.
2018-08-17 12:42:06.37 spid9s      Starting up database 'mssqlsystemresource'.
2018-08-17 12:42:06.37 spid9s      The resource database build version is 14.00.3035. This is an informational message only. No user action is required.
2018-08-17 12:42:06.51 spid9s      Starting up database 'model'.
2018-08-17 12:42:06.89 spid6s      The tail of the log for database msdb is being rewritten to match the new sector size of 4096 bytes.  512 bytes at offset 306688 in file /var/opt/mssql/data/MSDBLog.ldf will be written.
2018-08-17 12:42:06.95 spid20s     A self-generated certificate was successfully loaded for encryption.
2018-08-17 12:42:07.08 spid20s     Server is listening on [ 'any' <ipv4> 1433].
2018-08-17 12:42:07.09 Server      Server is listening on [ 127.0.0.1 <ipv4> 1434].
2018-08-17 12:42:07.09 Server      Dedicated admin connection support was established for listening locally on port 1434.
2018-08-17 12:42:07.16 spid20s     SQL Server is now ready for client connections. This is an informational message; no user action is required.

这是我关注的参考:https://docs.microsoft.com/en-us/sql/linux/quickstart-install-connect-docker?view=sql-server-2017

【问题讨论】:

  • 您的指示对我有用。您的localhost 是否可能未定义?你试过127.0.0.1而不是localhost吗?
  • @DazWilkin 127.0.0.1 对我不起作用。我正在为 Windows 开发 docker,所以本地 ip 是虚拟机 ip(docker-machine ip:192.168.99.100),但也不起作用

标签: sql-server docker sql-server-linux


【解决方案1】:

我发现给容器一个主机名(-h 选项),然后连接到该主机名(如果您愿意的话)会更成功。

【讨论】:

  • 你是对的,给一个主机名并连接到它工作的主机名!这是从容器连接到容器的正确方法吗?例如(来自必须连接到另一个容器中的数据库的容器中的 Web 应用程序的连接字符串?)
  • 你可能会从 docker-compose 中获得更多的里程;您可以在 Web 应用程序容器出现之前使用它来启动 db 容器。它使两个容器“意识到”彼此。
猜你喜欢
  • 2016-12-31
  • 1970-01-01
  • 2020-10-01
  • 2019-05-29
  • 2016-12-26
  • 2020-11-20
  • 2019-11-19
  • 2017-06-07
  • 1970-01-01
相关资源
最近更新 更多