我想在docker容器中运行命令。如果该命令花费了3秒钟以上的时间,则应删除该容器。
我以为可以通过使用中的--stop-timeout
option 来实现此目标docker run
。
但是我的命令似乎出了点问题。
例如,docker run -d --stop-timeout 3 ubuntu:14.04 sleep 100
命令创建一个持续3秒以上的Docker容器。第三秒后,html" target="_blank">容器不会停止或删除。
我是否误解了--stop-timeout
?
该文件说:
--stop-timeout
停止容器的超时时间(以秒为单位)
这是我的Docker版本:
Client:
Version: 17.12.0-ce
API version: 1.35
Go version: go1.9.2
Git commit: c97c6d6
Built: Wed Dec 27 20:03:51 2017
OS/Arch: darwin/amd64
Server:
Engine:
Version: 17.12.0-ce
API version: 1.35 (minimum version 1.12)
Go version: go1.9.2
Git commit: c97c6d6
Built: Wed Dec 27 20:12:29 2017
OS/Arch: linux/amd64
Experimental: true
API版本比1.25更新。
该--stop-timeout
选项是docker在使用docker stop
命令时等待容器停止的最长时间。
当通知容器或命令运行完成时,容器将停止,因此,如果将睡眠时间从100更改为1,您将看到容器在第二秒后停止。
我建议您执行的操作是将ENTRYPOINT
容器的更改为您创建的脚本,该脚本将执行所需的脚本,并从内部跟踪执行时间,并在超时时退出。
之后,您可以使用--rm
脚本启动后将其删除的选项来启动容器。
一个小例子。
Dockerfile:
FROM ubuntu:16.04
ADD ./script.sh /script.sh
ENTRYPOINT /script.sh
script.sh:
#!/bin/bash
timeout=5
sleep_for=1
sleep 100 &
find_process=$(ps aux | grep -v "grep" | grep "sleep")
while [ ! -z "$find_process" ]; do
find_process=$(ps aux | grep -v "grep" | grep "sleep")
if [ "$timeout" -le "0" ]; then
echo "Timeout"
exit 1
fi
timeout=$(($timeout - $sleep_for))
sleep $sleep_for
done
exit 0
使用以下命令运行它:
docker build -t testing .
docker run --rm testing
该脚本将sleep 100
在后台执行,检查其是否仍在运行以及是否已达到5秒的超时,然后退出。
这可能不是最好的方法,但是如果您想做一些简单的事情可能会有所帮助。
问题内容: 有些sql写得不好。有时,搜索需要花费数小时的申请时间。当一个应用程序(可能是一个网站)提交运行时间很长的查询时,我必须重新启动mysql。如何在数据库端限制sql查询的执行时间? 问题答案: 要在很长的执行时间后自动终止MySQL中的查询,请执行以下操作: 创建一个存储过程为: 然后在curosr的循环中执行以下操作: 创建,只是里面的上述步骤。 注意:KILL QUERY只是杀死查
我们正在尝试设置SonarQube服务器(5.6),以便任何人都可以使用声纳扫描仪运行声纳分析,并将结果发布到SonarQube。然而,我们希望限制用户只发布特定项目密钥的分析,以防止弄乱现有的项目历史记录。 我们在权限设置上玩了很久。让我们假设我们有一个项目密钥,一个组,一个组,一个组。所有的分析都是在用户是某个组织的成员的情况下发布的。除了执行分析,我们试图添加和删除它之外,某些组被授予了某些
问题内容: 关于PHP中的函数,我有两个问题: 睡眠时间是否会影响我的PHP脚本的最大执行时间限制?有时,PHP显示消息“超过30秒的最大执行时间”。如果我使用此消息会出现吗? 使用该功能有没有风险?它会消耗很多CPU性能吗? 问题答案: 您应该尝试一下,只需让脚本hibernate超过您的最大执行时间即可。 Spoiler:在Linux下,睡眠时间被忽略,但是在Windows下,它计为执行时间。
若要让儿童使用PS Vita,监护人可依个人需要限制可播放的内容或可使用的功能。 此外,PlayStation®Network也准备了在主账号看管下,一定年龄以下的用户可使用的子账号。 详情请参阅「创建PlayStation®Network账号」。 可执行的操作 内容 如何设定限制 限制启动设有年龄限制的应用程序或视频影像等内容 除了[关]以外另有11个等级可设定。根据PS Vita内设定的等级,
问题内容: 我成功使用以下触发器来限制存储在SQLite数据库表 位置中 的行数。数据库表充当Android应用程序中的缓存。 同时,我添加了第二个触发器,使我可以行。-关于该主题的讨论可以在另一个主题中找到。第二个触发器需要一个在其上执行的触发器。 由于不再在 位置 上执行,而是在 locations_view 上执行,因此上述触发器不再起作用。如果我将触发器应用于以下错误消息。 问题: 如何更
问题内容: 您好,可以仅将时间限制设置为命令或功能,例如: 我只想将时间限制设置为function1。 有退出set_time_limit,但我认为这将整个脚本的时间限制。有人有想法吗? 问题答案: set_time_limit()确实在全局运行,但是可以在本地重置。 设置允许脚本运行的秒数。如果达到此目的,脚本将返回致命错误。默认限制为30秒,如果存在,则为php.ini中定义的max_exec