gpt4 book ai didi

docker - 无法在 Dockerfile 中运行 sysctl 命令

转载 作者:行者123 更新时间:2023-12-02 17:50:11 35 4
gpt4 key购买 nike

我正在尝试制作我的第一个 dockerfile(我是新手),我需要系统运行命令 sysctl -w kernel.randomize_va_space=0 (它是一个实验室环境。),但我收到错误:

sysctl: setting key "kernel.randomize_va_space": Read-only file system



每当我尝试构建 dockerfile 时,有什么建议可以解决这个问题吗?
FROM avatao/lesp:ubuntu-14.04

USER root

COPY ./solvable/ /

RUN sysctl -w kernel.randomize_va_space=0

VOLUME ["/tmp"]

EXPOSE 2222

WORKDIR /home/user/

USER user

CMD ["/usr/sbin/sshd", "-Df", "/etc/ssh/sshd_config_user"]

最佳答案

由于 Docker 容器共享主机系统的内核及其设置,因此 Docker 容器通常无法运行 sysctl根本。 (尤其不能像这样禁用安全关键设置。)您可以使用 docker run --sysctl 在容器本地基础上设置有限数量的 sysctl。 ,但你提到的不是其中之一。

此外,您也不能在 Dockerfile 中强制进行这样的更改。一个 Docker 镜像只包含一个文件系统和一些相关的元数据,而不包含任何正在运行的进程或主机系统设置。即使这个RUN sysctl工作,如果您重新启动系统然后从镜像启动容器,则该设置将丢失。

鉴于您在此 Dockerfile 中显示的内容——定制的 Linux 内核设置、没有运行特定的应用程序、作为容器进程的开放式 ssh 守护进程——您可能会考虑虚拟机是否更适合您的需求。您可以使用类似 Packer 的工具以与 Dockerfile 构建 Docker 镜像大致相同的方式可重现地构建 VM 镜像。由于 VM 确实具有隔离内核,因此您可以运行该 sysctl命令那里,它会工作,也许通过正常的完整 Linux 安装方法,如 /etc/sysctl.conf文件。

关于docker - 无法在 Dockerfile 中运行 sysctl 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54845095/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com