Przejdź do treści stopki
Iron Academy Logo
Naucz się C#
Naucz się C#

Inne Kategorie

SQL Server w Docker na Linuxie

[[academy-video-youtube({"vid": "-H5mMexO4_I", "start_time": "0", "title": "SQL Server in Docker on Linux", "creator": "Tim Corey", "length": "18m 20s"})]]

Instalowanie silnika bazy danych bezpośrednio na maszynie deweloperskiej to popularny skrót, który tworzy problemy długoterminowe. Serwery baz danych są zaprojektowane do dedykowanego sprzętu. Zużywają znaczną ilość pamięci i procesora, kumulują dług konfiguracyjny, gdy instalujesz wiele wersji, i komplikują aktualizacje, kiedy musisz testować przeciwko innej wersji. Kontenery Docker rozwiązują to wszystko, izolując każdą instancję bazy danych w lekkim, jednorazowym środowisku.

W swoim wideo "SQL Server w Dockerze na Linuxie", Tim Corey pokazuje, jak uruchomić instancję Microsoft SQL Server na Linuxie za pomocą jednego polecenia Docker, połączyć się z nią z VS Code i wykonywać zapytania. Pokazuje również, jak uruchomić wiele wersji SQL Server obok siebie i jak posprzątać, gdy już skończysz. Jeżeli śledzisz serię C# na Linuxie lub chcesz szybkiego, powtarzalnego sposobu na uruchomienie SQL Server do celów deweloperskich, ten przewodnik obejmuje całą konfigurację.

Dlaczego Docker zamiast lokalnej instalacji

[0:00 - 0:57] Tim zaczyna od argumentów przeciwko natywnym instalacjom baz danych. Główna argumentacja: silniki baz danych są projektowane do dedykowanych serwerów. Instalowanie ich lokalnie oznacza, że zużywają zasoby, niezależnie od tego, czy z nich korzystasz, a zarządzanie wieloma wersjami (SQL 2019, 2022, 2025) na tej samej maszynie szybko staje się wyzwaniem konserwacyjnym.

Kontenery Docker zmieniają ten model. Każda baza danych działa w swoim własnym izolowanym środowisku. Uruchom to, kiedy tego potrzebujesz, zatrzymaj, kiedy nie potrzebujesz. Usun to i zaczynaj od zera bez zadnej pozostalosci w konfiguracji. Dla programowania i testowania, to podejscie jest szybsze do ustawienia, czystsze w utrzymaniu i bardziej elastyczne niz tradycyjna instalacja.

Naprawianie Polityki Ponownego Uruchamiania Portainera

[0:57 - 2:17] Przed uruchomieniem SQL Server, Tim zauwaza, ze Portainer (narzedzie zarzadzania GUI dla kontenerow Docker z poprzedniego odcinka) nie dziala. Zakonczyl dzialanie, gdy maszyna ostatni raz zostala wylaczona, poniewaz nie zostala ustawiona zadna polityka ponownego uruchomienia.

Naprawa to dwa polecenia:

// Set Portainer to restart automatically (unless manually stopped)
docker update --restart unless-stopped portainer

// Start it now
docker start portainer
// Set Portainer to restart automatically (unless manually stopped)
docker update --restart unless-stopped portainer

// Start it now
docker start portainer

Polityka unless-stopped oznacza, że Portainer będzie automatycznie restartowany przy ponownym uruchomieniu, ale pozostanie wyłączony, jeśli wyraźnie go zatrzymasz. Po uruchomieniu Portainer jest dostępny pod adresem localhost:9000 w przeglądarce. Tim poleca ta polityke dla narzedzi zarzadzania, ktore chcesz, aby dzialaly caly czas, podczas gdy kontenery bazodanowe uruchamiane sa recznie.

Polecenie Docker Run dla SQL Server

[2:17 - 6:09] Cala konfiguracja SQL Server sprowadza sie do jednego polecenia. Tim przenosi je z jego maszyny Windows uzywajac LocalSend (omowione w wczesniejszym filmie pobocznym), nastepnie rozpisuje je czesc po czesci:

// Single command to launch SQL Server 2025 in Docker
docker run -e "ACCEPT_EULA=Y" -e "SA_PASSWORD=Test12345" -p 1433:1433 --name sql2025 mcr.microsoft.com/mssql/server:2025-latest
// Single command to launch SQL Server 2025 in Docker
docker run -e "ACCEPT_EULA=Y" -e "SA_PASSWORD=Test12345" -p 1433:1433 --name sql2025 mcr.microsoft.com/mssql/server:2025-latest

