Docker Compose + Ubuntu 로 안전한 배포
· 약 5분
실리콘밸리 스타트업에서는 Docker Compose가 컨테이너화된 애플리케이션을 빠르게 배포하고 관리하기 위한 선호 도구 중 하나입니다. 하지만 편리함에는 보안 위험이 따르기 마련이죠. 사이트 신뢰성 엔지니어(SRE)로서 보안 취약점이 가져올 수 있는 재앙적인 결과를 잘 알고 있습니다. 이 글에서는 Docker Compose와 Ubuntu 시스템을 실제 업무에 결합해 적용하면서 정리한 최고의 보안 관행을 공유합니다. Docker Compose의 편리함을 누리면서도 시스템 보안을 확실히 지키는 방법을 알려드리겠습니다.
I. Ubuntu 시스템 보안 강화
컨테이너를 배포하기 전에 Ubuntu 호스트 자체의 보안을 확보하는 것이 가장 중요합니다. 주요 단계는 다음과 같습니다.
1. Ubuntu와 Docker를 정기적으로 업데이트
시스템과 Docker 모두 최신 상태를 유지해 알려진 취약점을 즉시 패치합니다.
sudo apt update && sudo apt upgrade -y
sudo apt install docker-ce docker-compose-plugin
2. Docker 관리 권한 제한
Docker 관리 권한을 엄격히 제어해 권한 상승 공격을 방지합니다.
sudo usermod -aG docker deployuser
# 일반 사용자가 쉽게 Docker 관리 권한을 얻지 못하도록 함
3. Ubuntu 방화벽(UFW) 설정
네트워크 접근을 합리적으로 제한해 무단 접근을 차단합니다.
sudo ufw allow OpenSSH
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable
sudo ufw status verbose
4. Docker와 UFW 연동 올바르게 구성
Docker는 기본적으로 UFW를 우회해 iptables를 설정하므로 수동 제어가 필요합니다.
Docker 설정 파일을 수정합니다:
sudo nano /etc/docker/daemon.json
다음 내용을 추가합니다:
{
"iptables": false,
"ip-forward": true,
"userland-proxy": false
}
Docker 서비스를 재시작합니다:
sudo systemctl restart docker
Docker Compose에서 주소를 명시적으로 바인딩합니다:
services:
webapp:
ports:
- "127.0.0.1:8080:8080"