Zum Inhalt springen

Lösung: Microsoft SQL Server

docker-compose.yml
services:
mssql:
image: mcr.microsoft.com/mssql/server:2022-latest
container_name: mssql-lab
restart: unless-stopped
environment:
ACCEPT_EULA: "Y"
MSSQL_SA_PASSWORD: "YourStrong@Passw0rd"
MSSQL_PID: "Developer"
ports:
- "1433:1433"
volumes:
- mssql_data:/var/opt/mssql
volumes:
mssql_data:
docker-compose.yml
services:
mssql:
image: mcr.microsoft.com/azure-sql-edge:latest
container_name: mssql-lab
restart: unless-stopped
environment:
ACCEPT_EULA: "Y"
MSSQL_SA_PASSWORD: "YourStrong@Passw0rd"
ports:
- "1433:1433"
volumes:
- mssql_data:/var/opt/mssql
volumes:
mssql_data:
Terminal-Fenster
$ docker compose up -d
[+] Running 2/2
Network docker-lab_default Created
Container mssql-lab Started
Terminal-Fenster
$ docker compose logs mssql
...
SQL Server is now ready for client connections. This is an informational message; no user action is required.
Terminal-Fenster
$ docker exec -it mssql-lab /opt/mssql-tools18/bin/sqlcmd \
-S localhost -U sa -P "YourStrong@Passw0rd" \
-C -Q "SELECT @@VERSION"
Microsoft SQL Server 2022 (RTM-CU12)...
-- Datenbank erstellen
1> CREATE DATABASE StudentDB;
2> GO
-- Zur Datenbank wechseln
1> USE StudentDB;
2> GO
Changed database context to 'StudentDB'.
-- Tabelle erstellen
1> CREATE TABLE Courses (
2> CourseID INT IDENTITY(1,1) PRIMARY KEY,
3> CourseName NVARCHAR(100) NOT NULL,
4> Credits INT,
5> CreatedAt DATETIME DEFAULT GETDATE()
6> );
7> GO
-- Daten einfügen
1> INSERT INTO Courses (CourseName, Credits) VALUES
2> ('Datenbanken', 5),
3> ('IT Security', 4),
4> ('Netzwerke', 4);
5> GO
(3 rows affected)
-- Daten abfragen
1> SELECT * FROM Courses;
2> GO
CourseID CourseName Credits CreatedAt
----------- -------------------- ----------- -----------------------
1 Datenbanken 5 2024-03-10 14:45:00.000
2 IT Security 4 2024-03-10 14:45:00.000
3 Netzwerke 4 2024-03-10 14:45:00.000
(3 rows affected)
FeatureDeveloperExpress
KostenKostenlos (nur Entwicklung)Kostenlos (auch Produktion)
Max. DB-GrösseUnbegrenzt10 GB
Max. RAMUnbegrenzt1 GB
CPU-KerneUnbegrenzt4
FeaturesAlle Enterprise-FeaturesEingeschränkt

Developer Edition = Enterprise Edition, aber nur für Entwicklung/Test lizenziert.

Microsoft verlangt, dass Benutzer die Lizenzbedingungen (End User License Agreement) akzeptieren. Ohne ACCEPT_EULA: "Y" startet der Container nicht.

This container is running SQL Server. By continuing you are accepting the End User License Agreement.
Terminal-Fenster
# Einmalig anzeigen
docker compose logs mssql
# Live verfolgen
docker compose logs -f mssql
# Letzte 100 Zeilen
docker compose logs --tail 100 mssql
# Mit Zeitstempel
docker compose logs -t mssql

4. Vor- und Nachteile containerisierter Datenbanken

Abschnitt betitelt „4. Vor- und Nachteile containerisierter Datenbanken“

Vorteile:

  • Schnelle Einrichtung (Minuten statt Stunden)
  • Isolierte Umgebungen
  • Einfach verschiedene Versionen testen
  • Reproduzierbar auf allen Rechnern
  • Einfaches Aufräumen

Nachteile:

  • Performance-Overhead (meist minimal)
  • Komplexere Backup-Strategien
  • Nicht für Produktionseinsatz bei kritischen Daten empfohlen
  • Speicherverbrauch durch Images
docker-compose.yml
services:
mysql:
image: mysql:8.0
container_name: mysql-lab
restart: unless-stopped
environment:
MYSQL_ROOT_PASSWORD: rootpassword
MYSQL_DATABASE: testdb
MYSQL_USER: student
MYSQL_PASSWORD: studentpass
ports:
- "3306:3306"
volumes:
- mysql_data:/var/lib/mysql
mssql:
image: mcr.microsoft.com/mssql/server:2022-latest
container_name: mssql-lab
restart: unless-stopped
environment:
ACCEPT_EULA: "Y"
MSSQL_SA_PASSWORD: "YourStrong@Passw0rd"
MSSQL_PID: "Developer"
ports:
- "1433:1433"
volumes:
- mssql_data:/var/opt/mssql
volumes:
mysql_data:
mssql_data:
Terminal-Fenster
# Beide starten
docker compose up -d
# Status beider Container
docker compose ps
# Logs beider Container
docker compose logs
# Beide stoppen
docker compose down