You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Dockerfile使用最新SQL Server镜像创建文件夹遇权限问题及相关咨询

问题背景

我的Dockerfile内容如下:

FROM mcr.microsoft.com/mssql/server:latest

RUN mkdir -p /new-folder

自2023年7月13日该镜像发布最新版本后,执行构建时遇到如下错误:

mkdir: cannot create directory '/new-folder': Permission denied

切换至旧版本镜像(mcr.microsoft.com/mssql/server:2022-CU5-ubuntu-20.04)则可正常运行。

问题

  1. 如何修改Dockerfile以在最新镜像中实现文件夹创建?
  2. 是否可以查看该SQL Server镜像的Dockerfile,以理解此破坏性变更?

解答

1. 修改Dockerfile实现文件夹创建

最新版本的SQL Server镜像默认以非root用户(mssql)运行,根目录/的写入权限仅对root用户开放,因此直接执行mkdir会触发权限报错。可通过以下两种方式修改:

方式一:临时切换root用户执行创建

FROM mcr.microsoft.com/mssql/server:latest

USER root
RUN mkdir -p /new-folder
# 可选:将文件夹权限赋予mssql用户,确保后续服务可正常访问
RUN chown mssql:mssql /new-folder
USER mssql

方式二:在mssql用户有权限的目录下创建

如果无需在根目录创建,可选择镜像中mssql用户默认拥有写入权限的目录(如/var/opt/mssql):

FROM mcr.microsoft.com/mssql/server:latest

RUN mkdir -p /var/opt/mssql/new-folder

2. 查看镜像Dockerfile及理解变更

微软并未公开SQL Server官方镜像的完整Dockerfile,但可通过以下方式分析变更原因:

  • 执行docker inspect mcr.microsoft.com/mssql/server:latest命令,查看镜像的默认用户、环境变量等配置,对比旧版本镜像的输出,能发现新版本默认用户从root改为了mssql。
  • 查阅微软官方发布的SQL Server容器镜像变更日志,其中会明确记录权限模型调整这类破坏性变更。
  • 微软容器技术文档中会说明镜像的安全优化方向,这类权限收紧属于常规的容器安全加固操作。

内容的提问来源于stack exchange,提问作者Tao Gómez Gil

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 04:00:02