在 Dockerfile 中切换到 Root 用户

Switch to Root User in a Dockerfile

我运行这个命令:

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

然后我创建了一个 docker 文件以将此容器映像用作另一个容器的基础映像

# 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

所以我在 docker 文件中添加了一个 RUN whoami,它 returns mssql。当我运行id -u它returns10001。所以好像用户mssql没有root权限。

我试着把 sudo 放在我对 update-ca-certificates 的调用前面,但它说:

/bin/bash: sudo: command not found

我尝试 RUN su - 然后 returns:

su: must be run from a terminal

我已经成功地使用上面的 docker 文件在 Microsoft 的其他容器上安装了我的公司证书,但是这次失败了。

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

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