我正在尝试制作我的第一个 dockerfile(我对此很陌生),并且我需要系统来运行命令sysctl -w kernel.randomize_va_space=0
(它是一个实验室环境。),但我收到错误:
sysctl:设置键“kernel.randomize_va_space”:只读文件
系统
每当我尝试构建 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
根本不。 (您尤其不能禁用像这样的安全关键设置。)您可以在容器本地基础上设置有限数量的 sysctlsdocker run --sysctl https://docs.docker.com/engine/reference/commandline/run/#configure-namespaced-kernel-parameters-sysctls-at-runtime,但你提到的不是其中之一。
此外,您也不能在 Dockerfile 中强制进行这样的更改。 Docker 映像仅包含文件系统和一些关联的元数据,而不包含任何正在运行的进程或主机系统设置。即使这RUN sysctl
有效,如果您重新启动系统,然后从映像启动容器,该设置将会丢失。
鉴于您在此 Dockerfile 中显示的内容(定制的 Linux 内核设置、没有运行特定应用程序、开放式 ssh 守护进程作为容器进程),您可能会考虑虚拟机是否更适合您的需求。您可以使用类似的工具Packer https://packer.io/以与 Dockerfile 构建 Docker 映像大致相同的方式可重复地构建 VM 映像。由于虚拟机does有一个独立的内核,你可以运行它sysctl
在那里输入命令,它就会工作,也许可以通过正常的完整 Linux 安装方法,例如/etc/sysctl.conf
file.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)