Menyebarkan dan menyambungkan ke kontainer SQL Server Linux

Berlaku untuk:SQL Server - Linux

Artikel ini menjelaskan cara menyebarkan dan menyambungkan ke kontainer SQL Server Linux.

Untuk skenario penyebaran lainnya, lihat:

Catatan

Artikel ini secara khusus berfokus pada penggunaan mssql-server-linux gambar. Penyebaran SQL Server dalam kontainer Windows tidak tercakup oleh dukungan. Untuk pengembangan dan pengujian, Anda dapat membuat gambar kontainer kustom Anda sendiri untuk bekerja dengan SQL Server di kontainer Windows. File sampel tersedia di GitHub. File sampel hanya untuk referensi.

Penting

Sebelum memilih untuk menjalankan kontainer SQL Server untuk kasus penggunaan produksi, tinjau kebijakan dukungan kami untuk Kontainer SQL Server untuk memastikan bahwa Anda berjalan pada konfigurasi yang didukung.

Video 6 menit ini menyediakan pengenalan tentang menjalankan SQL Server pada kontainer:

Tarik dan jalankan gambar kontainer

Untuk menarik dan menjalankan gambar kontainer Docker untuk SQL Server, ikuti prasyarat dan langkah-langkah dalam mulai cepat berikut:

Artikel konfigurasi ini menyediakan skenario penggunaan tambahan di bagian berikut.

Sambungkan dan mengkueri

Anda dapat menyambungkan dan mengkueri SQL Server dalam kontainer dari luar kontainer atau dari dalam kontainer. Bagian berikut menjelaskan kedua skenario.

Alat di luar kontainer

Anda dapat terhubung ke instans SQL Server pada host kontainer Anda dari alat Linux, Windows, atau macOS eksternal apa pun yang mendukung koneksi SQL. Beberapa alat umum meliputi:

Contoh berikut menggunakan sqlcmd untuk menyambungkan ke SQL Server yang berjalan dalam kontainer. Alamat IP di string koneksi adalah alamat IP komputer host yang menjalankan kontainer.

Catatan

Versi sqlcmd yang lebih baru (dalam mssql-tools18) aman secara default. Jika menggunakan versi 18 atau lebih tinggi, Anda perlu menambahkan No opsi ke sqlcmd untuk menentukan bahwa enkripsi bersifat opsional, bukan wajib.

sqlcmd -S 10.3.2.4 -U SA -P '<YourPassword>'
sqlcmd -S 10.3.2.4 -U SA -P "<YourPassword>"
sqlcmd -S 10.3.2.4 -U SA -P "<YourPassword>"

Jika Anda memetakan port host yang bukan default1433, tambahkan port tersebut ke string koneksi. Misalnya, jika Anda menentukan -p 1400:1433 dalam perintah Anda docker run , sambungkan dengan secara eksplisit menentukan port 1400.

sqlcmd -S 10.3.2.4,1400 -U SA -P '<YourPassword>'
sqlcmd -S 10.3.2.4,1400 -U SA -P "<YourPassword>"
sqlcmd -S 10.3.2.4,1400 -U SA -P "<YourPassword>"

Alat di dalam kontainer

Dimulai dengan SQL Server 2017 (14.x), alat baris perintah SQL Server disertakan dalam gambar kontainer. Jika Anda melampirkan ke gambar dengan perintah interaktif, Anda dapat menjalankan alat secara lokal.

  1. Menggunakan docker exec -it perintah untuk memulai shell bash interaktif di dalam kontainer Anda yang sedang berjalan. Dalam contoh e69e056c702d berikut adalah ID kontainer.

    docker exec -it e69e056c702d "bash"
    

    Tip

    Anda tidak selalu harus menentukan seluruh ID kontainer. Anda hanya perlu menentukan karakter yang cukup untuk mengidentifikasinya secara unik. Jadi dalam contoh ini, mungkin cukup untuk menggunakan e6 atau e69 bukan ID lengkap. Untuk mengetahui ID kontainer, jalankan perintah docker ps -a.

  2. Setelah berada di dalam kontainer, sambungkan secara lokal dengan sqlcmd dengan menggunakan jalur lengkapnya.

    /opt/mssql-tools18/bin/sqlcmd -S localhost -U SA -P '<YourPassword>'
    

    Catatan

    Versi sqlcmd yang lebih baru aman secara default. Untuk informasi selengkapnya tentang enkripsi koneksi, lihat utilitas sqlcmd untuk Windows, dan Koneksi dengan sqlcmd untuk Linux dan macOS. Jika koneksi tidak berhasil, Anda dapat menambahkan -No opsi ke sqlcmd untuk menentukan bahwa enkripsi bersifat opsional, bukan wajib.

  3. Setelah selesai dengan sqlcmd, ketik exit.

  4. Setelah selesai dengan perintah interaktif, ketik exit. Kontainer Anda terus berjalan setelah Anda keluar dari shell bash interaktif.

