안녕하세요. 달소입니다.
오늘은 많은분들이 아마 알고계실 Docker image 자동 업데이트 도구인 Watch Tower에 대해서 소개해드리고 직접 설치해보고자합니다.
어떤 프로그램이나 서비스를 사용하다보면 시간이 지남에 따라 취약점인 나오고 기능 개선또한 이루어지게 됩니다. 이럴경우 당연히 업데이트가 나오게되는데요.
일반적인 SW의 경우 관리자/사용자가 수동으로 업데이트해주면 되지만(이것도 사실 쉽지않음..) Docker Image의 경우 이미지를 새로받고 컨테이너실행 명령어를 찾고 다시 실행시키고 등 되게 번거롭습니다.
이러한 번거로움을 해결하도록 도와주는게 Watch Tower 입니다.
Watch Tower란?
Watch Tower 는 이름그대로 감시타워입니다. 호스트에서 실행중인 Docker Container를 모니터링하고 최신이미지가 있으면 기존 컨테이너의 설정값을 그대로 신규 이미지를 통해 최신 컨테이너로 업데이트 해줍니다.
당연히(?) 옵션을 통해서 강제업데이트를 하지않게 할수도있고 제외할 컨테이너를 포함 할 수도있습니다.
깃허브에서 9700개의 스타를 받을정도로 꽤나 인기있는 툴이기때문에 아무쪼록 필요하시다면 아래 가이드를 통해 설치해보시면 되겠습니다.
설치환경
Ubuntu 20.04 LTS
Docker
Docker-compose
Docker로 Watch Tower 설치하기.
메뉴얼상에는 docker 및 docker-compose가 모두있지만 개인적으로 설정값을 저장할 수 있는 docker-compose를 선호하기 때문에 해당 방식으로 진행하겠습니다.
먼저 watchtower의 설정값을 보관해줄 디렉터리를 생성해주겠습니다.
mkdir -p /data/watchtower/config
cd /data/watchtower
vi docker-compose.yml
version: "3"
services:
watchtower:
image: containrrr/watchtower
volumes:
- /var/run/docker.sock:/var/run/docker.sock
environment:
TZ: Asia/Seoul
WATCHTOWER_POLL_INTERVAL: 86400
restart: unless-stopped
여기서 환경 변수를 더 추가하시고 싶다면 WATCHTOWER_CLEANUP은 업데이트 성공후 기존 이미지를 삭제할 것 인지 대한것 인데 혹시 모르니 false로 하고 추가해주시면 되겠습니다.
POOL_INTERVAL은 체크 주기이며 86400초는 24시간을 의미합니다.
컨테이너 생성명령어는 docker-compose up -d // v2 일경우 docker compose up -d 입니다.
watchtower의 경우 gui를 지원해주지 않기때문에 CLI에서 동작을 확인해야하는데요.
docker ps 명령어를 통해 컨테이너 id를 획득하고
docker logs 명령어로 해당 컨테이너의 로그를 확인해주시면됩니다.
저는 동작을 테스트하기위해 10초짜리로 만들어봤습니다.
자동으로 최신 이미지를 검색하고 컨테이너를 중단시키고 실행시켜줍니다.
쉽죠?
도커는 정말… 모든것을 간편하게 해주는군요 ㅎㅎ
아무쪼록 사용하시는데 문제가 없으셨으면 좋겠습니다~
[Reference] : 달소, 「서버포럼 – Docker 이미지 자동 업데이트 툴 Watch Tower 설치하기.」