[Docker 1편] - 설치, 필요성, 기본 개념 및 이미지/컨테이너 기초

이상억·2025년 3월 17일

Docker

목록 보기
1/3

1. 도커 설치

도커 가입 및 Docker Desktop 설치

  • 도커 공식 홈페이지에서 가입 후 Docker Desktop 다운로드
  • Mac 사용자는 인텔칩(amd64)과 애플칩(ARM) 구분해서 다운로드

BIOS 가상화 관련 참고

  • CPU 모델(AMD/Intel)에 따라 BIOS에서 가상화 설정을 켜야 할 수 있음

설치 확인 명령어

docker run hello-world
  • 정상이라면 “Hello from Docker!”가 출력됩니다.

2. 도커를 사용하는 이유 (의존성 충돌 해결)

도커 컨테이너를 사용하면, 프로젝트마다 격리된 환경을 제공하여 의존성 충돌 문제를 효율적으로 해결할 수 있음.

  • 예) Python 2.7과 3.x를 동시에 사용하거나, 프로젝트별로 서로 다른 라이브러리 버전이 필요한 경우
  • 도커는 호스트 OS의 커널을 공유하면서도, 컨테이너라는 독립된 실행 환경을 제공하므로 충돌이 거의 발생하지 않음

3. 가상머신(VM)과 도커 컨테이너의 차이

  • 가상머신(VM)
    • 호스트 OS 위에 게스트 OS 전체를 올리는 방식 → 무겁고, 성능 저하가 있음
  • 도커 컨테이너
    • 호스트 OS 커널을 공유하며 필요한 부분만 가볍게 격리 → 성능저하가 거의 없음

즉, 도커 컨테이너는 “가상머신처럼 OS 전체를 올리는 대신 프로세스 단위로 격리”하기 때문에 속도도 빠르고 자원도 적게 듦.

4. 도커 환경 전체 초기화 방법

실습을 통째로 다시 하고 싶을 때, 아래와 같은 명령어로 도커 관련 리소스를 전부 정리할 수 있음

# 1) 실습에 사용했던 외부 폴더 삭제 (예: ~/testDockerProjects)
rm -rf ~/testDockerProjects/*

# 2) 실행/중지된 모든 컨테이너 삭제
docker rm -f $(docker ps -qa)

# 3) 모든 이미지 삭제
docker rmi -f $(docker images -qa)

# 4) 사용되지 않는 네트워크 삭제
docker network prune -f

# 5) 사용되지 않는 볼륨 삭제
docker volume prune -f

5. 도커 이미지 & 컨테이너의 기초 개념

  • 도커 이미지: 일종의 “프로그램 설치 파일”
  • 도커 컨테이너: 이미지를 실행한 “프로세스”에 가까움

일반 PC 환경과의 비교표:

도커 개념일반 프로그램 비교
도커 이미지프로그램(설치 파일)
도커 이미지 다운로드프로그램 설치
도커 이미지 실행 → 컨테이너 생성프로그램 실행 → 프로세스 생성
도커 이미지 1개여러 개의 컨테이너 가능
프로그램 1개여러 개의 프로세스 가능

6. 도커 이미지 다운로드 및 관리

이미지 다운로드(pull)


docker pull nginx         # 최신 버전 다운로드
docker pull nginx:1.25    # 특정 버전 다운로드

이미지 목록 확인


docker images

이미지 삭제


docker rmi nginx:1.25

7. 기본 도커 컨테이너 실행 (Hello World)

컨테이너 실행

docker run hello-world
  • 이미지가 없다면 자동으로 pull 후 실행
  • 메시지 출력 후 프로세스가 종료 → 컨테이너도 종료

컨테이너 목록 확인


docker ps -a

종료된 컨테이너 삭제


docker rm [컨테이너_ID]

이미지 삭제


docker rmi hello-world

8. 컨테이너와 주 프로세스 개념

  • 도커 컨테이너 내부에서 실행되는 “주 프로세스”가 종료되면 컨테이너도 종료 됨.

    • docker run hello-world → Hello 출력 후 즉시 종료
    • docker run ubuntu → 주 프로세스 없이 실행되므로 바로 종료(-it 없이)
    • docker run -it ubuntu bash → bash 프로세스가 살아있는 동안 유지
    • docker run nginx → nginx 서버 프로세스는 계속 동작하므로 자동 종료 안 됨
profile
이상억

0개의 댓글