在Docker文件中运行命令

时间:2017-05-05 10:05:19

标签: docker redis dockerfile

当我在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

1 个答案:

答案 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中的其他内核参数可以继承(但其他内核参数不是),因此您应该在主机上设置它们。