1. Docker

박은서's avatar
Apr 27, 2026
1. Docker

1. Docker의 핵심 개념

1️⃣ 이미지(Image)와 컨테이너(Container)

1) 이미지 (Image)

  • 개념
    • 실행 가능한 환경을 미리 만들어 둔 설계도
    • OS + 라이브러리 + 애플리케이션이 한 번에 패키징된 상태
    • 흔히 말하는 “구워진 상태” (immutable, 변경 불가)
    • 예: Ubuntu + nginx + 설정 → 하나의 이미지
📌
핵심포인트
  • 이미지는 실행 전 상태
  • 실행하면 → 컨테이너가 됨
  • 이미지 다운로드 (Pull)
    • 이미지는 보통 Docker Hub 같은 저장소에서 가져옴
    • pull = 인터넷에서 이미지 다운로드
    • Docker Hub → 내 컴퓨터로 이미지 가져오기

2) 컨테이너 (Container)

  • 개념
    • 이미지를 실행한 상태
    • 실제로 돌아가는 프로세스
    • OS처럼 보이지만 사실은 격리된 프로세스 집합

3) 이미지와 컨테이너의 핵심 차이

  • 이미지 = 정적인 파일
  • 컨테이너 = 실행 중인 상태

2️⃣ 실행 방식

1) 포그라운드(Foreground) 실행

  • 기본 실행 상태
  • 프로그램이 실행되는 모든 과정, 로그가 터미널에 실시간으로 계속 찍힘
  • 터미널 점유 → 다른 명령어 입력 불가능
  • 특징
    • 로그를 바로 확인 가능
    • 실습이나 테스트용

2) 백그라운드 실행

  • 컨테이너를 보이지 않는 뒤에서 조용히 일하도록 떼어놓는(Detach) 옵션
  • 터미널을 계속 사용할 수 있음
  • 서버 운영 시 일반적으로 사용
  • 핵심 옵션 개념
    • d: 백그라운드 실행

3️⃣ 네트워크 & 포트 개념

🌐 Docker 네트워크 구조

  • Docker 내부에는 별도의 네트워크 공간 존재
  • 컨테이너는 그 안에서만 통신

🔌 포트 개념

  • 컨테이너 내부 서비스 (예: nginx)는 80번 포트 사용
  • 하지만 외부(내 컴퓨터)에서는 바로 접근 불가
    • 내부 네트워크와 외부 네트워크가 분리되어 있음

🔁 포트포워딩

  • 개념
    • 외부 포트 → 내부 포트로 연결
  • 예시
    • 컴퓨터 7000 컨테이너 내부 80
    • localhost:7000 접속 → nginx(80번 포트)로 연결됨

4️⃣ 컨테이너 생명주기

🔍 상태 확인

  • 실행 중인 컨테이너 확인 = 프로세스 확인 개념 (ps)

⛔ 종료

  • 컨테이너는 언제든지 종료 가능
  • 종료되면 실행만 멈추고 데이터는 유지될 수도 있음 (설정에 따라 다름)

5️⃣ Ubuntu 컨테이너와 리눅스 환경

🐧 컨테이너 내부는 리눅스

  • 컨테이너에 들어가면 → 리눅스 OS 환경
  • 따라서 명령어도 리눅스 기반

🔧 apt 개념

① apt update
  • 실제 설치가 아니라 패키지 목록 동기화
  • 메뉴판 업데이트
② apt repository
  • 패키지들이 저장된 서버 (클라우드)
  • 원하는 패키지가 없으면 repo 변경 가능
③ apt-cache search
  • “메뉴판에서 검색”
④ 자동 설치 옵션
  • y → 모든 질문 자동 Yes

6️⃣ 컨테이너 접근 방식

🔗 attach vs exec

① attach
  • 기존 실행 중인 프로세스에 붙음
  • 하나의 터미널 공유 느낌
② exec
  • 새로운 프로세스를 생성해서 실행
  • 더 안전하고 일반적으로 많이 사용
핵심 차이
  • attach = 기존에 붙기
  • exec = 새로 실행

7️⃣ 데이터 휘발성 (중요 ⚠️)

❗ 컨테이너의 특징

  • 컨테이너 내부에서 설치/수정한 내용 ➡️ 컨테이너 종료 후 사라질 수 있음

🔥 해결 방법

  • 원하는 상태가 되면 → 이미지로 다시 저장 (commit / build)
컨테이너 → 커스터마이징 → 다시 이미지로 저장

8️⃣ 핵심 흐름 정리

1. 이미지 다운로드 (pull) 2. 이미지 실행 → 컨테이너 생성 3. 컨테이너 내부에서 작업 4. 필요하면 이미지로 다시 저장

9️⃣ 핵심

Docker는 “실행 환경(OS + 프로그램)을 통째로 포장해서 어디서든 동일하게 실행하게 해주는 기술”
notion image
Share article