容器 RHEL 6.6 中的 Docker 不可能设置 sysctl 参数
Posted
技术标签:
【中文标题】容器 RHEL 6.6 中的 Docker 不可能设置 sysctl 参数【英文标题】:Docker impossible setup sysctl parameter in container RHEL 6.6 【发布时间】:2017-10-16 07:56:47 【问题描述】:我创建了 RHEL 6.6 的映像(来自 registry.access.redhat.com/rhel6.6),但是当我运行容器时:
docker run --privileged --rm -h "DAN" --net net_custom --ip 200.0.2.3 -t -i test_beta_4 bash
我尝试在 sysctl.conf 中加载一些参数,它返回以下错误:
error: "net.core.rmem_default" is an unknown key
error: "net.core.wmem_default" is an unknown key
error: "net.core.rmem_max" is an unknown key
error: "net.core.wmem_max" is an unknown key
我在 /proc/sys/net/core/ 下检查,发现这些文件丢失了。 那么如何更改这些网络内核设置? 我在我的 Mac 上运行 docker。 谢谢
【问题讨论】:
你有没有尝试过类似的,在这个文档中docs.docker.com/engine/reference/commandline/run/…docker run --sysctl net.ipv4.ip_forward=1 someimage
?
是的,我确实尝试过,但这是输出:docker:来自守护进程的错误响应:oci 运行时错误:container_linux.go:247:启动容器进程导致“process_linux.go:359:容器初始化导致\"打开 /proc/sys/net/core/rmem_default: 没有这样的文件或目录\"".
【参考方案1】:
同样的问题出现在这个特定的 github 问题上:https://github.com/moby/moby/issues/30778
似乎这些 net.core 参数不是内核能够放入命名空间的东西。出现错误消息是因为 docker 正在尝试设置这些,但在内核中拒绝了它。
在撰写本文时,该问题目前处于活跃状态,看起来 docker 开发人员将在内核团队中循环。
作为一种解决方法,您似乎应该能够在您的主机上全局设置这些设置,然后应该扩展到您的所有容器。
【讨论】:
没有解决方法......这是一个很大的限制,因为我不能像我应该做的那样在不同的平台上运行我的容器。 您是否尝试在主机上全局设置选项? 嗨,对不起,这是什么意思? 与其尝试将其设置在容器内,不如将其设置在主机上。一旦在主机上设置,因为它是一个全局选项,它应该适用于主机和所有容器。由于 linux 内核似乎不支持此选项的名称间距,因此将其设置为主机范围将是唯一的可能性。 问题是我在 Mac 上运行 docker,我无法设置这些参数。我应该尝试使用 rhel,但如果我想在不同的平台上导出我的项目,我将再次面临同样的问题。以上是关于容器 RHEL 6.6 中的 Docker 不可能设置 sysctl 参数的主要内容,如果未能解决你的问题,请参考以下文章
在 Centos 6.6 docker 容器中安装厨师服务器