在 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
我运行这个命令:
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