시스템 재부팅시 도커 컨테이너를 자동 시작하려면 어떻게합니까?


46

도커 컨테이너에서 WordPress 사이트를 호스팅하고 부팅 할 때 항상 컨테이너를 시작하기를 원하므로 수동으로 수행해야합니다.


어떤 우분투 버전을 사용하십니까?
Maythux

우분투 서버 14.04를 사용하여
nayan Tiwari 보낸

이것은 ServerFault 에서 요청되었습니다 .
Dan Dascalescu

크로스 포스트. 게시 할 사이트를 하나만 선택하십시오.
토마스 워드

답변:


34

지금까지 나는 그것을 정상적으로 할 수있는 방법이 없다고 생각합니다. 까다로운 해결책은 재시작 정책 을 사용하는 것입니다

sudo docker run --restart=always -d your_image

이것은 종료 할 때마다 컨테이너를 종료하므로 호스트를 시작하면도 커가 다시 시작됩니다.


내가 그것에 대해 검색으로 요리사 같은 일부 자동화 도구가 있지만 사용법을 모릅니다
nayan tiwari


2
이것을 위해 시스템 가능성을 사용하지 않는 이유는 무엇입니까? upstart와 systemd는 이것을 완벽하게 처리 할 수 ​​있습니다
Reishin

29

기존 컨테이너에 재시작 정책을 추가하는 것은 매우 일반적인 사용 사례입니다.

다음 명령으로 수행 할 수 있습니다. docker update --restart {no,on-failure,unless-stopped,always} container_name

추가 정보 : Docker-컨테이너 자동 시작


2
이것은 내 문제를 완벽하게 해결했습니다! 데이터베이스가있는 컨테이너가 있었고 Mac이 시작될 때 시작하기를 원했습니다. 이미지가 항상 다시 시작되도록 지정하여 (중지되지 않은 경우),이 방법을 사용했습니다!
Colin

21

우분투 15는 이제 시스템 관리자를 지원하므로이 관리자에 대한 샘플은

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

도커 사이트 에서 더 사용 가능

추신 : 꽤 귀여운 설정 :)


4

내가 한 일은 Upstart 파일을 사용하는 것입니다.

Docker 웹 사이트 에서 예제 및 기타 솔루션을 찾을 수 있습니다 .

/ 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

Docker 1.2에서와 같이 재시작 정책 이 있으며, 이는 도커 서비스가 실행될 때 (예 : 부팅 후) 컨테이너를 자동으로 재시작하는 데 도움이 될 수 있습니다.

개인적으로 퍼펫을 사용하여 워크 스테이션을 프로비저닝하고이 Docker 모듈 을 사용하여 보다 완전한 시작 스크립트 를 자동으로 작성합니다 (시작, 중지, 다시 시작, 정리 옵션 ...)


1
시작이 죽었다. systemd를 사용하십시오.
AmirHossein
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.