Docker在现有的docker容器上运行的是什么?

时间:2018-04-12 07:36:47

标签: docker redis sysctl

我正在尝试在正在运行的docker容器中更改somaxconn的值。我正在使用这个命令:

docker run --net=container:redis --sysctl net.core.somaxconn=65535 bash

我已检查此命令将somaxconn的值从 128 更改为正在运行的docker容器中的 65535

因为docker run命令会创建并启动一个新容器,所以,此命令是否会重新创建并启动我现有的conatiner?它是否使用somaxconn更改重新启动正在运行的容器,还是更改了正在运行的docker docker容器中的值?

但是我想补充的一点是,在运行上面的命令之后,somaxconn的值发生了变化,当我做了docker ps时,它表明同一个容器已经很久以前运行了,所以,是吗这意味着它改变了已经运行的容器中的值?

2 个答案:

答案 0 :(得分:1)

docker run将始终启动一个新容器。如果您已经有一个容器在运行,它将不受docker run命令的影响。

您可以查看docker exec命令。这允许您在现有容器中执行命令。但是,这不允许您更改原始容器启动的参数(例如,更改--sysctl参数)。要更改这些参数,必须删除并重新创建具有所需参数的容器。

请在此处查看docker run和docker exec的文档: https://docs.docker.com/engine/reference/commandline/run/ https://docs.docker.com/engine/reference/commandline/exec/

答案 1 :(得分:1)

docker run命令将始终创建一个新容器。

所以你可以做一件事。执行以下命令以更改正在运行的容器中的值。

#>docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED                 STATUS              PORTS                     NAMES
80eb3dc8438b        abcxyz               "docker-entrypoint.sâ¦"   22 hours     ago      Up 22 hours                     abcxyzfriendlyname

查找容器名称或ID(例如80eb3dc8438b) 然后启动以下命令:(确保此时容器正在运行)。

#>docker exec 80eb3dc8438b   sysctl net.core.somaxconn=65535

我不确定它是否会在容器中保留数据,还是仅在会话中可用。