본문 바로가기
네트워크/클라우드

🐳 Docker 이미지 태그와 리소스 할당 완벽 정리

by Mostlove 2025. 5. 19.
728x90

 

🏷️ Docker Tags & Tagging Override

도커에서는 동일한 이미지에 다양한 버전을 붙일 수 있도록 태그(Tag) 기능을 제공한다. 예를 들어 Dockerfile을 이용해 website라는 이미지를 만든 후 다음과 같이 태그를 붙일 수 있다.

docker build -t website:5 .

이제 website라는 이미지의 버전 5가 만들어진 것. 만약 특정 태그를 latest로 덮어쓰고 싶다면?

docker tag website:5 website:latest

기존 website:5는 그대로 유지되고, latest라는 새 태그가 생긴다. 이를 Tagging Override라고 한다.


🗂️ Docker Registries란?

Docker Registry는 이미지 저장소다. 우리가 자주 쓰는 Docker Hub, AWS ECR, Google GCR, Azure ACR 등이 모두 레지스트리에 해당한다.

CI/CD 파이프라인을 구성하면 다음과 같은 흐름이 된다:

커스터마이즈된 이미지 생성(CI) → Docker Hub 등으로 업로드 → 사용자들이 다운로드해 사용(CD)

🛠️ Private Registry를 직접 컨테이너로 구성해서 쓸 수도 있다.


🧰 Docker Inspect & Logs

  • docker inspect <컨테이너명>
    → 컨테이너의 JSON 형태 상세 정보 확인 (리소스 포함)
  • docker logs <컨테이너명>
    → 컨테이너 내부 로그 확인 가능
    옵션:
    -t: 시간 출력 / -f: 실시간 출력 / --tail: 마지막 n줄만

🔄 Fluentd로 로그 연동하기

fluentd는 다양한 소스에서 로그를 수집하여 저장하는 오픈소스 도구다. 도커 로그를 MongoDB, S3, Hadoop 등 다양한 저장소로 연동할 수 있다.

💡 MongoDB는 NoSQL DB로, 기존 RDBMS처럼 Schema(name, type, size)를 미리 지정하지 않아도 된다.


🧮 컨테이너 리소스 할당하기

도커는 기본적으로 수평 확장(Horizontal Scaling) 구조지만, 개별 컨테이너가 자원을 독점할 수도 있다. 이를 방지하기 위해 리소스를 제한할 수 있다.

1️⃣ 메모리 제한

docker run --memory="1g" ubuntu:14.04
  • 최소: 6MB
  • 단위: k, m, g

2️⃣ CPU 제한

  • cpu-shares: 상대적 가중치 지정
  • docker run --cpu-shares=1024 ubuntu
  • cpu-period & cpu-quota:
    CPU 사용 시간 제한 (단위: 마이크로초)
  • docker run --cpu-period=100000 --cpu-quota=50000 ubuntu
  • --cpus: 직접 CPU 비율 지정
  • docker run --cpus="0.5" ubuntu
  • --cpuset-cpus: 특정 CPU만 사용
  • docker run --cpuset-cpus="1,2" ubuntu

3️⃣ HDD(Block I/O) 제한

  • bps (초당 전송속도 제한)
  • docker run --device-write-bps /dev/sda:1mb ubuntu
  • IOPS (초당 입출력 횟수 제한)
  • docker run --device-write-iops /dev/sda:1000 ubuntu

⚠️ 이 제한은 Direct I/O에만 적용된다. Buffered I/O에는 적용되지 않는다.

💡 디스크 용량 제한을 하려면 Disk Quotas를 사용해야 한다.


📦 예시: FTP 컨테이너 실행

docker run -d \
--name myftp \
-p 2001:21 -p 30000-30009:30000-30009 \
-v $PWD:/home/ftpusers/ \
-e "PUBLICHOST=localhost" \
-e "FTP_ROOT_PASS=rootoor" \
-e "FTP_USER_NAME=paul" \
-e "FTP_USER_PASS=paul" \
-e "FTP_USER_HOME=/home/paul" \
stilliard/pure-ftpd:latest

💾 참고: MySQL 엔진 종류

엔진 특징

엔진  특성
InnoDB 트랜잭션 지원, 대용량 처리, 무거움
MyISAM 빠름, 가벼움, 트랜잭션 미지원

🖥️ DB 연결 GUI 도구 정리

DB 종류 도구
MySQL MySQL Workbench, phpMyAdmin
Oracle SQL Developer
MS SQL 기본 GUI 포함
모든 DB DBeaver 사용 가능

🧱 Vault(볼트)란?

데이터베이스나 서비스 인증 시 나오는 팝업 인증창을 vault라고 부르기도 한다. 이는 작은 비밀 공간(납골당 느낌 😅)처럼 민감 데이터를 안전하게 저장하는 개념이다.