Kazda flaga sluzy konkretnemu celowi. Flaga -e "ACCEPT_EULA=Y" akceptuje umowę licencyjną Microsoft. Flaga -e "SA_PASSWORD=Test12345" ustawia hasło administratora systemu w postaci zwykłego tekstu, co Tim uznaje za odpowiednie dla lokalnego rozwoju, ale nigdy nie powinno być używane w środowisku produkcyjnym. Flaga -p 1433:1433 mapuje wewnętrzny port SQL Servera kontenera na ten sam port na maszynie głównej. Flaga --name sql2025 nadaje kontenerowi czytelną etykietę. Tag obrazu 2025-latest pobiera najnowszą kompilację SQL Server 2025 z rejestru kontenerów Microsoft.

Po uruchomieniu polecenia, Docker pobiera warstwy obrazu, rozpakowuje je i rozpoczyna dzialanie serwera. Caly proces zajmuje kilka minut, z czego wiekszość to poczatkowe pobieranie.

Weryfikacja w Portainer

[6:09 - 7:04] Z powrotem w Portainer, nowy kontener SQL Server pojawia sie na liscie kontenerow, pokazujac status 'dziala'. Tim celowo wybiera tutaj brak montowania wolumenu dla trwalosci danych. Jesli kontener zostanie usuniety, bazy danych w srodku rowniez znikna.

To jest zamierzone dla ustawien deweloperskich. Zaczynanie od nowa oznacza brak nagromadzonych danych testowych, brak przeklaman schematow z poprzednich eksperymentow i brak problemow typu 'dziala u mnie', powodowanych przez pozostale stany. Jesli kiedykolwiek bedziesz musial zachowac bazy danych przed usunieciem kontenera, mozesz je najpierw wyeksportowac, ale podejscie z czysta kartka to preferowany proces pracy dla pracy lokalnej.

Laczenie z VS Code

[7:04 - 8:50] Aby zarzadzac baza danych, Tim instaluje rozszerzenie SQL Server dla VS Code od Microsoft. Po instalacji, nowy panel SQL Server pojawia sie na pasku bocznym, gdzie mozna dodawac polaczenia.

Parametry polaczenia sa minimalne. Nazwa serwera to . (kropka), co oznacza localhost. Ponieważ kontener mapuje port 1433 (domyślny dla SQL Server), nie trzeba podawać numeru portu. Nazwa użytkownika to sa, hasło to to z polecenia Dockera, a domyślna baza danych to master. Zaufaj certyfikatowi serwera, gdy zostaniesz o to poproszony.

Po polaczeniu, VS Code pokazuje ikone Docker obok polaczenia, potwierdzajac, ze wykryl srodowisko konteneryzowane. Systemowe bazy danych (master, model, msdb, tempdb) pojawiaja sie w drzewie, gotowe do uzycia.

Tworzenie Bazy Danych i Uruchamianie Zapytan

[8:50 - 12:45] Po nawiązaniu połączenia, Tim tworzy nową bazę danych o nazwie PeopleDB bezpośrednio z paska bocznego VS Code. W jej wnętrzu tworzy tabelę People za pomocą projektanta wizualnego, dodając kolumnę Id z automatycznym zwiększaniem, kolumnę FirstName i kolumnę LastName (obie NVARCHAR(50), niepusta wartości).

Nastepnie otwiera nowe okno zapytania i wstawia dane testowe:

INSERT INTO dbo.People (FirstName, LastName)
VALUES
    ('Tim', 'Corey'),
    ('Sue', 'Storm'),
    ('Dave', 'Corey')
INSERT INTO dbo.People (FirstName, LastName)
VALUES
    ('Tim', 'Corey'),
    ('Sue', 'Storm'),
    ('Dave', 'Corey')

Uruchomienie SELECT potwierdza, że wiersze są na miejscu:

SELECT * FROM dbo.People
-- Returns: Tim Corey, Sue Storm, Dave Corey

SELECT * FROM dbo.People WHERE LastName = 'Corey'
-- Returns: Tim Corey, Dave Corey
SELECT * FROM dbo.People
-- Returns: Tim Corey, Sue Storm, Dave Corey

SELECT * FROM dbo.People WHERE LastName = 'Corey'
-- Returns: Tim Corey, Dave Corey

Pelny cykl (utworzenie bazy danych, zaprojektowanie tabeli, wprowadzenie danych, zapytanie z filtrami) zajmuje tylko kilka minut. Wszystko uruchomione jest wewnatrz kontenera Docker, zarzadzane przez VS Code, bez instalacji SQL Server na maszynie hosciej.

Zatrzymywanie, Ponowne Uruchamianie i Zarzadzanie Zasobami

[12:45 - 14:20] Kiedy skonczysz prace z SQL Server, zatrzymanie go to jedno klikniecie w Portainer lub jedno polecenie w terminalu:

docker stop sql2025
docker stop sql2025

