Proxmox LXC 컨테이너
Proxmox에서 LXC를 운영할 때의 기준과 주의점.
Proxmox에서 LXC를 운영할 때의 기준과 주의점.
LXC를 쓰는 경우
LXC는 VM보다 가볍다. 같은 Linux 커널을 공유하면서 프로세스와 파일시스템을 격리한다.
적합한 경우:
- 작은 웹 서비스
- 내부 도구
- DNS, reverse proxy
- 모니터링 exporter
- 테스트용 Linux 환경
- 리소스를 아껴야 하는 홈랩 서비스
VM이 더 나은 경우:
- 커널 모듈 실험
- 다른 OS가 필요한 경우
- 강한 보안 격리
- Kubernetes 노드
- 복잡한 system-level workload
Privileged vs Unprivileged
| 방식 | 특징 |
|---|---|
| Unprivileged | host root와 container root를 분리, 기본 추천 |
| Privileged | 권한 강함, 호환성 좋지만 위험 |
기본은 unprivileged로 시작한다. 권한 문제 때문에 privileged가 필요하다면 이유를 명확히 기록한다.
템플릿 다운로드
웹 UI에서 CT Templates를 다운로드하거나 CLI를 사용한다.
pveam update
pveam available
pveam download local debian-<version>-standard_<build>_amd64.tar.zst
파일명은 버전에 따라 달라지므로 pveam available에서 확인한다.
컨테이너 생성
pct create 201 local:vztmpl/debian-template.tar.zst \
--hostname svc-01 \
--storage local-zfs \
--rootfs local-zfs:8 \
--memory 512 \
--cores 1 \
--net0 name=eth0,bridge=vmbr0,ip=dhcp \
--unprivileged 1
기본 관리:
pct list
pct start 201
pct stop 201
pct reboot 201
pct enter 201
pct config 201
리소스 제한
LXC는 host 자원을 공유하므로 제한을 명확히 주는 것이 좋다.
pct set 201 --memory 1024
pct set 201 --cores 2
pct set 201 --swap 512
운영 기준:
- 작은 서비스는 512MB~1GB부터 시작
- swap은 과도하게 의존하지 않기
- 로그가 많은 서비스는 디스크 용량을 별도 확인
- CPU core 제한은 noisy neighbor 방지에 도움
네트워크 설정
DHCP:
pct set 201 --net0 name=eth0,bridge=vmbr0,ip=dhcp
Static IP:
pct set 201 --net0 name=eth0,bridge=vmbr0,ip=192.168.20.21/24,gw=192.168.20.1
VLAN:
pct set 201 --net0 name=eth0,bridge=vmbr0,tag=20,ip=dhcp
Bind mount
host 경로를 컨테이너에 붙일 수 있다.
pct set 201 -mp0 /tank/data,mp=/data
[!warning] bind mount 주의 bind mount는 host 파일을 컨테이너에 노출한다. 권한, UID/GID mapping, 백업 포함 여부를 반드시 확인한다.
백업
vzdump 201 --storage <backup-storage> --mode snapshot
pct restore 202 <backup-file>
LXC는 VM보다 백업이 빠른 편이지만, bind mount가 자동 포함되지 않을 수 있다. 중요한 데이터가 mount 밖에 있는지 확인한다.
운영 체크리스트
- unprivileged 여부 확인
- root password 또는 SSH key 관리
- 필요한 패키지만 설치
- 자동 시작 여부 설정
- backup job 포함
- bind mount 데이터 별도 백업
- 방화벽 정책 확인
트러블슈팅
pct status <ctid>
pct config <ctid>
journalctl -xe
pct enter <ctid>
자주 보는 문제:
- 컨테이너 내부 systemd 서비스 실패
- UID/GID 권한 문제
- AppArmor 제한
- nesting 옵션 필요
- bind mount 권한 불일치
- VLAN tag 오류
관련 노트
- 상위: 00-MOC-Proxmox
- VM: 02-03-Proxmox-VM-관리
- 네트워크: 02-01-Proxmox-네트워킹
- 백업: 03-01-Proxmox-백업-복구