Docker 睡眠命令有什么作用?
What does the Docker sleep command do?
我找不到关于 Docker sleep 命令的作用的明确解释,有人可以解释一下吗?例如:
docker container run -d alpine sleep 1d
我在网上看过,但找不到简单的解释。
docker container run -d --name mycontainer myimage:mytag sleep infinity
镜像名称后的最后一部分(即sleep infinity
)不是docker命令,而是发送到容器以覆盖其默认命令(在Dockerfile
中设置)的命令).
文档摘录(您可以在终端中输入 man sleep
,它可能因实施而异)
Pause for NUMBER seconds. SUFFIX may be 's' for seconds (the default),
'm' for minutes, 'h' for hours or 'd' for days
令我惊讶的是,参数 infinity
没有记录在我的实现中,但仍然被接受。这很容易理解:它会无限期地暂停(即直到命令为 stopped/killed)。在您上面的示例中,它将暂停一天。
使用 sleep
作为 运行 一个 docker 容器的命令的通常原因是什么?
A docker 容器将一直存在,直到它 运行s 完成命令。此命令通常在用于构建映像的 Dockerfile
中设置(在 CMD
节中),并且可以在命令行上覆盖(如上例所示)。
许多基本映像(如 debian 的基本 OS、ubuntu、centos...)将 运行 和 shell 作为默认命令(通常 bash
或 sh
)。如果您尝试使用其默认命令从该图像生成一个容器,它将一直存在到 shell 退出。
当 运行 交互式地使用这样的图像时(即使用 docker container run -it .....
),它将 运行 直到您结束 shell 会话。但是如果你想在后台启动它(即使用 docker container run -d ...
)它会立即退出,留下一个停止的容器。
在这种情况下,您可以通过用一个长 运行ning 命令覆盖默认命令来“伪造”一个长 运行ning 服务,该命令基本上什么都不做,只等待容器停止。两个广泛使用的命令是 sleep infinity
(或任何适合您需要的时间段)和 tail -f /dev/null
像这样启动容器后,您可以使用它来测试您需要的任何内容。最常见的方法是 运行 一个交互式 shell 反对它:
# command will depend on shells available in your image
docker exec -it mycontainer [bash|sh|zsh|ash|...]
完成 experimentation/test 后,您可以停止并回收容器
docker container stop mycontainer
docker container rm mycontainer
我找不到关于 Docker sleep 命令的作用的明确解释,有人可以解释一下吗?例如:
docker container run -d alpine sleep 1d
我在网上看过,但找不到简单的解释。
docker container run -d --name mycontainer myimage:mytag sleep infinity
镜像名称后的最后一部分(即sleep infinity
)不是docker命令,而是发送到容器以覆盖其默认命令(在Dockerfile
中设置)的命令).
文档摘录(您可以在终端中输入 man sleep
,它可能因实施而异)
Pause for NUMBER seconds. SUFFIX may be 's' for seconds (the default), 'm' for minutes, 'h' for hours or 'd' for days
令我惊讶的是,参数 infinity
没有记录在我的实现中,但仍然被接受。这很容易理解:它会无限期地暂停(即直到命令为 stopped/killed)。在您上面的示例中,它将暂停一天。
使用 sleep
作为 运行 一个 docker 容器的命令的通常原因是什么?
A docker 容器将一直存在,直到它 运行s 完成命令。此命令通常在用于构建映像的 Dockerfile
中设置(在 CMD
节中),并且可以在命令行上覆盖(如上例所示)。
许多基本映像(如 debian 的基本 OS、ubuntu、centos...)将 运行 和 shell 作为默认命令(通常 bash
或 sh
)。如果您尝试使用其默认命令从该图像生成一个容器,它将一直存在到 shell 退出。
当 运行 交互式地使用这样的图像时(即使用 docker container run -it .....
),它将 运行 直到您结束 shell 会话。但是如果你想在后台启动它(即使用 docker container run -d ...
)它会立即退出,留下一个停止的容器。
在这种情况下,您可以通过用一个长 运行ning 命令覆盖默认命令来“伪造”一个长 运行ning 服务,该命令基本上什么都不做,只等待容器停止。两个广泛使用的命令是 sleep infinity
(或任何适合您需要的时间段)和 tail -f /dev/null
像这样启动容器后,您可以使用它来测试您需要的任何内容。最常见的方法是 运行 一个交互式 shell 反对它:
# command will depend on shells available in your image
docker exec -it mycontainer [bash|sh|zsh|ash|...]
完成 experimentation/test 后,您可以停止并回收容器
docker container stop mycontainer
docker container rm mycontainer