본문 바로가기

Cloud/고가용성

도커

도커란 무엇인가

도커는 컨테이너 기술을 사용하여 애플리케이션과 그 의존성을 하나의 패키지로 묶어주는 플랫폼이다.
쉽게 말해, "내 컴퓨터에서 잘 되던 코드가 다른 환경에서도 동일하게 동작하게 만들어주는 도구"라고 생각하면 된다.


도커의 핵심 개념

  1. 이미지 (Image)
    • 애플리케이션과 필요한 모든 파일, 의존성을 포함한 실행 가능한 패키지.
    • 불변성을 가지며, 컨테이너를 생성하는 템플릿 역할을 한다.
    • 예: "Node.js 앱"을 실행하기 위한 이미지.
  2. 컨테이너 (Container)
    • 도커 이미지를 실행한 상태.
    • 가볍고 독립적인 실행 환경으로, 각 컨테이너는 서로 격리되어 있다.
    • 예: "Node.js 앱"이 실행 중인 상태.
  3. 도커 파일 (Dockerfile)
    • 이미지를 생성하기 위한 설정 파일.
    • 도커 파일에 명령어를 정의하여, 이미지 생성 과정을 자동화한다.
    FROM node:14
    WORKDIR /app
    COPY . .
    RUN npm install
    CMD ["node", "app.js"]
    
  4. 도커 허브 (Docker Hub)
    • 도커 이미지를 공유하는 저장소.
    • 공식 이미지와 사용자 생성 이미지를 다운로드하거나 업로드할 수 있다.

CI/CD에서의 도커 역할

  1. CI (지속적 통합)
    • 개발자가 코드를 수정하면 자동으로 테스트하고 빌드한다.
    • 빌드 결과물을 도커 이미지로 생성하여, 배포 준비를 한다.
    docker build -t my-app:1.0 .
    docker run -p 8080:8080 my-app:1.0
    
  2. CD (지속적 배포)
    • 생성된 도커 이미지를 EC2 같은 서버에 배포.
    • 배포 과정에서 컨테이너를 실행하여 애플리케이션을 가동한다.
    docker push my-app:1.0
    ssh ec2-user@<ec2-ip> "docker run -d -p 8080:8080 my-app:1.0"
    

도커와 젠킨스

  • 젠킨스(Jenkins): CI/CD 파이프라인을 구축하는 데 사용되는 자동화 도구.
  • 도커와 젠킨스의 조합:
    • 젠킨스가 코드를 빌드하고 테스트한 후, 도커 이미지를 생성.
    • 생성된 이미지를 도커 허브에 푸시하거나 EC2에 배포.

도커의 장점

  1. 환경 일관성
    • 개발, 테스트, 운영 환경 간 차이를 줄여준다.
    • "내 컴퓨터에서 잘 되던 코드"가 다른 환경에서도 동일하게 실행.
  2. 경량화
    • 가상 머신(VM)보다 가벼운 컨테이너 기술로, 빠르게 실행 가능.
  3. 빠른 배포
    • 컨테이너를 실행하면 즉시 애플리케이션이 동작.
  4. 이식성
    • 도커 이미지는 어디서든 실행 가능(로컬, 클라우드, 온프레미스 등).

도커가 어렵다고 느껴진다면

처음부터 도커의 모든 것을 처음부터 완벽히 이해할 필요는 없다.
다음과 같은 기본적인 흐름만 익히면 충분하다.

  1. 이미지 생성: Dockerfile 작성.
  2. 컨테이너 실행: 도커 이미지를 실행하여 앱 가동.
  3. 도커 허브 사용: 이미지를 공유하거나 가져오기.

이 기본 흐름을 이해한 후, 실무에서 사용하는 상황에 맞게 하나씩 익히면 된다.
도커는 어디서든 사용할 가능성이 높기 때문에, 기본 개념과 실습 경험을 쌓아두면 큰 도움이 된다.

 

'Cloud > 고가용성' 카테고리의 다른 글

프록시 서버  (0) 2024.07.16