Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Berlaku untuk:SQL Server di Linux
Artikel ini membahas tentang kesalahan umum yang terlihat saat menyebarkan dan menggunakan kontainer SQL Server Docker, dan menyediakan teknik pemecahan masalah untuk membantu mengatasi masalah tersebut.
Kesalahan perintah docker
Jika Anda mendapatkan kesalahan saat menjalankan perintah docker apa pun, pastikan layanan Docker sedang berjalan, lalu coba jalankan dengan hak akses yang lebih tinggi.
Misalnya, di Linux, Anda mungkin mendapatkan kesalahan berikut saat menjalankan perintah docker:
Cannot connect to the Docker daemon. Is the docker daemon running on this host?
Jika Anda mendapatkan kesalahan ini di Linux, coba jalankan perintah yang sama yang diawali dengan sudo. Jika itu gagal, pastikan bahwa layanan Docker berjalan, dan jalankan layanan tersebut jika perlu.
sudo systemctl status docker
sudo systemctl start docker
Di Windows, pastikan Anda membuka PowerShell atau Command Prompt sebagai administrator.
Important
Variabel SA_PASSWORD lingkungan tidak digunakan lagi. Gunakan MSSQL_SA_PASSWORD sebagai gantinya.
Kesalahan saat memulai kontainer SQL Server
Jika kontainer SQL Server gagal dijalankan, coba tes berikut:
Jika Anda mendapatkan kesalahan seperti
failed to create endpoint CONTAINER_NAME on network bridge. Error starting proxy: listen tcp 0.0.0.0:1433 bind: address already in use., Anda mencoba memetakan port kontainer 1433 ke port yang sudah digunakan. Ini dapat terjadi jika Anda menjalankan SQL Server secara lokal di komputer host. Ini juga dapat terjadi jika Anda memulai dua kontainer SQL Server dan mencoba memetakan keduanya ke port host yang sama. Jika ini terjadi, gunakan parameter-puntuk memetakan port kontainer 1433 ke port host yang berbeda. Contohnya:docker run -e 'ACCEPT_EULA=Y' -e 'MSSQL_SA_PASSWORD=<password>' -p 1400:1433 -d mcr.microsoft.com/mssql/server:2017-latest`.docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<password>" -p 1400:1433 -d mcr.microsoft.com/mssql/server:2017-latest`.docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<password>" -p 1400:1433 -d mcr.microsoft.com/mssql/server:2017-latest`.docker run -e 'ACCEPT_EULA=Y' -e 'MSSQL_SA_PASSWORD=<password>' -p 1400:1433 -d mcr.microsoft.com/mssql/server:2019-latest`.docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<password>" -p 1400:1433 -d mcr.microsoft.com/mssql/server:2019-latest`.docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<password>" -p 1400:1433 -d mcr.microsoft.com/mssql/server:2019-latest`.docker run -e 'ACCEPT_EULA=Y' -e 'MSSQL_SA_PASSWORD=<password>' -p 1400:1433 -d mcr.microsoft.com/mssql/server:2022-latest`.docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<password>" -p 1400:1433 -d mcr.microsoft.com/mssql/server:2022-latest`.docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<password>" -p 1400:1433 -d mcr.microsoft.com/mssql/server:2022-latest`.docker run -e 'ACCEPT_EULA=Y' -e 'MSSQL_SA_PASSWORD=<password>' -p 1400:1433 -d mcr.microsoft.com/mssql/server:2025-latest`.docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<password>" -p 1400:1433 -d mcr.microsoft.com/mssql/server:2025-latest`.docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<password>" -p 1400:1433 -d mcr.microsoft.com/mssql/server:2025-latest`.Caution
Kata sandi Anda harus mengikuti kebijakan password default SQL Server. Secara default, kata sandi harus panjangnya minimal delapan karakter dan berisi karakter dari tiga dari empat set berikut: huruf besar, huruf kecil, digit dasar-10, dan simbol. Panjang kata sandi bisa hingga 128 karakter. Gunakan kata sandi yang panjang dan kompleks mungkin.
Jika Anda mendapatkan kesalahan seperti
Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get http://%2Fvar%2Frun%2Fdocker.sock/v1.30tdout=1&tail=all: dial unix /var/run/docker.sock: connect: permission deniedsaat mencoba memulai kontainer, maka tambahkan pengguna Anda ke grup docker di Ubuntu. Kemudian keluar dan masuk lagi karena perubahan ini akan mempengaruhi sesi baru.usermod -aG docker $USERPeriksa untuk melihat apakah ada pesan kesalahan dari kontainer.
docker logs e69e056c702dPastikan Anda memenuhi persyaratan minimum untuk memori dan disk yang ditentukan dalam bagian prasyarat pada artikel panduan memulai cepat.
Jika Anda menggunakan perangkat lunak manajemen kontainer apa pun, pastikan perangkat lunak tersebut mendukung proses kontainer yang berjalan sebagai root. Proses sqlservr dalam kontainer berjalan sebagai root.
Jika kontainer SQL Server Docker Anda keluar segera setelah memulai, periksa log docker Anda. Jika Anda menggunakan PowerShell di Windows dengan
docker runperintah , gunakan tanda kutip ganda alih-alih tanda kutip tunggal. Dengan PowerShell Core, gunakan tanda kutip tunggal.
Aktifkan pengambilan dump
Jika proses SQL Server gagal di dalam kontainer, Anda harus membuat kontainer baru dengan SYS_PTRACE diaktifkan. Ini menambahkan kemampuan Linux untuk melacak proses, yang diperlukan untuk membuat file cadangan pada pengecualian. File cadangan dapat digunakan oleh dukungan untuk membantu memecahkan masalah. Perintah jalankan docker berikut memungkinkan kemampuan ini.
docker run -e 'ACCEPT_EULA=Y' -e 'MSSQL_SA_PASSWORD=<password>' -e 'MSSQL_PID=Developer' --cap-add SYS_PTRACE -p 1401:1433 -d mcr.microsoft.com/mssql/server:2017-latest
docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<password>" -e "MSSQL_PID=Developer" --cap-add SYS_PTRACE -p 1401:1433 -d mcr.microsoft.com/mssql/server:2017-latest
docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<password>" -e "MSSQL_PID=Developer" --cap-add SYS_PTRACE -p 1401:1433 -d mcr.microsoft.com/mssql/server:2017-latest
docker run -e 'ACCEPT_EULA=Y' -e 'MSSQL_SA_PASSWORD=<password>' -e 'MSSQL_PID=Developer' --cap-add SYS_PTRACE -p 1401:1433 -d mcr.microsoft.com/mssql/server:2019-latest
docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<password>" -e "MSSQL_PID=Developer" --cap-add SYS_PTRACE -p 1401:1433 -d mcr.microsoft.com/mssql/server:2019-latest
docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<password>" -e "MSSQL_PID=Developer" --cap-add SYS_PTRACE -p 1401:1433 -d mcr.microsoft.com/mssql/server:2019-latest
docker run -e 'ACCEPT_EULA=Y' -e 'MSSQL_SA_PASSWORD=<password>' -e 'MSSQL_PID=Developer' --cap-add SYS_PTRACE -p 1401:1433 -d mcr.microsoft.com/mssql/server:2022-latest
docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<password>" -e "MSSQL_PID=Developer" --cap-add SYS_PTRACE -p 1401:1433 -d mcr.microsoft.com/mssql/server:2022-latest
docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<password>" -e "MSSQL_PID=Developer" --cap-add SYS_PTRACE -p 1401:1433 -d mcr.microsoft.com/mssql/server:2022-latest
docker run -e 'ACCEPT_EULA=Y' -e 'MSSQL_SA_PASSWORD=<password>' -e 'MSSQL_PID=Developer' --cap-add SYS_PTRACE -p 1401:1433 -d mcr.microsoft.com/mssql/server:2025-latest
docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<password>" -e "MSSQL_PID=Developer" --cap-add SYS_PTRACE -p 1401:1433 -d mcr.microsoft.com/mssql/server:2025-latest
docker run -e "ACCEPT_EULA=Y" -e "MSSQL_SA_PASSWORD=<password>" -e "MSSQL_PID=Developer" --cap-add SYS_PTRACE -p 1401:1433 -d mcr.microsoft.com/mssql/server:2025-latest
Caution
Kata sandi Anda harus mengikuti kebijakan password default SQL Server. Secara default, kata sandi harus panjangnya minimal delapan karakter dan berisi karakter dari tiga dari empat set berikut: huruf besar, huruf kecil, digit dasar-10, dan simbol. Panjang kata sandi bisa hingga 128 karakter. Gunakan kata sandi yang panjang dan kompleks mungkin.
Kegagalan koneksi SQL Server
Jika Anda tidak dapat tersambung ke instans SQL Server yang berjalan di kontainer Anda, coba pengujian berikut:
Pastikan kontainer SQL Server Anda sedang berjalan dengan melihat kolom STATUS pada keluaran
docker ps -a. Jika tidak, gunakandocker start <Container ID>untuk memulainya.Jika Anda memetakan ke port host selain default (bukan 1433), pastikan Anda juga menyertakan nomor port dalam string koneksi. Anda dapat melihat pemetaan port Anda di kolom PORTS dari output
docker ps -a. Misalnya, perintah berikut menyambungkan sqlcmd ke kontainer yang mendengarkan di port 1401:sqlcmd -S 10.3.2.4,1401 -U sa -P '<YourPassword>'sqlcmd -S 10.3.2.4,1401 -U sa -P "<YourPassword>"sqlcmd -S 10.3.2.4,1401 -U sa -P "<YourPassword>"Jika Anda menggunakan
docker rundengan volume data atau kontainer volume data yang sudah dipetakan, SQL Server mengabaikan nilaiMSSQL_SA_PASSWORD. Sebagai gantinya, kata sandi akunsayang telah dikonfigurasi sebelumnya digunakan dari data SQL Server dalam volume data atau kontainer volume data. Pastikan bahwa Anda menggunakan kata sandisayang terkait dengan data yang Anda lampirkan.
Grup Ketersediaan SQL Server
Jika Anda menggunakan Docker dengan Grup Ketersediaan SQL Server, ada dua persyaratan tambahan.
Petakan port yang digunakan untuk komunikasi replika (default 5022). Misalnya, tentukan
-p 5022:5022sebagai bagian dari perintah Andadocker run.Atur nama host kontainer secara eksplisit dengan parameter
-h YOURHOSTNAMEdari perintahdocker run. Nama host ini digunakan saat Anda mengonfigurasi Grup Ketersediaan. Jika Anda tidak menentukannya melalui-h, secara default akan menggunakan ID kontainer.
Penyiapan SQL Server dan log kesalahan
Anda dapat melihat penyiapan SQL Server dan log kesalahan di /var/opt/mssql/log. Jika kontainer tidak berjalan, jalankan kontainer terlebih dahulu. Kemudian gunakan perintah interaktif untuk memeriksa log. Anda bisa mendapatkan ID kontainer dengan menjalankan docker ps perintah.
docker start <ContainerID>
docker exec -it <ContainerID> "bash"
Dari sesi bash di dalam wadah Anda, jalankan perintah berikut:
cd /var/opt/mssql/log
cat setup*.log
cat errorlog
Tip
Jika Anda memasang direktori host ke /var/opt/mssql saat membuat kontainer, Anda dapat melihat subdirektori log pada jalur yang dipetakan pada host.
Menjalankan perintah dalam kontainer
Jika Anda memiliki kontainer yang sedang berjalan, Anda dapat menjalankan perintah dalam kontainer dari terminal host.
Untuk mendapatkan ID kontainer, jalankan:
docker ps -a
Untuk memulai terminal bash dalam kontainer, jalankan:
docker exec -it <Container ID> /bin/bash
Sekarang Anda dapat menjalankan perintah seolah-olah Anda menjalankannya di terminal di dalam kontainer. Setelah selesai, ketik exit. Ini akan keluar dari sesi perintah interaktif, tetapi kontainer Anda tetap berjalan.
Konten terkait
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 Mengedit dokumentasi Microsoft Learn.