본문 바로가기

Study

[내일배움캠프 TIL] 23일차 - Docker & Docker Compose

728x90
반응형

오늘은 Docker, Docker Compose에 대해서 강의를 들었고

중요한 내용들을 정리해보았습니다.

1. Docker 기초 개념

  • Docker: 앱과 환경을 하나로 묶은 '컨테이너' 기술.
  • Docker Compose: 여러 컨테이너를 YAML 파일로 한 번에 관리하는 도구.

2. 포트 매핑 (Port Mapping)

컨테이너는 독립된 공간이라 외부와 연결할 '문'이 필요합니다.

  • 형식: -p [호스트 포트] : [컨테이너 포트] (예: 8080:80)
  • 방향: 밖(내 컴퓨터) : 안(컨테이너)
  • 특이점: 컨테이너 내부 포트는 서로 독립적입니다. 예를 들어, 서로 다른 컨테이너라면 내부에서 똑같이 80번 포트를 사용해도 아무런 충돌이 발생하지 않습니다. 호스트 포트(왼쪽 숫자)만 겹치지 않게 잘 나눠주면 됩니다.

3. 컨테이너 간 통신과 네트워크

컨테이너끼리 서로 데이터를 주고받으려면 같은 '네트워크' 안에 있어야 합니다.

  • 일반 Docker: 사용자가 직접 네트워크를 만들고(docker network create), 실행할 때마다 네트워크를 지정해줘야 하는 번거로움이 있습니다.
  • Docker Compose의 마법: Compose는 파일을 실행하는 순간 자동으로 전용 네트워크를 생성하고, 파일 안에 적힌 서비스들을 그 네트워크에 묶어줍니다. 덕분에 개발자는 별도의 네트워크 설정 없이도 컨테이너 이름만으로 서로 통신할 수 있습니다.

4. Docker Compose 실전 예시

version: '3.8'
services:
  app:
    image: my-app
    ports:
      - "8080:80"     # 밖(8080) -> 안(80)
    networks:
      - my-network    # (보통은 생략해도 compose가 자동 생성/연결함)

  db:
    image: mysql
    ports:
      - "3306:3306"   # 내부 포트가 겹쳐도 컨테이너가 다르면 상관없음
    networks:
      - my-network

 

 

 

반응형