2016-09-21 4 views
1

Ich habe daran gearbeitet, SQL Server 2014 Express in Windows Server 2016 TP5 über Windows-Container auszuführen.Verbindung zum SQL Server Express-Container auf Host-VM konnte nicht hergestellt werden

Nach den Richtlinien here Ich bin in der Lage, einen Container mit Sql Server Express zu starten und eine Datenbank anzuhängen.

Mein voll docker run Befehl:

docker run -p 1433:1433 -v C:/temp/:C:/temp/ --env sa_password=xxxx --env attach_dbs="[{'dbName': 'Docker', 'dbFiles': ['C:\\temp\\Docker.mdf', 'C:\\temp\\Docker_log.ldf']}]" microsoft/msslq-server-2014-express-windows 

Allerdings kann ich nicht herausfinden, was für Stück fehlt mir, wenn auf dem Host-VM (Server 2016) auf den Behälter SQL Server Express-Instanz zu verbinden SSMS versucht.

Ich verwende den Standard-Port (1433) für SQL Server in meinem docker run Befehl.

Docker Version auf dem Host-VM ist: 1.12.1, build 23cf638

Windows Server 2016 TP5 Build ist: 14300.rs1_release_sv.160907-0755

Lauf netstat -a bestätigt, dass 1433 in dem Behälter hörte auf wird, aber 1433 ist nicht zuhört auf die Host-VM.

Lauf docker ps während der Behälter bestätigt ausgeführt wird, dass Port 1433 als 0.0.0.0:1433->1433/tcp abgebildet wird

auf die SQL Server-Instanz in dem Behälter über SSMS auf dem Host zu verbinden VM ich bin mit dem sa Benutzer und Passwort festgelegt mit die interne IP-Adresse des Behälters, die ich mit dem folgende Powershell abgerufen:

docker inspect --format "{{ .NetworkSettings.Networks.nat.IPAddress }}" <containerid> 

Leider SSMS ist nicht in der Lage die Instanz zu finden, und ich bin mir nicht sicher, was ich falsch mache.

Antwort

2

Es stellt sich heraus, dass ich bei der Verbindung von der Host-VM den Port sowie IP angeben musste. Ich dachte nicht, dass ich das tun müsste, da ich den Standard-SQL-Server-Port verwende.

Haben Sie den Behälter IP aus diesem Befehl:

docker inspect --format "{{ .NetworkSettings.Networks.nat.IPAddress }}" <containerid>

Servername: "ip", "Port" \ "instancename" gearbeitet und konnte sowohl mit sqlcmd bekommen in und SSMS auf dem Host-VM .

+0

In Riga: 1 Auto: 73 + ... ct --format" {{.NetworkSettings.Networks.nat.IPAddress}} "" <8cfa4ea2 ... + ~ Operator '<' für die zukünftige Verwendung reserviert. + CategoryInfo: ParserError: (:) [], ParentContainsErrorRecordException + FullyQualifiedErrorId: RedirectionNotSupported – daniele3004

0

Sie können eine IP-Adresse für diesen Docker gesetzt und versuchen, mit diesem zu verbinden:

docker run -p 192.168.0.2:1433:1433 -v C:/temp/:C:/temp/ --env sa_password=xxxx --env attach_dbs="[{'dbName': 'Docker', 'dbFiles': ['C:\\temp\\Docker.mdf', 'C:\\temp\\Docker_log.ldf']}]" microsoft/msslq-server-2014-express-windows 

oder jede geeignete IP-Adresse für Ihr System. Sie können diese Adresse jetzt verwenden, um eine Verbindung herzustellen.

+0

Wenn ich versuche, bekomme ich den folgenden Fehler: 'Fehler Antwort von Daemon: Endpoint konnte nicht im Netzwerk erstellt werden nat: Windows unterstützt Host-IP-Adressen in NAT-Einstellungen nicht. – Jordan

+0

Könnten Sie die Ausgabe von geben dieser Befehl? 'docker inspect --format" {{.NetworkSettings.Networks}} "' gibt dir so etwas wie 'map [bridge: ... '(Brücke in meinem Fall) – Florian

+0

Ergebnis davon ist:' map [nat: 0xc08237a0c0 ] ' – Jordan

Verwandte Themen