
오늘 아침에 잠에서 깨어보니 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가 무인 업그레이드를 수행하는 것을 중지하는 것도 합리적으로 보입니다.