【问题标题】:Docker Centos7: Failed to mount tmpfs as /run: Operation not permittedDocker Centos7:无法将 tmpfs 挂载为 /run:不允许操作
【发布时间】:2020-12-22 08:15:28
【问题描述】:

所以我想让 systemctl 在 docker 容器上工作以进行分配,所以我使用了以下命令:

docker run --privileged -ti  -e container=docker -v /sys/fs/cgroup:/sys/fs/cgroup s3696653/usap-a1 usr/sbin/init

一切运行良好,但我还没有完全阅读规范,我们不应该使用 systemctl。所以我停止了容器并尝试像平常一样运行容器:

docker run -i -t s3696653/usap-a1

但它不再有效。 我得到了错误:

无法将 tmpfs 挂载为 /run:不允许操作

[!!!!!!] 无法挂载 API 文件系统,冻结。

我可以做些什么来让它使用正常的运行命令运行? 提前致谢。

【问题讨论】:

  • 我建议尽可能避免在 Docker 中使用 systemd。它想要管理很多主机级别的事情(在 Docker 中要么是不必要的,要么是不允许的),它需要一些神秘的启动时间选项(在日常使用中你不应该需要 --privileged),而且它往往违反“一个容器一个进程”的原则。

标签: docker centos centos7 docker-container systemctl


【解决方案1】:

虽然建议不要在容器内使用 systemd 或使用特权模式,但建议并不是法令,如果不遵守这封信将导致新泽西州警察在夜间将您拖走并带走。如果您使用 --priviledged 让它运行,接下来尝试看看在没有它的情况下运行它需要什么,因为避免它会使您的设置更加安全。

使用 -v (被 docker official documentation) 称为绑定挂载应该可以帮助您传递所需的卷,而无需 --privileged 选项。事实上,这是来自旧 stackoverflow @987654322 的 systemd-in-docker 示例@问一个类似的问题:

docker run -ti --tmpfs /tmp --tmpfs /run -v /sys/fs/cgroup:/sys/fs/cgroup:ro -p 80:80 local/centos7-systemd

【讨论】:

    猜你喜欢
    • 2019-05-27
    • 1970-01-01
    • 2016-09-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-09
    • 1970-01-01
    相关资源
    最近更新 更多