当我在Docker文件中包含以下命令时,我收到错误消息。我正在尝试创建一个docker文件来为Redis创建我的基本映像,这个命令有助于redis性能。
public void registerCustomer(Customer cust)
{
customerRepo.save(cust);
}
当我尝试构建docker文件来创建图像时,我得到的错误是:
RUN echo 4096 > /writable-proc/sys/net/core/somaxconn
有关如何运行此命令的任何建议?我实际上想在我的Dockerfile中运行以下命令:
/bin/sh: 1: cannot create /writable-proc/sys/net/core/somaxconn: Directory nonexistent
以下是我的Redis图像的整个Docker文件:
RUN echo 4096 > /writable-proc/sys/net/core/somaxconn
RUN echo 'vm.overcommit_memory = 1' >> /etc/sysctl.conf
RUN echo never > /sys/kernel/mm/transparent_hugepage/enabled
答案 0 :(得分:3)
只能在运行时使用--sysctl选项设置sysctl&#s; s。从docker-run(1)手册:
Configure namespaced kernel parameters at runtime IPC Namespace - current sysctls allowed: kernel.msgmax, kernel.msgmnb, kernel.msgmni, kernel.sem, kernel.shmall, kernel.shmmax, kernel.shmmni, kernel.shm_rmid_forced Sysctls beginning with fs.mqueue.* If you use the --ipc=host option these sysctls will not be allowed. Network Namespace - current sysctls allowed: Sysctls beginning with net.* If you use the --network=host option these sysctls will not be allowed.
例如,对于/ proc / sys / net / core / somaxconn,您可以使用--sysctl net.core.somaxconn=4096
。
procfs和sysfs中的其他内核参数可以继承(但其他内核参数不是),因此您应该在主机上设置它们。