Docker возвращает ошибку подключения после настройки в качестве задания cron

У меня есть контейнер докера в ubuntu 16.04, и я хочу периодически запускать команду докера. После проверки того, что команда успешно запускается из командной строки, я установил crontab со следующим:

*/1 * * * * sudo docker run {image-name} python3 /{path-to-scrip}/script.py

Кажется, это работает нормально, пока сценарий не выдаст что-то, после чего crons не будет t run, и докер перестает работать со следующим сообщением:

docker: Error response from daemon: connection error: desc = "transport: dial unix /var/run/docker/containerd/docke
r-containerd.sock: connect: connection refused".

Я читал, что проблема может быть в stdout, и попробовал следующее в crontab:

*/1 * * * * sudo docker run {image-name} python3 /{path-to-scrip}/script.py > /home/logs 2>&1

Это не устранило проблему и файл журнала остается пустым.

Это выполняется на виртуальной машине, и перезапуск экземпляра возвращает меня к исходной точке, где работает докер.

Я не самый опытный системный администратор и подозреваю, что совершил наивную ошибку, но Я не знаю, как это сделать? Что мне нужно было сделать, чтобы настроить cron?

Дополнительная информация

Я не уверен, что это актуально, но это работает в экземпляре облачного движка Google, а брандмауэр настроен на запрет всех внешних подключений.

Обновление

После того, как я догадался, что он работает на CentOS7, задание cron работало несколько часов, но затем скрипт выдал ошибку. Из этого потока я решил запустить docker inspect --format '{{json .State}}' {идентификатор контейнера для неудачного запуска} - это показывает следующее:

    {"Status":"running","Running":true,"Paused":false,"Restarting":false,"OOMKilled":false,"Dead":false,"Pid":8204,"ExitCode":0,"Error":"","StartedAt":"2018-01-02T03:1
5:03.016836367Z","FinishedAt":"0001-01-01T00:00:00Z"}

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

3
задан 2 January 2018 в 12:29
1 ответ

Я не ставлю это здесь как лучший из возможных ответов. Если бы я мог отметить это как правильный ответ, я бы явно не стал, однако для тех, кто сталкивался с чем-то похожим, я обнаружил, что докер image не было очень отказоустойчивым, даже когда я пробовал использовать CentOS 7. Первое, что мне нужно было сделать, это включить в свой сценарий блоки try / catch.

Во-вторых, чтобы разблокировать докер, я создал следующий сценарий bash:

#!/bin/bash
sudo service docker stop
sudo service docker start
sudo docker stop $(docker ps -a -q)
docker rm $(docker ps -a -q)

Это позволило докеру продолжить работу, я понятия не имею, зачем мне понадобилась эта комбинация команд. Я могу добавить команду cron для этого скрипта, если снова увижу ту же ошибку в будущем.

1
ответ дан 3 December 2019 в 07:22

Теги

Похожие вопросы