我有一个非 root 用户运行的 docker 容器以提高安全性,但它似乎无法访问我与之共享的 secret :
Importing account from "/run/secrets/authority.priv.json" failed: Permission denied (os error 13)
我在 docker compose 中尝试了不同的解决方案:
1.设置uid和gid为1000(uid/gid如果是容器内的用户)
2.设置模式为0444甚至0777
但是这些都没有奏效,只有使用 root 才能使用这些 secret 。
任何的想法?
额外的问题:在 kubernetes 中会出现同样的问题吗?
码头文件:
FROM parity/parity:v2.2.1
LABEL maintainer="vincent@serpoul.com"
# SAD but It seems impossible to read the secrets otherwise
USER root
VOLUME ["/home/parity/.local/share/io.parity.ethereum"]
ADD ./configPoANode.toml /home/parity/configPoANode.toml
ADD ./PoA.json /home/parity/PoA.json
ADD ./entrypoint.sh /home/parity/entrypoint.sh
ENTRYPOINT ["/home/parity/entrypoint.sh"]
附录:repository (在 dockerfile 中使用 ROOT 用户):
最佳答案
使用 RUN --mount=type=secret,id=mysecret,uid=1000 cat /run/secrets/mysecret
哪里mysecret
是你传递给 docker build --secret id=mysecret,src=authority.priv.json
和 uid
是 uid
奇偶校验用户。
关于非 root 用户的 docker secret ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53385930/