Как я могу выполнить команду/скрипт после выдачи команды остановки контейнера докеров?

Я хотел бы, чтобы контейнер запускал определенную команду до того, как он остановится после выдачи команды docker container stop. Я нашел вопрос Как выполнить скрипт когда я завершаю Docker-контейнер, но на самом деле он не работает, так как контейнер продолжает падать после его создания, даже если я добавляю бесконечный цикл для выполнения при запуске. Я запускаю контейнер как: docker run -ti -d --name test stop_test

Что может быть не так?

Это мой файл докера:

#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

person Felipe    schedule 24.03.2021    source источник
comment
разве это не решение? stackoverflow.com/questions/35808251 /   -  person Vova    schedule 24.03.2021
comment
Насколько я понимаю, один из ответов ссылается на некоторые примеры, где они рекомендуют использовать скрипт. Это то, что я делаю, но контейнер падает.   -  person Felipe    schedule 24.03.2021
comment
Что вы имеете в виду под сбоями? Какие выходные данные и журналы вы получаете?   -  person BMitch    schedule 24.03.2021
comment
Это было решено! Спасибо!   -  person Felipe    schedule 24.03.2021


Ответы (1)


Проблема была в команде, выполняемой скриптом stop.sh. Я заменил его сценарием бесконечного цикла и работал хорошо.

person Felipe    schedule 24.03.2021