컨테이너 업그레이드 후 Docker 서비스가 시작되는지 확인하는 방법은 무엇입니까?

컨테이너 업그레이드 후 Docker 서비스가 시작되는지 확인하는 방법은 무엇입니까?

오늘 아침에 잠에서 깨어보니 Watchdog으로부터 '서비스 중단' 이메일을 받았습니다. 서버에 연결한 후 서비스가 다운된 것을 발견했습니다 docker. 약간의 조사 끝에 오늘 아침 Ubuntu가 containerd서비스를 무인 업그레이드했으며 업그레이드 후에 docker서비스가 자동으로 시작되지 않은 것으로 나타났습니다 .

업그레이드 후에 이런 일이 다시 발생하지 않도록 하려면 어떻게 해야 합니까?

답변1

우리도 같은 문제가있었습니다. 나는 systemd 단위 파일을 사용하여 Containerd와 dockerd 사이에 느슨한 종속성을 생성하기로 결정했습니다.

방법은 다음과 같습니다.

루트로서:

재정의 디렉터리 만들기(권한 755)

mkdir /etc/systemd/system/containerd.service.d/

위 디렉터리에 재정의 파일을 만듭니다(권한 644).

vi override.conf

파일에 다음을 추가하십시오.

[Unit]
Before=docker.service
Wants=docker.service

시스템 데몬 다시 시작

systemctl daemon-reload

작동하는지 확인하세요

컨테이너 중지

systemctl stop containerd

dockerd가 중지되었는지 확인하세요.

systemctl status docker

컨테이너 시작

systemctl start containerd

dockerd가 시작되었는지 확인하세요.

systemctl status docker

++++++++++++++++++++++++++++

해당 주제에 대한 다른 문서에 대한 일부 링크

https://www.shellhacks.com/systemd-service-file-example/

https://man7.org/linux/man-pages/man5/systemd.service.5.html

답변2

Docker 및 관련 패키지를 보관하도록 설정하여 계획된 업그레이드에서만 업그레이드되도록 했습니다.

sudo apt-mark hold docker containerd

Docker를 업그레이드하고 싶을 때 를 실행하고 apt-mark unhold패키지를 업그레이드한 후 다시 보관합니다. 이 프로세스를 자동화하는 Ansible 플레이북이 있습니다. Docker를 설치하고 구성하기 위한 내 플레이북은 설치 후 바로 보관할 패키지를 설정합니다.

답변3

그만큼선적 서류 비치docker restart 정책이 도움이 된다면 용도에 맞게 always또는 옵션을 사용하여 컨테이너를 시작하세요 .unless-stopped

Ubuntu가 무인 업그레이드를 수행하는 것을 중지하는 것도 합리적으로 보입니다.

관련 정보