我正在尝试制作我的第一个 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"]
Run Code Online (Sandbox Code Playgroud)
Dav*_*aze 15
由于 Docker 容器共享主机系统的内核及其设置,因此 Docker 容器通常根本无法运行sysctl。(您尤其不能像这样禁用安全关键设置。)您可以在容器本地基础上使用 设置有限数量的 sysctl docker run --sysctl,但您提到的不是其中之一。
此外,您也不能在 Dockerfile 中强制进行这样的更改。一个 Docker 镜像只包含一个文件系统和一些相关的元数据,而不包含任何正在运行的进程或主机系统设置。即使这RUN sysctl有效,如果您重新启动系统然后从映像启动容器,该设置也会丢失。
鉴于您在此 Dockerfile 中显示的内容——定制的 Linux 内核设置、没有运行特定的应用程序、作为容器进程的开放式 ssh 守护进程——您可能会考虑虚拟机是否更适合您的需求。您可以使用Packer 之类的工具以与 Dockerfile 构建 Docker 镜像大致相同的方式可重现地构建 VM 镜像。由于 VM确实有一个独立的内核,您可以在sysctl那里运行该命令,它会起作用,也许通过正常的完整 Linux 安装方法(如/etc/sysctl.conf文件)。
| 归档时间: |
|
| 查看次数: |
19031 次 |
| 最近记录: |