Periksa versi kontainer

Jika Anda ingin mengetahui versi SQL Server dalam kontainer yang sedang berjalan, jalankan perintah berikut untuk menampilkannya. Ganti <Container ID or name> dengan ID atau nama kontainer target. Ganti <YourStrong!Passw0rd> dengan kata sandi SQL Server untuk akun administrator sistem (SA).

sudo docker exec -it <Container ID or name> /opt/mssql-tools/bin/sqlcmd \
-S localhost -U SA -P '<YourStrong!Passw0rd>' \
-Q 'SELECT @@VERSION'

Catatan

Versi sqlcmd yang lebih baru aman secara default. Untuk informasi selengkapnya tentang enkripsi koneksi, lihat utilitas sqlcmd untuk Windows, dan Koneksi dengan sqlcmd untuk Linux dan macOS. Jika koneksi tidak berhasil, Anda dapat menambahkan -No opsi ke sqlcmd untuk menentukan bahwa enkripsi bersifat opsional, bukan wajib.

docker exec -it <Container ID or name> /opt/mssql-tools/bin/sqlcmd `
-S localhost -U SA -P "<YourStrong!Passw0rd>" `
-Q "SELECT @@VERSION"

Catatan

Versi sqlcmd yang lebih baru aman secara default. Untuk informasi selengkapnya tentang enkripsi koneksi, lihat utilitas sqlcmd untuk Windows, dan Koneksi dengan sqlcmd untuk Linux dan macOS. Jika koneksi tidak berhasil, Anda dapat menambahkan -No opsi ke sqlcmd untuk menentukan bahwa enkripsi bersifat opsional, bukan wajib.

docker exec -it <Container ID or name> /opt/mssql-tools/bin/sqlcmd ^
-S localhost -U SA -P "<YourStrong!Passw0rd>" ^
-Q "SELECT @@VERSION"

Catatan

Versi sqlcmd yang lebih baru aman secara default. Untuk informasi selengkapnya tentang enkripsi koneksi, lihat utilitas sqlcmd untuk Windows, dan Koneksi dengan sqlcmd untuk Linux dan macOS. Jika koneksi tidak berhasil, Anda dapat menambahkan -No opsi ke sqlcmd untuk menentukan bahwa enkripsi bersifat opsional, bukan wajib.

Anda juga dapat mengidentifikasi versi SQL Server dan nomor build untuk gambar kontainer target. Perintah berikut menampilkan versi SQL Server dan informasi build untuk mcr.microsoft.com/mssql/server:2022-latest gambar. Ini dilakukan dengan menjalankan kontainer baru dengan variabel PAL_PROGRAM_INFO=1lingkungan . Kontainer yang dihasilkan langsung keluar, dan docker rm perintah menghapusnya.

sudo docker run -e PAL_PROGRAM_INFO=1 --name sqlver \
-ti mcr.microsoft.com/mssql/server:2022-latest && \
sudo docker rm sqlver
docker run -e PAL_PROGRAM_INFO=1 --name sqlver `
-ti mcr.microsoft.com/mssql/server:2022-latest; `
docker rm sqlver
docker run -e PAL_PROGRAM_INFO=1 --name sqlver ^
-ti mcr.microsoft.com/mssql/server:2022-latest && ^
docker rm sqlver

Perintah sebelumnya menampilkan informasi versi yang mirip dengan output berikut:

sqlservr
  Version 16.0.1000.6
  Build ID d81e9b6de06534e649bd57dd609aa3050f5e380f361b7f8a80a80eeb71e7422c
  Build Type release
  Git Version 2aede92f
  Built at Tue Nov 01 06:11:40 GMT 2022

PAL
  Build ID 754097e8f0db68f559e1cbc9d46952ac9fd518b5da9f12964ef40fc9033720e3
  Build Type release
  Git Version d88e3e1130
  Built at Tue Nov 01 06:08:02 GMT 2022

