docker logs mssql2019
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.
/opt/mssql/bin/sqlservr: Error: Directory [/var/opt/mssql/system/] could not be created. Errno [13]
以根用户的身份运行非根容器
如果需要,以根用户的身份运行非根容器。 这还会将所有文件权限自动授予容器,因为容器具有更高的特权。
docker run -e "ACCEPT_EULA=Y" -e "SA_PASSWORD=MyStrongPassword" -u 0:0 -p 1433:1433 -d mcr.microsoft.com/mssql/server:2019-latest
在主机计算机上以用户的身份运行
可使用以下命令在主机计算机上以现有用户身份启动 SQL Server:
docker run -e "ACCEPT_EULA=Y" -e "SA_PASSWORD=MyStrongPassword" --cap-add SYS_PTRACE -u $(id -u myusername):0 -p 1433:1433 -d mcr.microsoft.com/mssql/server:2019-latest
以其他用户和组的身份运行
可使用自定义用户和组启动 SQL Server。 在此示例中,已装载的卷具有为主机计算机上的用户或组配置的权限。
docker run -e "ACCEPT_EULA=Y" -e "SA_PASSWORD=MyStrongPassword" --cap-add SYS_PTRACE -u (id -u myusername):(id -g myusername) -v /path/to/mssql:/var/opt/mssql -p 1433:1433 -d mcr.microsoft.com/mssql/server:2019-latest
为非根容器配置持久存储权限
若要允许非根用户访问已装载的卷上的 DB 文件,请确保运行容器所用的用户/组可以接触持久文件存储。
可通过此命令获取数据库文件的当前所有权。
ls -ll <database file dir>
如果 SQL Server 无权访问持久数据库文件,请运行以下命令之一。
授予对 DB 文件的根组读/写访问权限
授予对以下目录的根组权限,使非根 SQL Server 容器有权访问数据库文件。
chgroup -R 0 <database file dir>
chmod -R g=u <database file dir>
将非根用户设置为文件的所有者。
这可以是默认的非根用户,也可以是要指定的任何其他非根用户。 在此示例中,我们将 UID 10001 设置为非根用户。
chown -R 10001:0 <database file dir>