Como inicio automaticamente o contêiner do docker na reinicialização do sistema?

46

Como hospedei um site WordPress em contêineres de docker e quero que esses contêineres sejam iniciados sempre no momento da inicialização, é necessário fazê-lo manualmente.

nayan tiwari
fonte
qual versão do ubuntu você usa?
Maythux
o servidor ubuntu 14,04
tiwari Nayan
Isso foi solicitado no ServerFault .
Dan Dascalescu
Crossposted. Escolha um site, não muitos, para publicar coisas.
Thomas Ward

Respostas:

34

Até agora, acho que não há uma maneira de fazer isso normalmente. Uma solução complicada é usar a política de reinicialização

sudo docker run --restart=always -d your_image

Isso significa que, sempre que você desligar, isso sairá do seu contêiner e, assim que você iniciar o host, isso levará a reiniciar a janela de encaixe.

Maythux
fonte
como eu pesquisar sobre isso há algumas ferramentas de automação como chefe, mas não sei como usá-los
tiwari Nayan
Ainda é experimental para o Ubuntu github.com/bflad/chef-docker/blob/master/README.md
Maythux
2
Por que não usar as possibilidades do sistema para isso? tanto arrivista e systemd pode lidar com isso perfeitamente
Reishin
29

É um caso de uso muito comum para adicionar a política de reinicialização em um contêiner existente.

Isso pode ser feito com o seguinte comando: docker update --restart {no,on-failure,unless-stopped,always} container_name

Mais detalhes: Docker - Iniciar contêineres automaticamente

SlimIT
fonte
2
Isso resolveu meu problema perfeitamente! Eu tinha um contêiner no meu banco de dados e queria que ele iniciasse quando meu Mac fosse iniciado. Ao especificar que sua imagem sempre foi reiniciada (a menos que parada), isso funcionou!
Colin
21

Como o ubuntu 15 agora suporta systemd, exemplo para este gerenciador:

someservicename.service

[Unit]
Description=Some service
Requires=docker.service
After=docker.service

[Service]
Restart=always
ExecStart=/usr/bin/docker start -a container_name
ExecStop=/usr/bin/docker stop -t 2 container_name

[Install]
WantedBy=multi-user.target

Mais disponível no site docker

PS Configuração muito fofa :)

Reishin
fonte
4

O que fiz foi usar os arquivos Upstart.

Você pode encontrar alguns exemplos e outras soluções no site do Docker .

Crie um arquivo como esse em / etc / init:

Description "My container"
start on filesystem and started docker
stop on runlevel [!2345]
respawn
script
   /usr/bin/docker start -a mycontainer
end script
pre-stop script
  /usr/bin/docker stop mycontainer
end script

Observe que, a partir do Docker 1.2, existem políticas de reinicialização que também podem ajudar a reiniciar automaticamente os contêineres quando o serviço do Docker é executado (após a inicialização, por exemplo).

Pessoalmente, uso o fantoche para provisionar minha estação de trabalho e uso este módulo Docker para criar automaticamente os scripts de inicialização mais completos (iniciar, parar, reiniciar, limpar opções ...)

aklmie
fonte
1
o iniciante está morto. use systemd.
AmirHossein