microsoft / mssql-docker

Official Microsoft repository for SQL Server in Docker resources
MIT License
1.73k stars 757 forks source link

server:2019-latest,data volume problem #739

Open qq8554650 opened 2 years ago

qq8554650 commented 2 years ago

centos7.8 Docker version 20.10.8 https://docs.microsoft.com/en-us/sql/linux/sql-server-linux-docker-container-configure?view=sql-server-ver15&pivots=cs1-bash

docker run -e 'ACCEPT_EULA=Y' -e 'SA_PASSWORD=XXX' -p 1433:1433 -v /mnt/home/docker_data/sqlserver/data:/var/opt/mssql/data -v /mnt/home/docker_data/sqlserver/log:/var/opt/mssql/log -v /mnt/home/docker_data/sqlserver/secrets:/var/opt/mssql/secrets -d mcr.microsoft.com/mssql/server:2017-latest It's ok

when I change server:2017-latest to server:2019-latest create new(after rm 2017) docker status Exited (1) 2 seconds ago

docker logs cranky_almeida
SQL Server 2019 will run as non-root by default.
This container is running as user mssql.
To learn more visit https://go.microsoft.com/fwlink/?linkid=2099216.
2022-02-08 06:46:18.33 Server      Setup step is copying system data file 'C:\templatedata\master.mdf' to '/var/opt/mssql/data/master.mdf'.
2022-02-08 06:46:18.39 Server      ERROR: Setup FAILED copying system data file 'C:\templatedata\master.mdf' to '/var/opt/mssql/data/master.mdf':  5(Access is denied.)
ERROR: BootstrapSystemDataDirectories() failure (HRESULT 0x80070005)
rabryst commented 2 years ago

This is likely because SQL Server 2017 ran containers as root, and 2019 containers do not. The mssql user needs permissions to access the old data files.