[내일배움캠프 사전캠프] 20회차 TIL(7/22 수) - Docker, Docker-Compose

2026. 7. 22. 15:59·심화_AI를 활용한 백엔드 아키텍처 심화 과정

Docker Image, Docker Container

Docker 이미지: Docker Container 서비스를 위한 이미지로, Container 런타임에 필요한 바이너리, 라이브러리 및 설정 값 등을 포함하고, 변경되는 상태값을 보유하지 않고 변하지 않는다. 따라서 불변성, 상태 저장이 없다.

Docker Image와 Docker Container의 관계

Image: 컨테이너에 대한 OS, Application, Library 등등의 정보를 담고 있음

Container: Image를 실행한 상태. 1개의 Image로부터 N개의 Container를 생성할 수 있는 1:N의 관계.


 

Dockerfile

Dockerfile: APP을 컨테이너로 만들 때 이미지를 만드는 용도로 사용된다. 이를 통해 앱이 필요로 하는 모든 것을 한 곳에 담을 수 있게 된다.

그리고 같은 앱 환경을 쉽게 만들 수 있으며, 앱을 만드는 과정을 자동화할 수 있다.

# Dockerfile 예시
FROM ubuntu:latest // FROM: 베이스 이미지 선택
MAINTAINER Your Name <your-email@example.com> // MAINTAINER: 이미지를 만든 사람의 정보를 입력
RUN apt-get update && apt-get install -y nginx // RUN: 이미지에 명령을 실행하여 파일을 추가하거나 삭제
COPY index.html /usr/share/nginx/html// COPY: 파일을 이미지에 복사
EXPOSE 80 // EXPOSE: 컨테이너가 노출할 포트 설정
CMD ["nginx", "-g", "daemon off;"] // CMD: 실행할 명령을 설정

이외의 명령어

