【问题标题】:How can I make the docker container to run a script every time when the container restart?每次重新启动容器时,如何使 docker 容器运行脚本?
【发布时间】:2020-01-23 20:59:07
【问题描述】:

我知道我可以使用 dockerfile 的 CMD RUNENTRYPOINT 命令在容器启动时运行脚本,但是如何让容器在每次容器因故障重新启动时运行脚本?

【问题讨论】:

    标签: docker dockerfile


    【解决方案1】:

    每次容器启动或重新启动时都会运行入口点。通常的做法是将启动配置放在一个 shell 脚本中,然后 execs 是应用程序的“真实”入口点。 (请参阅 What purpose does using exec in docker entrypoint scripts serve? 了解为什么 exec 很重要)。

    请记住,docker 实际上只是文件系统、进程和网络命名空间的包装器。除了重新运行它最初启动的同一进程之外,它无法以任何方式重新启动您的容器。

    您可以通过类似这样的调用自己尝试:

    docker run  -d --restart=always --entrypoint=sh alpine -c "sleep 5; echo Exiting; exit"
    

    如果你 docker logs -f 那个容器,你会看到 Exiting 每 5 秒出现一次。请注意,容器停止也会停止随后的日志,因此您必须再次运行它才能看到下一次重新启动。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-05-20
      • 2018-05-16
      • 1970-01-01
      • 1970-01-01
      • 2022-01-09
      • 2018-06-29
      • 2015-03-21
      相关资源
      最近更新 更多