Packages
  system.security                         mssql-16.0.1000.6_26_official-release
  system.certificates                     mssql-16.0.1000.6_26_official-release
  sqlagent                                16.0.1000.6
  system.wmi                              10.0.17763.2061.202107231
  system.netfx                            4.7.0.0.202104262
  system                                  mssql-16.0.1000.6_26_official-release
  system.common                           10.0.17763.2061.202107231
  sqlservr                                16.0.1000.6
  secforwarderxplat                       16.0.1000.6

Menjalankan gambar kontainer SQL Server tertentu

Catatan

  • Dimulai dengan SQL Server 2019 (15.x) CU3, Ubuntu 18.04 didukung.
  • Dimulai dengan SQL Server 2019 (15.x) CU10, Ubuntu 20.04 didukung.
  • Anda dapat mengambil daftar semua tag yang tersedia untuk mssql/server di https://mcr.microsoft.com/v2/mssql/server/tags/list.

Ada skenario di mana Anda mungkin tidak ingin menggunakan gambar kontainer SQL Server terbaru. Untuk menjalankan gambar kontainer SQL Server tertentu, gunakan langkah-langkah berikut:

  1. Identifikasi Docker tag untuk rilis yang ingin Anda gunakan. Untuk melihat tag yang tersedia, lihat Registri Artefak Microsoft.

  2. Tarik gambar kontainer SQL Server dengan tag . Misalnya, untuk menarik 2019-CU18-ubuntu-20.04 gambar, ganti <image_tag> dalam perintah berikut dengan 2019-CU18-ubuntu-20.04.

    docker pull mcr.microsoft.com/mssql/server:<image_tag>
    
  3. Untuk menjalankan kontainer baru dengan gambar tersebut, tentukan nama tag dalam docker run perintah . Dalam perintah berikut, ganti <image_tag> dengan versi yang ingin Anda jalankan.

    Penting

    Variabel SA_PASSWORD lingkungan tidak digunakan lagi. Gunakan MSSQL_SA_PASSWORD sebagai gantinya.

    docker run -e 'ACCEPT_EULA=Y' -e 'MSSQL_SA_PASSWORD=<YourStrong!Passw0rd>' -p 1401:1433 -d mcr.microsoft.com/mssql/server:<image_tag>
    
    docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<YourStrong!Passw0rd>" -p 1401:1433 -d mcr.microsoft.com/mssql/server:<image_tag>
    
    docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<YourStrong!Passw0rd>" -p 1401:1433 -d mcr.microsoft.com/mssql/server:<image_tag>
    

Langkah-langkah ini juga dapat digunakan untuk menurunkan tingkat kontainer yang ada. Misalnya, Anda mungkin ingin mengembalikan atau menurunkan tingkat kontainer yang sedang berjalan untuk pemecahan masalah atau pengujian. Untuk menurunkan tingkat kontainer yang sedang berjalan, Anda harus menggunakan teknik persistensi untuk folder data. Ikuti langkah-langkah yang sama yang diuraikan di bagian peningkatan, tetapi tentukan nama tag versi lama saat Anda menjalankan kontainer baru.

Menjalankan gambar kontainer berbasis RHEL

Dokumentasi untuk gambar kontainer Linux SQL Server menunjuk ke kontainer berbasis Ubuntu. Dimulai dengan SQL Server 2019 (15.x), Anda dapat menggunakan kontainer berdasarkan Red Hat Enterprise Linux (RHEL). Contoh gambar untuk RHEL akan terlihat seperti mcr.microsoft.com/mssql/rhel/server:2019-CU15-rhel-8.

Misalnya, perintah berikut menarik kontainer Pembaruan Kumulatif 18 untuk SQL Server 2019 (15.x) yang menggunakan RHEL 8:

sudo docker pull mcr.microsoft.com/mssql/rhel/server:2019-CU18-rhel-8.4
docker pull mcr.microsoft.com/mssql/rhel/server:2019-CU18-rhel-8.4
docker pull mcr.microsoft.com/mssql/rhel/server:2019-CU18-rhel-8.4

Menjalankan gambar kontainer produksi

Mulai cepat di bagian sebelumnya menjalankan SQL Server edisi Pengembang gratis dari Registri Artefak Microsoft. Sebagian besar informasi masih berlaku jika Anda ingin menjalankan gambar kontainer produksi, seperti edisi Enterprise, Standard, atau Web. Namun, ada beberapa perbedaan yang diuraikan di sini.

  • Anda hanya dapat menggunakan SQL Server di lingkungan produksi jika Anda memiliki lisensi yang valid. Anda dapat memperoleh lisensi produksi SQL Server Express gratis di sini. Lisensi edisi SQL Server Standard dan Enterprise tersedia melalui Lisensi Volume Microsoft.

  • Gambar kontainer Pengembang juga dapat dikonfigurasi untuk menjalankan edisi produksi.

