повторный запуск скрипта в док-контейнере - PullRequest
0 голосов
/ 05 июля 2019

Я создал образ Docker, который включает в себя некоторый код Python и сценарий оболочки, который может выполнить его. Он собирается обработать кучу изображений из хост-системы.

Эта команда должна создать новый контактер и запустить его.

sudo docker run -v /host/folder:/container/folder opencv:latest bash /extract-embeddings.sh

В конце контейнер выходит. Если я наберу ту же команду, тогда другой контейнер будет создан и завершен при завершении. Но как правильно использовать контейнеры? Должен ли я использовать перезагрузку, запуск или запуск (а затем очистить покинутые контейнеры после)? Кажется просто неоправданным каждый раз создавать новый контейнер.

Мне просто нужен образ докера, содержащий некоторый код и 3-4 разные команды, которые я могу выполнить в любое время.

И команда запуска docker, похоже, не принимает "bash /extract-embeddings.sh" в качестве параметров, а вещи bash и extract-embeddings.sh являются контейнерами. Поэтому, возможно, я неправильно понимаю жизненный цикл контейнеров или их использование.

редактирование:

Получил для работы с:

docker run -t -d --name opencv -v /host/folder:/container/folder
docker exec -it opencv bash /extract-embeddings.sh

Ответы [ 2 ]

1 голос
/ 05 июля 2019

Вы можете написать Dockerfile, чтобы создать образ Docker и сохранить в нем скрипты-

Dockerfile:

FROM opencv:latest
COPY ./your-script /some_folder

Создать изображение:

docker build -t my_image .

Запустите свой контейнер:

docker run -d --name my_container

Запустить скрипт внутри контейнера:

docker exec -it <container_id_or_name> bash /some_folder/your-script
1 голос
/ 05 июля 2019

Создайте свой собственный образ докера, который начинается с opencv: latest и дайте команду, которую вы запускаете в качестве точки входа.Dockerfile может иметь вид1009 * Это хорошо работает, если вы хотите выполнить только одну команду.Если существует более одной команды, я бы взял подход к созданию образа, который всегда будет выполнять несвязанную команду (например, tail -f </ dev / null).Затем вы можете использовать sudo docker exec -d / bin / bash <cmd-to-run>

для каждой команды

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...