LABEL: 이미지에 메타데이터를 추가 // LABEL purpose='nginx test'
ENTRYPOINT: 컨테이너 시작할 때 실행할 명령어를 입력 // ENTRYPOINT ["npm", "start"]
ENV: 환경 변수 설정 // ENV STAGE staging or ENV JAVA_HOME /usr/lib/jvm/java-8-oracle
WORKDIR: 작업 디렉터리 지정 // WORKDIR /app
USER: 사용자 설정 
//RUN ["useradd", "user"]
USER user
RUN ["/bin/bash, "-c", "ls"]

 

Docker Compose

Docker Compose: 여러 컨테이너를 더 쉽게 관리, 자동 설정, 확장, 보안 강화 등 여러 컨테이너를 한 파일에 적어서 관리 가능

Compose 파일은 앱이 필요로 하는 모든 서비스들(데이터베이스, 큐, 캐시, 웹 API 등)을 정리해 주고, docker compose up 명령어로 이 모든 것을 한 번에 시작 가능

Docker Compose는 기본적으로 새 브리지 네트워크를 생성하여 각 서비스 컨테이너를 그 네트워크에 연결함. 이 네트워크는 docker-compose.yml 파일에 정의된 모든 서비스가 서로 통신할 수 있도록 함.

장점

  • 한번에 여러 컨테이너 설정 가능: YAML 파일 하나로 여러 컨테이너의 모든 환경을 설정하고 한 번에 실행 가능
  • 빠른 서비스 실행
  • 같은 네트워크에서 쉽게 연결 가능
version: '3'
services:
  web:
    image: nginx
    ports:
      - "8080:80"
  app:
    build: .
    ports:
      - "8081:8080"
    depends_on:
      - db
  db:
    image: postgres
    environment:
      POSTGRES_PASSWORD: example

- `version`: Docker Compose 파일의 버전을 지정합니다.
- `services`: 애플리케이션의 각 서비스를 정의합니다.
- `web`, `app`, `db`: 각각의 서비스 이름입니다.
- `image`: 서비스를 실행할 Docker 이미지를 지정합니다.
- `build`: Dockerfile이 있는 디렉토리 경로를 지정하여 이미지를 빌드합니다.
- `ports`: 호스트와 컨테이너 간의 포트를 매핑합니다.
- `depends_on`: 다른 서비스가 먼저 실행되어야 하는 순서를 지정합니다.
- `environment`: 컨테이너의 환경 변수를 설정합니다.

Docker compose 명령어

docker compose up: yml 파일에 정의된 서비스를 빌드하고 시작함.

docker compose down: 실행 중인 모든 서비스를 중지하고 컨테이너, 네트워크, 볼륨 등을 정리함.


CI/CD

CI: 개발자가 변경한 코드를 자주 통합하고, 이 코드가 전체 시스템과 잘 어우러지는지 자동으로 테스트하는 프로세스

CD: CI의 결과물을 사용자에게 자동으로 배포한느 프로세스를 포함함. 코드 변경이 통합되고 테스트를 통과하면, 이를 자동으로 스테이징 환경 또는 프로덕션 환경에 배포함.

장점

  • 빠른 피드백
  • 자동화된 프로세스
  • 일관된 배포
  • 높은 품질 유지
  • 개발 속도 향상

 

CI/CD 도구

Github Actions CI/CD

Github Actions: Github에 내장된 CI/CD 도구로, YAML 파일을 사용하여 워크 플로우를 정의함.

  • Github 저장소와의 강력한 통합
  • 다양한 이벤트 기반 트리거
  • 풍부한 커뮤니티 및 Marketplace 지원
  • 무료 사용 가능

Jenkins

오픈 소스 CI/CD 도구로, 플러그인을 통해 다양한 기능 확장 가능

  • 대규모 프로젝트에 적합
  • 분산 빌드 및 다중 플랫폼 지원
  • 다양한 플러그인 지원

GitLab CI

GitLab과 통합된 CI/CD 도구로, GitLab 저장소를 기반으로 CI/CD 파이프라인을 설정

  • GitLab과의 통합
  • 강력한 파이프라인 편집기 제공
  • 자동화된 DevOps 수명 주기 관리
  • 클라우드 및 온프레미스 모두 지원

Amazon ECS란?

Docker 애플리케이션을 쉽게배포하고 운영 할 수 있도록 지원하는 완전관리형 Container Orchestration 서비스

ECS 구성 요소

  • ECR: Docker image 저장소
  • ECS Cluster: 컨테이너를 실행하기 위한 Cluster로 여러 인스턴스로 이루어져 Docker Container가 분산 실행됨
  • ECS Server: Docker APP 실행 그룹
  • ECS Task: ECS Server에 실제로 실행되는 docker container들 

 

'심화_AI를 활용한 백엔드 아키텍처 심화 과정' 카테고리의 다른 글

[내일배움캠프 사전캠프] 22회차 TIL(7/24 금) - Spring Session, Redis Cache  (0) 2026.07.24
[내일배움캠프 사전캠프] 21회차 TIL(7/23 목) - Redis  (0) 2026.07.23
[내일배움캠프 사전캠프] 19회차 TIL(7/21 화) - Docker Image, Container  (0) 2026.07.21
[내일배움캠프 사전캠프] 18회차 TIL(7/16 목) - 스프링 컨테이너  (0) 2026.07.16
[내일배움캠프 사전캠프] 17회차 TIL(7/15 수)  (0) 2026.07.15
'심화_AI를 활용한 백엔드 아키텍처 심화 과정' 카테고리의 다른 글
  • [내일배움캠프 사전캠프] 22회차 TIL(7/24 금) - Spring Session, Redis Cache
  • [내일배움캠프 사전캠프] 21회차 TIL(7/23 목) - Redis
  • [내일배움캠프 사전캠프] 19회차 TIL(7/21 화) - Docker Image, Container
  • [내일배움캠프 사전캠프] 18회차 TIL(7/16 목) - 스프링 컨테이너
taeyoon2
taeyoon2
taeyoon2 님의 블로그 입니다.
  • taeyoon2
    taeyoon2 님의 블로그
    taeyoon2
  • 전체
    오늘
    어제
    • 분류 전체보기 (36)
      • 심화_AI를 활용한 백엔드 아키텍처 심화 과정 (24)
      • MSA (11)
      • Study (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    Zipkin
    로드 밸런싱
    내일배움캠프 #사전캠프 #til
    보안구성
    OAuth2
    RabbitMQ
    MSA
    Resilience4j
    내일배움캠프
    이벤트 드리븐
    spring cloud
    Config
    JWT
    api gateway
    서킷 브레이커
    spring cloud config
    til
    분산추적
    사전캠프
    심화_AI를 활용한 백엔드 아키텍처 심화 과정
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
taeyoon2
[내일배움캠프 사전캠프] 20회차 TIL(7/22 수) - Docker, Docker-Compose
상단으로

티스토리툴바