Herstellen einer Verbindung zur SQL Server-Datenbank von einem docker-container
Ich habe docker für windows auf meinem Rechner installiert. Es ist eine Konsole-Anwendung für .net-core-1.0.0, die versucht, Zugriff auf eine SQL Server-Datenbank läuft auf einer anderen VM. Ich kann die ping-VM mit SQL Server aus meinem Rechner.
Wenn ich versuche, führen Sie die Konsole-Anwendung mit dotnet run
von der Eingabeaufforderung aus auf meinem Rechner funktioniert es einwandfrei. Aber wenn die gleiche Anwendung laufen in einem docker-container habe ich eine Nachricht bekommen
Ein Netzwerk-oder instanzspezifischen Fehler beim
herstellen einer Verbindung zu SQL Server. Der server wurde nicht gefunden oder
nicht zugänglich war. Stellen Sie sicher, dass der Instanzname richtig ist und dass
SQL Server Remoteverbindungen zulässt. (Anbieter: TCP -
Anbieter, Fehler: 40 - Konnte nicht geöffnet werden eine Verbindung zu SQL Server)
Versuchte ich mit
docker run --add-host sqldemo:<VM running sql server ip here>
aber das machte keinen Unterschied.
Wie sind Sie mit dem Bau Ihres connection-string?
using (var conn = new SqlConnection(@"Data Source=" <vm-ip-hier>;Initial Catalog=DemoDb;User id=demo;Password=demo"))
Versuchen Sie, den host-Namen
sqldemo
Sie hinzufügen mit --add-host
anstelle der IP-Adresse.Ich versuchte es bereits. Funktioniert nicht. Von docker host ich bin nicht in der Lage zu pingen der VM auf dem SQL Server ausgeführt wird. Ich lese viele Artikel über das Andockfenster Vernetzung, aber keine Abbildung dieses heraus. Die meisten der Artikel, die darüber reden overlay-Netzwerk-Treiber für die Verbindung von multi-host. In meinem Fall nicht zutrifft, da SQL Server nicht ausgeführt wird, die in einem docker-container.
InformationsquelleAutor Learning Docker | 2016-07-25
Du musst angemeldet sein, um einen Kommentar abzugeben.
Annahmen
Fügen Sie einen SQL-Benutzer, um Ihre SQL-Datenbank.
Ändern Sie die SQL-Authentifizierung zu ermöglichen, die SQL Server-Authentifizierung-Modus
Rechten Maustaste auf Ihre Datenbank, wählen Sie "Eigenschaften /Sicherheit /Server-Authentifizierung oder SQL Server-und Windows-Authentifizierungsmodus" radio-button. Starten Sie den MS SQL-Dienst.
Aktualisieren Sie Ihre App.json mit Ihrem neuen Benutzernamen und Passwort
Beispiel
Stellen Sie sicher, entfernen Sie
Trusted_Connection=True
.Erstellen eines Docker-Datei
Meinem Beispiel Docker-Datei
Veröffentlichen Anwendung
Läuft von der gleichen Stelle wie der Docker-Datei in einem erhöhten PowerShell -
Ich wollte den Behälter und die Ausgabe während der Ausführung in der PowerShell.
Sobald der container war auf und läuft in die container an der Eingabeaufforderung ein, ich startete meine Anwendung.
Wenn alles nach plan sollte man eingerichtet sein und ausgeführt werden.
InformationsquelleAutor ben
Können Sie ein docker-container mit Netzwerk-Einstellungen auf
host
. Solch ein container teilen, der Netzwerk-stack mit den docker-host und aus dem container-Sicht, localhost (oder 127.0.0.1) beziehen sich auf den docker-host.Dann sollten Sie sich die SQL Server-Datenbank aus dem inneren der docker-container, wie Sie nicht von Ihrem Gastgeber.
Ich denke, er bezieht sich auf SQL Server mit auf dem lokalen Rechner (nicht in einem container, nur die Verbindung zu der Instanz, die über th lokalen host-port). Lesen Sie auch meine früheren Antworten, WinDocks bietet eine Docker Engine für Windows OS Familie, die unterstützt die SQL Server-Container (ie., SQL Server 2008-2016-Bild unterstützen).
InformationsquelleAutor Camilo Silva
als in dieser Antwort
SQL Server-Instanz string-Verbindung unter Linux Docker
Nach Saurabh Singh von Microsoft:
Also ich glaube nicht, dass Sie eine Verbindung herstellen können .Net Core 1.0 läuft auf Linux zu einem SQL Server instance name.
Ihren Entscheidungen zu sein scheinen:
InformationsquelleAutor Richard Blackman