inblog logo
|
DailyCoding
    Docker

    1. Docker

    박은서's avatar
    박은서
    Apr 27, 2026
    1. Docker
    Contents
    1. Docker의 핵심 개념1️⃣ 이미지(Image)와 컨테이너(Container)2️⃣ 실행 방식3️⃣ 네트워크 & 포트 개념4️⃣ 컨테이너 생명주기5️⃣ Ubuntu 컨테이너와 리눅스 환경6️⃣ 컨테이너 접근 방식7️⃣ 데이터 휘발성 (중요 ⚠️)8️⃣ 핵심 흐름 정리9️⃣ 핵심

    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
    Contents
    1. Docker의 핵심 개념1️⃣ 이미지(Image)와 컨테이너(Container)2️⃣ 실행 방식3️⃣ 네트워크 & 포트 개념4️⃣ 컨테이너 생명주기5️⃣ Ubuntu 컨테이너와 리눅스 환경6️⃣ 컨테이너 접근 방식7️⃣ 데이터 휘발성 (중요 ⚠️)8️⃣ 핵심 흐름 정리9️⃣ 핵심

    DailyCoding

    RSS·Powered by Inblog