Zatrzymany kontener zwalnia wszystkie zasoby procesora i pamieci. Jedyne co nadal zuzywa to przestrzen dyskowa na pliki obrazu i kontenera, co jest porownywalne (i zazwyczaj mniejsze) niz natywna instalacja SQL Server.

Tim zwraca uwage, ze to jest glowna przewaga nad tradycyjna instalacja. Lokalnie zainstalowany SQL Server dziala jako usluga Windows lub Linux, zuzywajac zasoby przez caly czas. Kontener Docker zuzywa zasoby tylko wtedy, gdy zdecydujesz sie go uruchomic.

Uruchamianie Wielu Wersji Obok Siebie

[14:20 - 17:17] Jedna z najbardziej praktycznych funkcji Dockera dla rozwoju baz danych jest mozliwosc uruchamiania wielu wersji jednoczesnie. Tim pokazuje, uruchamiajac SQL Server 2022 obok istniejacego kontenera 2025:

// SQL Server 2022 on a different port
docker run -e "ACCEPT_EULA=Y" -e "SA_PASSWORD=Test12345" -p 2022:1433 --name sql2022 mcr.microsoft.com/mssql/server:2022-latest
// SQL Server 2022 on a different port
docker run -e "ACCEPT_EULA=Y" -e "SA_PASSWORD=Test12345" -p 2022:1433 --name sql2022 mcr.microsoft.com/mssql/server:2022-latest

Kluczową różnicą jest mapowanie portów: -p 2022:1433 mapuje wewnętrzny port 1433 kontenera na port 2022 na hoście. To unika konfliktu portów z instancją 2025, która już używa 1433. Po zakończeniu pobierania oba kontenery pojawiają się w Portainer, oba uruchomione jednocześnie.

To jest przydatne, gdy klient uruchamia SQL Server 2022 w produkcji, ale zespol deweloperski pracuje na 2025. Przelaczanie miedzy wersjami nie wymaga ponownej instalacji, wystarczy uruchomienie odpowiedniego kontenera. Wszystkie dostępne obrazy SQL Server (2017, 2019, 2022, 2025) są wymienione w mcr.microsoft.com, a to samo podejście działa dla MySQL, PostgreSQL, MongoDB i Cosmos DB.

Podsumowanie: Jedno Polecenie do Pelnego Srodowiska Bazy Danych

[17:17 - 17:47] Prezentacja pokazuje, ze jeden polecenie Dockera zastapilo to, co kiedys bylo wieloetapowym procesem instalacji z kreatorami konfiguracji, zarzadzaniem uslugami i konfliktami wersji. Kontener uruchamia sie w kilka minut, dziala tylko wtedy, gdy jest potrzebny, i moze byc usuniety bez pozostawienia sladów na systemie hosta.

Dla programistow pracujacych nad kilkoma projektami z rozne wymaganiami baz danych, to podejscie skaluje sie czysto. Kazdy projekt ma swoj wlasny kontener, swoja wlasna wersje, i swoje wlasne odizolowane dane.

Wnioski

[17:47 - 18:20] Podsumowując: SQL Server na Linuxie działa w Docker z jednym poleceniem docker run. Laczenie sie z nim z VS Code uzywajac rozszerzenia SQL Server, tworzenie baz danych i tabel poprzez pasek boczny, i pisanie zapytan tak jak bys to zrobil przeciwko innemu instancji SQL Server. Kiedy skonczysz, zatrzymaj kontener i odzyskaj zasoby.

Polaczenie Dockera do zarzadzania baza danych i VS Code do zapytywan daje pelny proces roboczyrozwoju SQL w systemie Linux bez koniecznosci instalacji natywnej bazy danych.

Przykład porady: Jeśli trzeba przetestować wersję SQL Server, sprawdź mcr.microsoft.com, aby zobaczyć wszystkie dostępne tagi. Mozesz uruchamiac jednoczesnie 2017, 2019, 2022 i 2025, przypisujac kazdemu kontenerowi inny port hosta (1433, 2019, 2022, 2025). Nazwij je opisowo (sql2019, sql2022), aby Portainer i wyjście docker ps pozostały czytelne.

Obejrzyj caly film na jego Kanale YouTube i zdobadz wiecej informacji na temat rozwijania C# z bazami danych na Linux.

Hero Worlddot related to SQL Server w Docker na Linuxie
Hero Affiliate related to SQL Server w Docker na Linuxie

Zarabiaj więcej, dzieląc się tym, co kochasz

Tworzysz treści dla deweloperów pracujących z .NET, C#, Java, Python, czy Node.js? Zamień swoją wiedzę specjalistyczną na dodatkowy dochód!

Zespół wsparcia Iron

Jesteśmy online 24 godziny, 5 dni w tygodniu.
Czat
E-mail
Zadzwoń do mnie