Get*_*toX 22 sql-server docker
当我在 Linux 主机上运行官方文档中的最新 sql server 映像时。
docker run -e 'ACCEPT_EULA=Y' -e 'MSSQL_SA_PASSWORD=asdasdasdsad' -p 1433:1433 -v ./data:/var/opt/mssql/data -d mcr.microsoft.com/mssql/server:2019-latest
我收到错误:
ERROR: Setup FAILED copying system data file 'C:\templatedata\model_replicatedmaster.mdf' to '/var/opt/mssql/data/model_replicatedmaster.mdf': 5(Access is denied.)
Run Code Online (Sandbox Code Playgroud)
此消息仅出现在 Linux 主机上并且具有绑定卷。
Get*_*toX 34
我发生这种情况是因为缺乏许可。2019 年,mssql docker 从 root 用户映像移至非 root 用户映像。它使得具有绑定卷并在 Linux 主机上运行的 docker sql-server 容器出现权限问题(=> 无权写入绑定卷)。
这个问题的解决方案很少:
例如。撰写:
version: '3.6'
services:
mssql:
image: mcr.microsoft.com/mssql/server:2019-latest
user: root
ports:
- 1433:1433
environment:
- ACCEPT_EULA=Y
- SA_PASSWORD=BLAH
volumes:
- ./data:/var/opt/mssql/data
Run Code Online (Sandbox Code Playgroud)
来源:https ://github.com/microsoft/mssql-docker/issues/13#issuecomment-641904197
sudo docker run -it mcr.microsoft.com/mssql/server id mssql
给出:uid=10001(mssql) gid=0(root) groups=0(root)
sudo chown 10001 VOLUME_DIRECTORY
西班牙语来源:https ://www.eiximenis.dev/posts/2020-06-26-sql-server-docker-no-se-ejecuta-en-root/
授予对主机上的数据库文件的完全访问权限
sudo chmod 777 -R VOLUME_DIRECTORY