【问题标题】:Docker container failed because x.cert permission deniedDocker 容器失败,因为 x.cert 权限被拒绝
【发布时间】:2019-08-29 13:13:39
【问题描述】:

我正在尝试将 SSL 证书和密钥添加到 Docker 容器中以在其中使用。我不想使用 COPY Dockerfile 命令,而是使用了“Bind mount a volume”,如下所示

docker run  -p 443:443 -v grafana-storage:/var/lib/grafana -v /etc/ssl/certs/platform-loc/x.crt:/etc/grafana/x.crt -v /etc/ssl/certs/platform-loc/x.key:/etc/grafana/x.key -e "GF_INSTALL_PLUGINS=yesoreyeram-boomtable-panel"  grafana_app

但是上一个命令失败并出现以下错误

t=2019-08-28T17:33:40+0000 lvl=info msg="HTTP Server Listen" logger=http.server address=0.0.0.0:443 protocol=https subUrl= socket=
t=2019-08-28T17:33:40+0000 lvl=eror msg="Stopped HTTPServer" logger=server reason="open /etc/grafana/x.crt: permission denied"
t=2019-08-28T17:33:40+0000 lvl=info msg="Stopped provisioningServiceImpl" logger=server reason="context canceled"
t=2019-08-28T17:33:40+0000 lvl=eror msg="Server shutdown" logger=server reason="open /etc/grafana/x.crt: permission denied"

这是我的 Dockerfile 的内容

FROM grafana/grafana
COPY config /config
USER root
RUN apt-get update && apt-get install -y vim
RUN cp /config/x.toml /etc/grafana/x.toml &&\
    cp /config/grafana.ini /etc/grafana/grafana.ini
ENTRYPOINT [ "/run.sh" ]

有人可以帮我解决这个问题吗?

【问题讨论】:

  • 我认为 docker 守护进程无法访问路径 /etc/ssl/certs/platform-loc/x.crt ,尝试使用 sudo 运行 docker ..
  • root 应该可以访问这些文件。服务器是否以其他用户身份运行?
  • @SoumenMukherjee 我尝试使用 sudo 运行 docker,但没有解决问题:(

标签: docker ssl grafana


【解决方案1】:

当容器启动时,所有文件都从主机操作系统继承它们的所有者、组和文件掩码。

对于该证书,它可能是 root:root(或 0:0),只有用户可读。在容器内,用户是 grafana(id 为 472)。

> docker run -it --rm --entrypoint bash grafana/grafana
grafana@8edd34dc044d:/usr/share/grafana$ whoami
grafana
grafana@8edd34dc044d:/usr/share/grafana$ grep grafana /etc/passwd
grafana:x:472:472::/home/grafana:/bin/sh

因此,用户 grafana 无法读取 root 拥有的文件。

您可以将文件的权限更改为所有人都可以读取,这样可以解决问题,但同时会损害主机上的文件。

或者,您可以将映像中的用户更改为 root,但这被认为是不好的做法。

您选择哪种解决方案取决于您。也许这个证书可以让世界可读。

【讨论】:

    【解决方案2】:

    我受到 Grafana docs 的启发来寻找答案,基本上我必须运行

    chown 472:472 x.*
    

    现在问题解决了

    文档:https://grafana.com/docs/installation/docker/

    【讨论】:

    猜你喜欢
    • 2019-01-06
    • 1970-01-01
    • 1970-01-01
    • 2019-07-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-12
    • 2018-10-31
    相关资源
    最近更新 更多