描述

支持在容器的生命周期中,运行OCI标准hooks。包括三种类型的hooks:

  • prestart hook:在执行isula start命令之后,而在容器的1号进程启动之前,被执行。
  • poststart hook:在容器1号进程启动之后,而在isula start命令返回之前,被执行。
  • poststop hook:在容器被停止之后,但是在停止命令返回之前,被执行。

OCI hooks的配置格式规范如下:

  • path:格式是字符串,必须项,必须为绝对路径,指定的文件必须有可执行权限。
  • args:格式是字符串数组,可选项,语义和execv的args一致。
  • env:格式是字符串数组,可选项,语义和环境变量一致,内容为键值对,如:”PATH=/usr/bin”。
  • timeout:格式是整数,可选项,必须大于0,表示钩子执行的超时时间。如果钩子进程运行时间超过配置的时间,那么钩子进程会被杀死。

hook的配置为json格式,一般存放在json结尾的文件中,示例如下:

  1. {
  2. "prestart": [
  3. {
  4. "path": "/usr/bin/echo",
  5. "args": ["arg1", "arg2"],
  6. "env": [ "key1=value1"],
  7. "timeout": 30
  8. },
  9. {
  10. "path": "/usr/bin/ls",
  11. "args": ["/tmp"]
  12. }
  13. ],
  14. "poststart": [
  15. {
  16. "path": "/usr/bin/ls",
  17. "args": ["/tmp"],
  18. "timeout": 5
  19. }
  20. ],
  21. "poststop": [
  22. {
  23. "path": "/tmp/cleanup.sh",
  24. "args": ["cleanup.sh", "-f"]
  25. }
  26. ]
  27. }