보안 관련 패치의 자동 업데이트는 일반적으로 서버에서 구성됩니다. 따라서 MySQL 5.5를 실행 중이고 새 보안 패치가 나오면 Ubuntu Server는 업그레이드를 적용하고 MySQL을 다시 시작하여 자동으로 나를 보호합니다. 분명히 이것은 비활성화될 수 있지만, 조금 게으른 사람들에게는 도움이 됩니다. ;)
Docker 컨테이너 내에 이러한 개념이 존재합니까? Docker 컨테이너에서 MySQL을 실행하는 경우 지속적으로 컨테이너를 중지하고 컨테이너에서 셸을 연 다음 MySQL을 업데이트하고 업그레이드해야 합니까?
답변1
나는 받아 들여진 대답에 동의하지 않습니다. 먼저 상태 분리를 염두에 두고 컨테이너를 설계해야 합니다(MySQL의 경우 이는 최소한 /var/lib/mysql
자체 상태를 의미함).용량). 둘째, 업그레이드 전략을 결정해야 합니다. 가장 발전된 접근 방식은 각 적절한 패키지 업그레이드 세트에 대해 버전이 지정된 이미지를 생성하고 실행 중인 컨테이너에서 새 컨테이너로 데이터 볼륨을 교체하기 전에 이를 테스트하는 것입니다. 다음과 같은 것을 사용하는 경우 가동 중지 시간이 포함될 수도 있고 가동 중지 시간이 전혀 없을 수도 있습니다.엉덩이 통증.
이 설정은 초기 설정 비용이 더 많이 들지만 대규모 컨테이너를 보유한 회사에서 사용하는 것과 동일하며 시간이 지남에 따라 유지 관리 비용이 더 저렴해집니다.
또한 패키지 업그레이드는 결국 실행 중인 컨테이너를 중단시킬 수 있으므로 이를 실행 중인 컨테이너에 적용하는 것은 오래된 소프트웨어를 실행하고 있지 않기 때문에 모범 사례가 아닙니다.
답변2
긴 이야기 짧게: 직접 만들지 않으면 그런 일은 일어나지 않습니다.
이를 수행하는 효율적인 방법은 CMD
실행 중인 항목을 시작하기 전에 Dockerfile
이 파일에서 .apt-get update && apt-get upgrade -qqy
그런 다음 업데이트가 컨테이너에 도달하는지 확인하는 몇 가지 방법이 있습니다.
- 호스트 운영 체제에서 cron 작업을 정의하여 일정에 따라 컨테이너를 다시 시작하면 일정에 따라 컨테이너가 업데이트되고 업그레이드될 수 있습니다.
- 소프트웨어에 대한 보안 업데이트를 구독한 다음 영향을 받는 패키지가 업데이트되면 컨테이너를 다시 시작하세요.
최적화와 자동화는 가장 쉬운 일은 아니지만 가능합니다.