簡體   English   中英

運行 SQL Server 的 Docker 容器在啟動時退出

[英]Docker container running SQL Server exits on start

我在 Docker 容器中運行 SQL Server 實例。 它在啟動時自動退出。 日志說:

SQL Server 2019 will run as non-root by default.
This container is running as user mssql.
Your master database file is owned by mssql.
To learn more visit https://go.microsoft.com/fwlink/?linkid=2099216.
sqlservr: Unable to read instance id from /var/opt/mssql/.system/instance_id: File: pal.cpp:438 [Status: 0xC0000034 Object name not found errno = 0x2(2) No such file or directory]
/opt/mssql/bin/sqlservr: PAL initialization failed. Error: 101

如果我沒看錯,SQL Server 將不會以 root 用戶運行。 但是我的容器和卷都以同一個非根用戶身份運行。 所以我很困惑問題出在哪里。 有人可以幫我解碼此錯誤消息嗎?

此錯誤可能是由於以錯誤的方式綁定 sql server 卷/var/opt/mssql引起的。

例如

docker run `
    --name sqlexpress `
    -e ACCEPT_EULA=Y `
    -e MSSQL_SA_PASSWORD="averyuRandomPass0wrd" `
    -p 1433:1433 `
    -v "/var/lib/docker/mssql:/var/opt/mssql" `
    -e MSSQL_PID="Express" `
    -d mcr.microsoft.com/mssql/server:latest

相反,確保映射/var/opt/mssql的子卷

docker run `
    --name sqlexpress `
    -e ACCEPT_EULA=Y `
    -e MSSQL_SA_PASSWORD="averyuRandomPass0wrd" `
    -p 1433:1433 `
    -v "/var/lib/docker/mssql/data:/var/opt/mssql/data" `
    -v "/var/lib/docker/mssql/log:/var/opt/mssql/log" `
    -e MSSQL_PID="Express" `
    -d mcr.microsoft.com/mssql/server:latest

關於這個問題的更多細節https://www.herlitz.io/2022/12/22/sql-server-in-docker---palinstanceid-unable-to-read-instance-id-from-file/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM