1. Docker Hub에 이미지 Push

Docker Registry 개념

  • Registry: Docker 이미지 파일을 저장하고 관리하는 공간.
  • Public Registry: 누구나 접근 가능 (예: Docker Hub).
  • Private Registry: 특정 사용자나 그룹만 접근 가능.
  • Docker Hub: Docker의 공식 Registry 플랫폼(hub.docker.com).

이미지 Push 작업 순서

  1. Docker Hub 로그인
  2. docker logout docker login
  3. 이미지 태깅(Tagging)
    • Docker Hub 계정 이름을 이미지 이름 앞에 붙여 태그 생성:
      docker image tag <이미지>:<태그> <계정>/<이미지>:<태그>
      
      예:
      docker image tag nginx:latest nbcdocker0000/nginx-test:1.0
      
  4. 이미지 Push예:
  5. docker push nbcdocker0000/nginx-test:1.0
  6. docker push <계정>/<이미지>:<태그>
  7. Push된 이미지 Pull 및 실행
  8. docker pull nbcdocker0000/nginx-test:1.0 docker run -d -p 8001:80 --name=nginx-test nbcdocker0000/nginx-test:1.0

2. Dockerfile 최적화

최적화 이유

  • 빠른 빌드 속도: 빌드 시간을 줄여 작업 효율성 증가.
  • 이미지 크기 감소: 작고 경량화된 이미지는 저장 공간 절약 및 빠른 전송 가능.
  • 보안 강화: 불필요한 패키지 제거로 공격 표면 감소.
  • 유지보수 용이: 잘 정리된 Dockerfile은 수정이 쉽고 오류 발생 가능성 감소.

3. Java 환경 Dockerfile 예제

Dockerfile (Multi-stage Build 사용)

# Build 단계
FROM gradle:8.5-jdk21-alpine AS builder
WORKDIR /app
COPY ./ ./  # 소스 복사
RUN gradle clean bootJar  # Gradle로 Spring Boot 애플리케이션 빌드

# Application 실행 단계
FROM eclipse-temurin:21-jre-alpine
WORKDIR /app
COPY --from=builder /app/build/libs/spring-boot-0.0.1-SNAPSHOT.jar .
EXPOSE 8080
ENTRYPOINT ["java", "-jar", "spring-boot-0.0.1-SNAPSHOT.jar"]

최적화 포인트

  1. Alpine 이미지 사용:
    • 최소한의 라이브러리만 포함된 경량 이미지.
    • 보안 강화 및 이미지 크기 최소화.
  2. Multi-stage Build:
    • 빌드와 실행 환경을 분리.
    • 최종 실행 컨테이너에는 불필요한 빌드 도구(예: Gradle)가 포함되지 않음.

4. Docker Image Push 및 최적화 요약

항목 설명
Registry Docker 이미지를 저장하고 관리하는 공간.
Public Registry 모든 사용자가 접근 가능 (예: Docker Hub).
Private Registry 특정 사용자/그룹만 접근 가능한 비공개 저장소.
Docker Hub 로그인 docker login 명령으로 인증 필요.
이미지 태깅 Docker Hub에 Push하려면 계정 이름을 이미지 이름 앞에 추가.
Multi-stage Build 빌드와 실행 환경을 분리하여 최종 이미지를 경량화.
Alpine 이미지 최소 크기의 기본 이미지로, 보안 강화와 이미지 경량화 가능.

5. 부가적으로 알아야 할 정보

  1. Docker Hub 사용 팁:
    • Public Repository는 무료, Private Repository는 제한 있음.
    • 팀 협업을 위해 Docker Organization 기능 활용 가능.
  2. Multi-stage Build 장점:
    • 빌드 환경에서만 필요한 파일은 제외.
    • 실행 이미지를 작고 빠르게 유지.
  3. 이미지 최적화 도구:
    • docker-slim: Docker 이미지를 자동으로 최적화.
    • Dive: 이미지 내부 구조를 분석하여 최적화 가능한 부분 확인.
  4. 이미지 관리:
    • 필요하지 않은 이미지는 삭제하여 디스크 공간 확보:
      docker image prune
      

6. Docker Image Push 및 최적화의 장단점

장점 단점
Docker Hub를 통해 전 세계 어디서나 이미지 관리 및 공유 가능. Public Registry 사용 시 보안 우려 (Private Registry 사용 권장).
Multi-stage Build로 실행 이미지를 경량화하여 배포 효율성 증가. Multi-stage Build는 Dockerfile 작성에 대한 학습 필요.
Alpine 이미지 사용으로 이미지 크기 감소 및 보안 강화. Alpine 환경에서는 일부 패키지가 기본적으로 제공되지 않아 추가 설정 필요.

 

'Docker > Docker' 카테고리의 다른 글

[Docker] Container 가상화  (0) 2025.02.09
[Docker] Docker Network  (0) 2025.02.06
[Docker] Docker Volume  (0) 2025.02.05
[Docker] Docker 모니터링&로깅  (0) 2025.02.04
[Docker] Docker Compose  (0) 2025.02.03

+ Recent posts