sql-server - 在 Dockerfile 中切换到 Root 用户

标签 sql-server docker ubuntu root

我运行了这个命令:

docker pull mcr.microsoft.com/mssql/server:2019-latest

然后我制作了一个 dockerfile 来使用这个容器镜像作为另一个容器的基础镜像
# escape=`
FROM  mcr.microsoft.com/mssql/server:2019-latest
SHELL ["/bin/bash", "-c"]

COPY ./CompanyCert.crt  /usr/local/share/ca-certificates/CompanyCert.crt
RUN update-ca-certificates

当我尝试构建该 docker 文件时,出现此错误:

ln: failed to create symbolic link '/etc/ssl/certs/CompanyCert.pem': Permission denied



所以我加了一个 RUN whoami到我的 docker 文件,它返回 mssql。当我运行 id -u它返回 10001。所以似乎用户 mssql 没有 root 权限。

我尝试将 sudo 放在对 update-ca-certificates 的调用前面但它说:

/bin/bash: sudo: command not found



我试过 RUN su -并返回:

su: must be run from a terminal



我已成功使用上述 dockerfile 将我的公司证书安装在 Microsoft 的其他容器上,但这次失败了。

如何获得 root 访问权限,以便在此 SQL Server 容器上安装我的公司证书?

最佳答案

添加 USER root给您的Dockerfile :

FROM  mcr.microsoft.com/mssql/server:2019-latest
USER root
SHELL ["/bin/bash", "-c"]

COPY ./CompanyCert.crt  /usr/local/share/ca-certificates/CompanyCert.crt
RUN update-ca-certificates

关于sql-server - 在 Dockerfile 中切换到 Root 用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59364683/

相关文章:

java - 我们如何知道哪个登录用户正在使用java中的表单?

javascript - SQL 在node.js 中取消准备PreparedStatement

docker - 为什么要使用docker? Java文件(例如WAR文件)不是已经在JVM上运行了吗?

python - 使用inspect_container在python上检查停止的docker容器

scala - 摆脱旧的 Scala 版本并安装 2.11.7

c# - 使用Prism 4的完整示例应用程序

c# - 设置单用户模式恢复备份

.net - Docket.DotNet 的 Docker 桌面问题,第二次调用 _dockerClient.Containers.StartContainerAsync() 将失败并出现 OperationCanceledException

ubuntu - Docker 镜像 Ubuntu 14.04 未连接互联网

ruby - 在 ubuntu 上安装 Rails 时出现 Errorno-EACCES 错误