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

我正在尝试制作我的第一个 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文件。

https://stackoverflow.com/questions/54845095/

相关文章:

docker - Tensor Flow服务docker无效字段

python - OpenCV和Python:knnMatch参数问题

python - 使用 slider 编辑颜色值

macos - 带有OpenCV Mac的CMake(小牛)

android - 使用JNI获取arrayList的元素

opencv - 如何从opencv中的上下文获取设备列表

android - 如何使用静态OpenCV在Android中使用JavaCV的静态方法

opencv - ANN-人工神经网络训练

opencv - 如何使用远距离的一个点(使用opencv)来计算相机方向?

opencv - OpenCV直方图反投影替代