docker container systemd integração unitária

3

Eu executo um contêiner app -container do docker com um data -container anexado. Para mantê-lo, mesmo com as atualizações de host do CoreOS, eu uso um arquivo de unidade do systemd como abaixo. Estou um pouco intrigado com o fato de o systemctl restart drone não funcionar.

Execução inicial:

docker rm -f drone_data;
docker rm -f drone;
docker run --name "drone_data" drone_data sh;
docker run -d -p 1234:4321 --volumes-from=drone_data -v /var/run/docker.sock:/var/run/docker.sock --name "drone" drone

arquivo da unidade systemctl:

Description=Drone CI (Docker Container)
Requires=docker.service
After=docker.service

[Service]
User=core
Restart=on-failure
RestartSec=10
ExecStart=/usr/bin/docker start drone
ExecStop=-/usr/bin/docker stop drone

[Install]
WantedBy=multi-user.target
    
por drahnr 22.03.2015 / 10:13

2 respostas

3

O problema é a opção -d , que faz com que o sistema acredite que a unidade do sistema trava e remove o processo, que ainda está sendo executado em segundo plano.

Remover o -d deve funcionar

link

    
por 16.04.2015 / 00:02
0

Eu não criaria uma unidade Systemd para isso. O Docker já cobre esse caso de uso sem adicionar configuração adicional.

Você pode dizer ao daemon do estivador para reiniciar um contêiner no caso de ele existir usando --restart=always no comando run ( link ). Você só precisa ter o daemon do docker ativado ( systemctl enable docker ).

Seu comando usando --restart=always ficaria assim: docker run -d --restart=always -p 1234:4321 --volumes-from=drone_data -v /var/run/docker.sock:/var/run/docker.sock --name "drone" drone

    
por 05.09.2017 / 23:56