2016-06-11 5 views
2

업그레이드 쉽다는-수 업그레이드. 이로 인해 A 테이너가 다시 시작됩니다.방지 도커-엔진을 다시 시작 내가이 apt-get을 고정 표시기 엔진을 업그레이드 할 수있는 경우, 업그레이드는 서비스 후 다시 시작 할 때마다 나는 우분투 14.04</p> <p>여기에 문제가있어

컨테이너 중 하나는 시동 중에 수동 개입이 필요한 컨테이너이며 다른 컨테이너는 시간이 중요한 데이터를 수집하므로 매우 특정한 시간에 컨테이너를 다시 시작할 수 있습니다.

이러한 자동 재시작에서 도커 - 엔진 서비스를 어떻게 제외시킬 수 있습니까?

AFAIK, mongodb는 apt-get 업그레이드 후에 mongod를 다시 시작하지 않으므로 같은 방식으로 도커가 작동하지 않는 이유는 무엇입니까?

답변

3

mongodb은 무엇을하는지 완전히 모르지만 업데이트시 자체를 다시 시작합니다.

고정 표시기 엔진의 문제는, 실제로 않습니다, 당신은 업데이트 후 다음 명령을 실행하여 확인할 수있는 그 자체를 다시 시작하지 않습니다되지 않습니다 : 그렇지 않은 것을

sudo service docker status 

그것은 단지 실행중인 컨테이너를 다시 시작하십시오. 이론적으로 서비스가 다시 시작된 경우 실행중인 컨테이너를 다시 가져올 수 있지만 이유가 무엇이든 이유는 무엇입니까?

이 문제를 해결하는 방법에는 두 가지가 있습니다.

docker-engine의 업데이트를 제외하고 사용할 수있는 경우 수동으로 업데이트하는 첫 번째 쉬운 방법입니다.

sudo apt-mark hold docker-engine 
sudo apt-get upgrade 

의 업데이트 및 업그레이드에서 다시 시작 감당할 수없는 용기가있는 경우 업데이트가 다시

... 
The following packages were kept back: 
docker-engine 
... 

을 유지하는 경우,이 경로를 이동해야이 있다면 당신은 통지를 볼 수 있습니다.

그러나 다시 시작할 수있는 경우 두 번째 방법을 사용할 수 있습니다. 당신이 컨테이너를 시작할 때과 같이 다시 시작 정책을 설정할 수 있습니다 : 고정 표시기 엔진이 다시 시작될 때

sudo docker run --restart=always -d image-name 

이 방법으로, 컨테이너는 그것으로 시작됩니다. 이는 업데이트시이 방법으로 시작된 컨테이너가 자동으로 시작됨을 의미합니다.

+0

아, 좋아, 내가 다시 시작하기 전에 모든 것을 수동으로 종료하기 때문에 업그레이드를 시작한 다음 모든 컨테이너를 시작하는 스크립트를 다시 부팅하기 때문에 다시 시작하지 않는 것을 잊어 버렸습니다. 나는 그것이 내가 원하는'sudo apt-mark docker-machine hold'라고 생각한다. 도커 - 기계 또는 도커 - 엔진입니까? –

+0

@DanielF 도커 엔진으로 수정했습니다. – khattam

1

deb 패키지에 포함 된 사전/사후 설치 스크립트의 디자인과 패키지를 작성한 사람의 결정입니다. (apt.dockerproject.org에서 최신 jessie 빌드를 분리했지만, 멈추지 않을 것입니다. 제어 파일 내부에서는 레지스터와 시작 만).

중단 시간을 허용 할 수없는 경우 시스템 업그레이드를 실행하지 않는 것이 좋습니다. 전에 다운로드 만 (apt-get upgrade -d) 수행하여 업그레이드 시간을 최소화 한 다음 정전 창에서 업그레이드를 시작하십시오. 도커 엔진 패키지를 보류 상태로 두어 dselect를 사용하여 자동으로 업그레이드되지 않고 패키지 이름에 =를 누를 수도 있습니다.