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:
- Jalankan gambar kontainer SQL Server 2017 dengan Docker
- Jalankan gambar kontainer SQL Server 2019 dengan Docker
- Jalankan gambar kontainer SQL Server 2022 dengan Docker
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.
Menggunakan
docker exec -it
perintah untuk memulai shell bash interaktif di dalam kontainer Anda yang sedang berjalan. Dalam contohe69e056c702d
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
ataue69
bukan ID lengkap. Untuk mengetahui ID kontainer, jalankan perintahdocker ps -a
.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 Menyambungkan 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.Setelah selesai dengan sqlcmd, ketik
exit
.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).
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 Menyambungkan 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 Menyambungkan 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 Menyambungkan 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=1
lingkungan . Kontainer yang dihasilkan langsung keluar, dan docker rm
perintah menghapusnya.
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
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:
Identifikasi Docker
tag
untuk rilis yang ingin Anda gunakan. Untuk melihat tag yang tersedia, lihat Registri Artefak Microsoft.Tarik gambar kontainer SQL Server dengan tag . Misalnya, untuk menarik
2019-CU18-ubuntu-20.04
gambar, ganti<image_tag>
dalam perintah berikut dengan2019-CU18-ubuntu-20.04
.docker pull mcr.microsoft.com/mssql/server:<image_tag>
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. GunakanMSSQL_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:
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.
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.
Hentikan kontainer SQL Server dengan
docker stop
perintah .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.
Verifikasi database dan data Anda di kontainer baru.
Secara opsional, hapus kontainer lama dengan
docker rm
.
Konten terkait
- 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
- Mereferensikan konfigurasi dan kustomisasi tambahan ke kontainer Docker
- Lihat repositori GitHub mssql-docker untuk sumber daya, umpan balik, dan masalah yang diketahui
- Pemecahan masalah kontainer SQL Server Docker
- Menjelajahi ketersediaan tinggi untuk kontainer SQL Server
- Mengamankan kontainer SQL Server Docker
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