O Docker retorna erro de conexão após ser configurado como trabalho cron

3

Eu tenho um contêiner docker no Ubuntu 16.04 e quero executar um comando docker periodicamente. Depois de verificar o comando é executado com sucesso a partir da linha de comando eu configurei um crontab com o seguinte:

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

Isso parece funcionar corretamente até que o script exiba algo após o qual os crons não serão executados e impedirá que a janela de encaixe trabalhe com a seguinte mensagem:

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

Eu li que stdout pode ser o problema e eu tentei o seguinte no crontab:

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

Isso não resolveu o problema e o arquivo de registros permanece vazio.

Isso está sendo executado em uma máquina virtual, e a reinicialização da instância me leva de volta à estaca zero onde o docker é executado.

Eu não sou o administrador de sistemas mais experiente e suspeito que cometi um erro ingênuo, mas não sei como progredir isso? O que devo ter feito para configurar o cron?

Informações adicionais

Não tenho certeza se é relevante, mas isso está sendo executado em uma instância do mecanismo do Google Cloud e o firewall está configurado para proibir todas as conexões externas.

Atualizar

Depois de um palpite sobre a execução do CentOS7, a tarefa do cron funcionou por várias horas, mas o script deu um erro. O erro é algo a ser esperado do script, mas isso levou à mesma mensagem do docker e o cron não funciona mais.

Outras atualizações De este tópico , decidi executar o docker inspect --format '{{json .State}}' {ID do contêiner for failed run} - isso mostra o seguinte:

    {"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"}

Acho que só preciso descobrir como impedir que o processo seja executado para desligar o contêiner.

    
por goose 01.01.2018 / 13:33

1 resposta

1

Eu não estou colocando isso aqui como a melhor resposta possível, se eu pudesse marcar isso como a resposta correta que eu claramente não faria, no entanto, para alguém que se deparar com algo semelhante, descobri que a imagem docker não era muito tolerante a falhas , mesmo quando eu experimentei o CentOS 7. A primeira coisa que eu precisei fazer foi liberalmente incluir blocos try / catch no meu script.

Em segundo lugar, para desbloquear a janela de encaixe, criei o seguinte script:

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

Isso permitiu que a janela de encaixe continuasse sendo executada, não sei por que essa combinação de comandos foi necessária no meu caso. Eu posso adicionar um comando cron para este script se eu vir o mesmo erro novamente no futuro.

    
por 02.01.2018 / 23:51