如何在发出 "docker container stop" 命令后执行 command/script?
How can I execute a command/script after issuing "docker container stop" command?
我希望容器在发出命令“docker 容器停止”后停止之前运行 一个确定的命令。我找到了问题 ,但它并没有真正起作用,因为容器在创建它后一直崩溃,即使我添加了一个无限循环以在 运行 时执行。
我运行将容器设置为:docker 运行 -ti -d --name test stop_test
有什么问题吗?
这是我的 docker 文件:
#Starting with a ubuntu image
FROM ubuntu
#Installing all dependencies
#Copying files
COPY loop.sh .
COPY commands.sh .
COPY stop.sh .
#Running new container
RUN chmod +x commands.sh
RUN chmod +x stop.sh
CMD ["./commands.sh"]
#Adding Entrypoint
ENTRYPOINT [ "/bin/bash", "-c", "./stop.sh" ]
停止脚本是:
#!/bin/bash
#Defining cleanup procedure
cleanup() {
echo "Container stopped. Running script..."
}
#Trapping the SIGTERM
trap 'cleanup' SIGTERM
#Execute a command
less /etc/password &
#Wait
wait $!
#Cleanup
cleanup
循环脚本:
#!/bin/bash
while :
do
sleep 300
done
命令脚本是:
#!/bin/bash
./loop.sh
问题出在 stop.sh 脚本执行的命令中。我用无限循环脚本替换了它并且运行良好。
我希望容器在发出命令“docker 容器停止”后停止之前运行 一个确定的命令。我找到了问题
有什么问题吗?
这是我的 docker 文件:
#Starting with a ubuntu image
FROM ubuntu
#Installing all dependencies
#Copying files
COPY loop.sh .
COPY commands.sh .
COPY stop.sh .
#Running new container
RUN chmod +x commands.sh
RUN chmod +x stop.sh
CMD ["./commands.sh"]
#Adding Entrypoint
ENTRYPOINT [ "/bin/bash", "-c", "./stop.sh" ]
停止脚本是:
#!/bin/bash
#Defining cleanup procedure
cleanup() {
echo "Container stopped. Running script..."
}
#Trapping the SIGTERM
trap 'cleanup' SIGTERM
#Execute a command
less /etc/password &
#Wait
wait $!
#Cleanup
cleanup
循环脚本:
#!/bin/bash
while :
do
sleep 300
done
命令脚本是:
#!/bin/bash
./loop.sh
问题出在 stop.sh 脚本执行的命令中。我用无限循环脚本替换了它并且运行良好。