【问题标题】:chown: /etc/resolv.conf: Read-only file systemchown: /etc/resolv.conf: 只读文件系统
【发布时间】:2022-07-02 11:27:45
【问题描述】:

我有这个 dockerfile 哪个错误 - 我相信它在运行期间出错,因为在 docker user 上设置的权限不足。我不确定在执行RUN 命令后是否应该将用户声明为app。但我不喜欢 docker,而且写这篇文章的人正在度假。

此外,这个docker 文件作为docker-compose up 的一部分执行

有什么见解吗?

ENV CONFIG_ROOT="/etc/"

USER root

COPY . $HOME/myproject

RUN mkdir /etc/myproject && \ 
    cp -R $HOME/myproject/.envs/myproject $CONFIG_ROOT && \
    chown app:app -R $CONFIG_ROOT && \
    chown app:app -R $HOME

USER app

RUN pip install --user myproject/ && \
                rm -rf $HOME/myproject

ENTRYPOINT ["myproject"]

错误

[3/4] 运行 mkdir /etc/myproject && cp -R /home/app/myproject/.envs/myproject /etc/ && chown app:app -R /etc/ && chown app:app -R /家庭/应用程序: #7 0.238 chown: /etc/hosts: 只读文件系统 #7 0.326 chown: /etc/resolv.conf: 只读文件系统

执行程序运行失败 [/bin/sh -c mkdir /etc/myproject && cp -R $HOME/myproject/.envs/myproject $CONFIG_ROOT && chown app:app -R $CONFIG_ROOT && chown app:app -R $ HOME]:退出代码:1

【问题讨论】:

  • 你为什么要 chown /etc 中的每个文件?里面有很多不应该更改的文件。
  • (构建)容器从主机获取一些“特殊”文件(/etc/resolv.conf)。确切的实现似乎取决于版本。 stackoverflow.com/a/41033030/7868781unix.stackexchange.com/a/348406/494713。也就是说,你可能不想成为chown-ing 这种方式。
  • @BMitch 谢天谢地,它当时出错了,没有发生劫持!我同意这在许多方面似乎有点矫枉过正。 @frippe 如果我删除 chown app:app -R $CONFIG_ROOT 它运行正常。感谢您的链接,我现在也对这个问题有了更好的了解。

标签: linux docker


【解决方案1】:

要解决这个问题,请使用 --privileged 创建/运行您的容器:

例如:

docker run --privileged -i --name master --hostname k8s-master -d ubuntu:20.04

【讨论】:

    猜你喜欢
    • 2019-01-23
    • 1970-01-01
    • 2018-08-12
    • 1970-01-01
    • 1970-01-01
    • 2012-03-11
    • 1970-01-01
    • 2018-04-10
    • 1970-01-01
    相关资源
    最近更新 更多