Crontab无法重新启动Docker容器。

7
我有一个容器,它在Root账户下运行,我可以使用以下命令启动它:
docker start containername

我希望通过crontab定时启动相关的it技术任务。作为管理员,我使用以下命令:

crontab -e

并设置一个类似这样的条目:

* * * * * /usr/bin/docker start containername

但这不起作用。我还尝试了

* * * * * root /usr/bin/docker start containername

没有什么运气。

有人知道我怎样才能让这个工作吗?


你有收到任何错误吗?你有检查日志吗? - BMitch
容器是否存在? 以 root 身份检查 docker ps -a。如果未列出,则 docker start 将无法工作。您可能需要使用 docker run 运行容器。但正如 @Bmitch 所说,我们需要日志或错误信息,否则我们只能猜测。 - CommodoreBeard
docker start 用于启动一个已退出的容器,那么容器实际上执行了什么? - Tarun Lalwani
3个回答

5

我按照以下步骤成功完成了操作:

$ crontab -e

然后我设置了一个容器,每5分钟重启一次:

*/5 * * * * docker restart <containername>

0
有两个选项。
docker container restart CONTAINER_NAME

docker restart CONTAINER_NAME
  1. sudo crontab -e
  2. 0 1 * * * docker container restart CONTAINER_NAME

您可以使用下一个命令查看:

sudo crontab -l

使用 Docker 版本 19.03.6,构建版本为 369ce74a3c 进行测试


你使用sudo来编辑crontab有什么原因吗?如果你的用户不需要sudo访问docker命令,那么在crontab上就不需要sudo了。这里是一个链接,确保你的用户不需要sudo来访问docker命令:https://docs.docker.com/engine/install/linux-postinstall/#manage-docker-as-a-non-root-user - Trevor Vance
示例中包含sudo是因为有些情况下它是必需的,但如果您不需要它,则不能使用它,sudo仅用于以管理员权限执行进程。 - Luis Hernández
作为“Linux最佳实践”,您应该默认不使用sudo。重新启动Docker容器绝对是不需要sudo的情况。 - Trevor Vance

0

重新启动Docker需要sudo权限。我使用以下方法: sudo crontab -e 00 23 * * * docker restart dbprod


我可能错了,但是它不应该需要sudo权限。我认为你只需要查看这个链接:https://docs.docker.com/engine/install/linux-postinstall/#manage-docker-as-a-non-root-user - Trevor Vance

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接