Untuk menjalankan edisi produksi, tinjau persyaratan dan jalankan prosedur di mulai cepat. Anda harus menentukan edisi produksi Anda dengan MSSQL_PID variabel lingkungan. Contoh berikut menunjukkan cara menjalankan gambar kontainer SQL Server 2022 (16.x) terbaru untuk edisi Enterprise Core.

docker run --name sqlenterprise \
-e 'ACCEPT_EULA=Y' -e 'MSSQL_SA_PASSWORD=<YourStrong!Passw0rd>' \
-e 'MSSQL_PID=EnterpriseCore' -p 1433:1433 \
-d mcr.microsoft.com/mssql/server:2022-latest
docker run --name sqlenterprise `
-e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<YourStrong!Passw0rd>" `
-e "MSSQL_PID=EnterpriseCore" -p 1433:1433 `
-d "mcr.microsoft.com/mssql/server:2022-latest"
docker run --name sqlenterprise ^
-e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<YourStrong!Passw0rd>" ^
-e "MSSQL_PID=EnterpriseCore" -p 1433:1433 ^
-d "mcr.microsoft.com/mssql/server:2022-latest"

Penting

Dengan meneruskan nilai Y ke variabel ACCEPT_EULA lingkungan dan nilai edisi ke MSSQL_PID, Anda menyatakan bahwa Anda memiliki lisensi yang valid dan sudah ada untuk edisi dan versi SQL Server yang ingin Anda gunakan. Anda juga setuju bahwa penggunaan perangkat lunak SQL Server yang berjalan dalam gambar kontainer akan diatur oleh ketentuan lisensi SQL Server Anda.

Catatan

Untuk daftar lengkap nilai yang mungkin untuk MSSQL_PID, lihat Mengonfigurasi pengaturan SQL Server dengan variabel lingkungan di Linux.

Menjalankan beberapa kontainer SQL Server

Docker menyediakan cara untuk menjalankan beberapa kontainer SQL Server pada komputer host yang sama. Gunakan pendekatan ini untuk skenario yang memerlukan beberapa instans SQL Server pada host yang sama. Setiap kontainer harus mengekspos dirinya sendiri pada port yang berbeda.

Contoh berikut membuat dua kontainer SQL Server 2017 (14.x) dan memetakannya ke port 1401 dan 1402 pada komputer host.

docker run -e 'ACCEPT_EULA=Y' -e 'MSSQL_SA_PASSWORD=<YourStrong!Passw0rd>' -p 1401:1433 -d mcr.microsoft.com/mssql/server:2017-latest
docker run -e 'ACCEPT_EULA=Y' -e 'MSSQL_SA_PASSWORD=<YourStrong!Passw0rd>' -p 1402:1433 -d mcr.microsoft.com/mssql/server:2017-latest
docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<YourStrong!Passw0rd>" -p 1401:1433 -d mcr.microsoft.com/mssql/server:2017-latest
docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<YourStrong!Passw0rd>" -p 1402:1433 -d mcr.microsoft.com/mssql/server:2017-latest
docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<YourStrong!Passw0rd>" -p 1401:1433 -d mcr.microsoft.com/mssql/server:2017-latest
docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<YourStrong!Passw0rd>" -p 1402:1433 -d mcr.microsoft.com/mssql/server:2017-latest

Contoh berikut membuat dua kontainer SQL Server 2019 (15.x) dan memetakannya ke port 1401 dan 1402 pada komputer host.

docker run -e 'ACCEPT_EULA=Y' -e 'MSSQL_SA_PASSWORD=<YourStrong!Passw0rd>' -p 1401:1433 -d mcr.microsoft.com/mssql/server:2019-latest
docker run -e 'ACCEPT_EULA=Y' -e 'MSSQL_SA_PASSWORD=<YourStrong!Passw0rd>' -p 1402:1433 -d mcr.microsoft.com/mssql/server:2019-latest
docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<YourStrong!Passw0rd>" -p 1401:1433 -d mcr.microsoft.com/mssql/server:2019-latest
docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<YourStrong!Passw0rd>" -p 1402:1433 -d mcr.microsoft.com/mssql/server:2019-latest
docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<YourStrong!Passw0rd>" -p 1401:1433 -d mcr.microsoft.com/mssql/server:2019-latest
docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<YourStrong!Passw0rd>" -p 1402:1433 -d mcr.microsoft.com/mssql/server:2019-latest

Contoh berikut membuat dua kontainer SQL Server 2022 (16.x) dan memetakannya ke port 1401 dan 1402 pada komputer host.

docker run -e 'ACCEPT_EULA=Y' -e 'MSSQL_SA_PASSWORD=<YourStrong!Passw0rd>' -p 1401:1433 -d mcr.microsoft.com/mssql/server:2022-latest
docker run -e 'ACCEPT_EULA=Y' -e 'MSSQL_SA_PASSWORD=<YourStrong!Passw0rd>' -p 1402:1433 -d mcr.microsoft.com/mssql/server:2022-latest
docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<YourStrong!Passw0rd>" -p 1401:1433 -d mcr.microsoft.com/mssql/server:2022-latest
docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<YourStrong!Passw0rd>" -p 1402:1433 -d mcr.microsoft.com/mssql/server:2022-latest
docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<YourStrong!Passw0rd>" -p 1401:1433 -d mcr.microsoft.com/mssql/server:2022-latest
docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<YourStrong!Passw0rd>" -p 1402:1433 -d mcr.microsoft.com/mssql/server:2022-latest

Sekarang ada dua instans SQL Server yang berjalan dalam kontainer terpisah. Klien dapat terhubung ke setiap instans SQL Server dengan menggunakan alamat IP host kontainer dan nomor port untuk kontainer.

Catatan

Versi sqlcmd yang lebih baru (dalam mssql-tools18) aman secara default. Jika menggunakan versi 18 atau lebih tinggi, Anda perlu menambahkan No opsi ke sqlcmd untuk menentukan bahwa enkripsi bersifat opsional, bukan wajib.

sqlcmd -S 10.3.2.4,1401 -U SA -P '<YourPassword>'
sqlcmd -S 10.3.2.4,1402 -U SA -P '<YourPassword>'
sqlcmd -S 10.3.2.4,1401 -U SA -P "<YourPassword>"
sqlcmd -S 10.3.2.4,1402 -U SA -P "<YourPassword>"
sqlcmd -S 10.3.2.4,1401 -U SA -P "<YourPassword>"
sqlcmd -S 10.3.2.4,1402 -U SA -P "<YourPassword>"

Meningkatkan SQL Server dalam kontainer

Untuk meningkatkan gambar kontainer dengan Docker, pertama-tama identifikasi tag untuk rilis untuk peningkatan Anda. Tarik versi ini dari registri dengan docker pull perintah :

docker pull mcr.microsoft.com/mssql/server:<image_tag>

Ini memperbarui gambar SQL Server untuk kontainer baru yang Anda buat, tetapi tidak memperbarui SQL Server dalam kontainer yang sedang berjalan. Untuk melakukan ini, Anda harus membuat kontainer baru dengan gambar kontainer SQL Server terbaru dan memigrasikan data Anda ke kontainer baru tersebut.

  1. Pastikan Anda menggunakan salah satu teknik persistensi data untuk kontainer SQL Server yang ada. Ini memungkinkan Anda untuk memulai kontainer baru dengan data yang sama.

  2. Hentikan kontainer SQL Server dengan docker stop perintah .

  3. Buat kontainer SQL Server baru dengan docker run dan tentukan direktori host yang dipetakan atau kontainer volume data. Pastikan untuk menggunakan tag tertentu untuk peningkatan SQL Server Anda. Kontainer baru sekarang menggunakan versi baru SQL Server dengan data SQL Server Yang sudah ada.

    Penting

    Peningkatan hanya didukung antara RC1, RC2, dan GA saat ini.

  4. Verifikasi database dan data Anda di kontainer baru.

  5. Secara opsional, hapus kontainer lama dengan docker rm.

  • Mulai menggunakan gambar kontainer SQL Server 2017 (14.x) di Docker dengan melalui mulai cepat
  • Mulai menggunakan gambar kontainer SQL Server 2019 (15.x) di Docker dengan melalui mulai cepat
  • Mulai menggunakan gambar kontainer SQL Server 2022 (16.x) di Docker dengan melalui mulai cepat

Berkontribusi pada dokumentasi SQL

Tahukah Anda bahwa Anda dapat mengedit konten SQL sendiri? Jika Anda melakukannya, Anda tidak hanya membantu meningkatkan dokumentasi kami, tetapi Anda juga dikreditkan sebagai kontributor ke halaman.

Untuk informasi selengkapnya, lihat Cara berkontribusi pada dokumentasi SQL Server