나는 같은 문제가 있었고 unattended-upgrade
매일 전화하는 cron 작업으로 간단하게 해결할 수 있다고 생각했습니다 .
내 의도는 이미지를 업데이트하고 최신 보안 업데이트로 새 도커 이미지를 배포하는 데 시간이 걸릴 수 있기 때문에 프로덕션 컨테이너의 보안 및 업데이트를 보장하는 자동 및 빠른 솔루션으로 사용하는 것입니다.
Github 후크를 사용 하여 이미지 빌드 및 배포를 자동화 할 수도 있습니다
보안 업데이트를 매일 자동으로 확인하고 설치 하는 기본 도커 이미지 를 만들었습니다 (에서 직접 실행할 수 있음 docker run itech/docker-unattended-upgrade
).
또한 컨테이너에 업데이트가 필요한지 확인하기 위해 다른 접근 방식 을 발견했습니다.
내 완전한 구현 :
도커 파일
FROM ubuntu:14.04
RUN apt-get update \
&& apt-get install -y supervisor unattended-upgrades \
&& rm -rf /var/lib/apt/lists/*
COPY install /install
RUN chmod 755 install
RUN /install
COPY start /start
RUN chmod 755 /start
도우미 스크립트
설치
#!/bin/bash
set -e
cat > /etc/supervisor/conf.d/cron.conf <<EOF
[program:cron]
priority=20
directory=/tmp
command=/usr/sbin/cron -f
user=root
autostart=true
autorestart=true
stdout_logfile=/var/log/supervisor/%(program_name)s.log
stderr_logfile=/var/log/supervisor/%(program_name)s.log
EOF
rm -rf /var/lib/apt/lists/*
ENTRYPOINT ["/start"]
스타트
#!/bin/bash
set -e
echo "Adding crontab for unattended-upgrade ..."
echo "0 0 * * * root /usr/bin/unattended-upgrade" >> /etc/crontab
# can also use @daily syntax or use /etc/cron.daily
echo "Starting supervisord ..."
exec /usr/bin/supervisord -n -c /etc/supervisor/supervisord.conf
편집하다
Docker 컨테이너로 실행 되는 작은 도구 docker-run 을 개발했으며 모든 또는 선택한 실행중인 컨테이너 내부의 패키지를 업데이트하는 데 사용할 수 있으며 임의의 명령을 실행하는데도 사용할 수 있습니다.
다음 명령으로 쉽게 테스트 할 수 있습니다.
docker run --rm -v /var/run/docker.sock:/tmp/docker.sock itech/docker-run exec
기본적으로 date
실행중인 모든 컨테이너에서 명령을 실행하고 결과를 표시합니다. 당신이 전달하는 경우 update
대신 exec
그것을 실행합니다 apt-get update
다음에 apt-get upgrade -y
실행중인 모든 용기에