Docker Hub (도커 허브)
1. Docker
- Linux Container 기반의 가상화 기술을 제공하는 오픈 소스 플랫폼
- Linux container 기반으로 만든 OS레벨 가상화 구현을 도와주는 프로그램
- Application 패키징 툴
2. Docker의 핵심 개념
- Docker는 가볍고 빠르게 Application을 구축, 배포, 실행할 수 있는 강력한 도구
- Docker Engine을 통해 Container 관리, Docker Image를 기반으로 여러 개의 Container 실행 가능
- 이러한 Container 기술을 활용하여 효율적이고 유연한 Application 운영 (응용 프로그램 개발, 배포 및 실행)이 가능
- Container는 Host OS와 커널을 공유하면서도 서로 격리되어 실행, Application을 다양한 환경에서 일관성 있게 실행 가능한 장점
2.1 Docker Engine : Docker의 핵심 엔진, Container 생성 및 관리
- Docker Daemon(데몬) : Container 생성, 실행, 관리하는 백그라운드 프로세스
- CLI (Command Line Interface) : 명령줄을 통해 Docker 제어 도구
- REST API : 다른 프로그램이 Docker를 제어할 수 있도록 제공하는 인터페이스
2.2 Docker Image : 이미 만들어진 컨테이너가 적용된 기초
- 응용 프로그램을 실행하는 데 필요한 모든 것을 포함하는 읽기 전용 템플릿
- 특정 Application과 필요한 실행 환경 포함
- Application과 그에 필요한 모든 의존성 (코드, 라이브러리, 설정 파일, 시스템 도구, 런타임 등)을 패키징
- Dockerfile을 사용하여 정의됨 (*Dockerfile : Docker Image를 생성하기 위한 스크립트 파일 - Application을 구동하기 위해 필요한 파일, 프레임워크, 라이브러리, 환경 변수, 실행할 명령어 등 정의)
- Container를 실행하기 위한 템플릿
- 계층화되어 있어 효율적인 관리 가능 (Docker Hub와 같은 저장소에 공유 가능)
2.3 Docker Container : Kernel 에 올라가는 Container (가상 컴퓨터)
- Docker Image를 실행한 상태를 의미 (== Docker Image의 인스턴스)
- 응용 프로그램을 실행할 환경 제공
- Application과 그에 필요한 모든 의존성 (라이브러리, 시스템 도구, 코드, 런타임 등)을 패키징하여 하나의 독립적 유닛으로 다룰 수 있게 해 줌
- Docker Image를 기반으로 생성
- Host OS와 독립적으로 실행됨 (각 Container는 격리된 파일 시스템, 네트워크 공간을 가짐)
- 경량화된 실행 환경 제공
- 필요할 때 생성하고, 사용 후 삭제 가능
3. Docker Image 배포 과정
1) 우리가 개발하고 있는 로컬 환경(PC)과 Server 각각에 Docker 설치
2) Application을 구동하는데 필요한 Dockerfile 작성
3) Docker Image 생성 (== Application 스냅샷)
4) Docker Image를 Container 레지스트리에 업로드
5) Server에서 Docker Image 다운로드
6) Container 실행
4. Docker VS 가상 머신(VM)
Docker와 가상 머신(VM) 모두 애플리케이션을 격리하여 실행하는 기술
구분 | 도커 (Docker) | 가상 머신(Virtual Machine) |
가상화 대상 | Application | 운영체제 (OS) |
실행 방식 | Host OS 위에서 컨테이너를 실행 (프로세스 격리) |
하이퍼바이저 위에서 별도의 OS를 실행 (운영체제 격리) |
성능 | 가볍고 빠름 | 무겁고 비교적 느림 |
자원 활용 | 최소한의 리소스 사용 | OS 별로 많은 리소스 필요 |
배포/부팅 속도 | 빠르게 배포/부팅 가능 | 부팅 시간이 필요하여 상대적으로 느림 |
이식성 | 높음 | 상대적으로 낮음 |
Docker는 별도의 OS(운영체제) 설치 x, 호스트 OS의 커널을 공유하며 실행
가상 머신(VM) 보다 더 가볍고 빠르게 동작 가능
5. Docker 기본 명령어들
Docker 버전 확인
# Docker 버전 확인
#docker --version
docker -v
Docker Image 다운로드
# Docker Image 다운
# 태그는 필수 x
docker pull {이미지명}:{태그} # ex) docker pull python:3
컴퓨터 내 Docker Image 확인
# 컴퓨터 내 Docker Image 확인
docker images
Docker Image로 Container 생성
# Docker Image로 Container 생성
docker create {옵션} {이미지명}:{태그} # ex) docker create -it python
만들어진 Container 시작 (Docker Image에 CMD로 지정해 놓은 작업시키기)
# 만들어진 Container 시작 (Docker Image에 CMD로 지정해놓은 작업 시키기)
docker start {컨테이너 id 또는 이름}
Container로 들어가기 (Container 내 CLI 이용)
# Container로 들어가기 (Container 내 CLI 이용)
docker attach {컨테이너 id 또는 이름}
Docker Image를 다운 받아(없을 시에만) 바로 Container 실행하여 진입
# Docker Image를 다운 받아(없을 시에만) 바로 Container 실행하여 진입
docker run {이미지명}:{태그} # ex) docker -it run python:3
옵션 | 설명 |
-d | 데몬으로 실행(뒤에서 - 안 보이는 곳(백그라운드)에서 알아서 돌라고 하기) |
-it | 컨테이너로 들어갔을 때 bash로 CLI 입출력을 사용할 수 있도록 해 줍니다. |
--name {이름} | 컨테이너 이름 지정 |
-p {호스트의 포트 번호}:{컨테이너의 포트 번호} | 호스트와 컨테이너의 포트를 연결합니다. |
--rm | 컨테이너가 종료되면{내부에서 돌아가는 작업이 끝나면} 컨테이너를 제거합니다. |
-v {호스트의 디렉토리}:{컨테이너의 디렉토리} | 호스트와 컨테이너의 디렉토리를 연결합니다. |
동작 중인 Container 재시작
# 동작 중인 Container 재시작
docker restart {컨테이너 id 또는 이름}
Docker Container의 내부 쉘에서 빠져나오기 (Container 종료)
# Docker Container의 내부 쉘에서 빠져나오기 (Container 종료)
exit # or Ctrl + D
Docker Container의 내부 쉘에서 빠져나오기 (Container 종료 x)
# Docker Container의 내부 쉘에서 빠져나오기 (Container 종료 x)
Ctrl + P, Q
동작 중인 Container 확인
# 동작 중인 Container 확인
# 동작 중이 아닌 Container 들도 모두 확인 : -a 옵션
docker ps
Container 삭제
# 컨테이너 삭제
docker rm {컨테이너 id 또는 이름}
# 모든 컨테이너 삭제
docker rm `docker ps -a -q`
Docker Image 삭제
# Docker Image 삭제
# Container가 있을 시 강제 삭제 : -f 옵션
docker rmi {옵션} {이미지 id}
모든 Container와 이미지 등 Docker 요소 중지 및 삭제
# 모든 Container와 이미지 등 Docker 요소 중지 및 삭제
# 모든 컨테이너 중지
docker stop $(docker ps -aq)
# 사용되지 않는 모든 도커 요소(컨테이너, 이미지, 네트워크, 볼륨 등) 삭제
docker system prune -a
# 아래를 복붙하여 함께 실행하면 편리
docker stop $(docker ps -aq)
docker system prune -a
Dockerfile로 Docker Image 생성
# Dockerfile 로 Docker Image 생성
# Dockerfile 파일이 있는 디렉토리 기준
# 마지막의 . 이 상대주소
docker build -t {이미지명} .
Docker Compose 실행
# Docker Compose 실행
# 여러 개의 Docker 컨테이너를 쉽게 관리 및 실행하는 명령어
# docker-compose 파일이 있는 디렉토리 기준
# 백그라운드에서 데몬으로 실행되도록 하려면 : -d 옵션
docker-compose up
Docker Docs 명령어
Docker 명령어 참고
https://www.yalco.kr/36_docker/
생활코딩 유튜브 Docker 입문
https://www.youtube.com/watch?v=Ps8HDIAyPD0&list=PLuHgQVnccGMDeMJsGq2O-55Ymtx0IdKWf&index=2
생활코딩 유튜브 Docker Image 생성
https://www.youtube.com/watch?v=0kQC19w0gTI
드림코딩 유튜브 Docker
https://www.youtube.com/watch?v=LXJhA3VWXFA&t=162s
얄팍한 코딩 유튜브 Docker
'🛠️ Tools & IDE > Docker' 카테고리의 다른 글
[Docker] Dockerfile 사용, Docker Image 생성 및 Container 실행 (0) | 2025.02.15 |
---|---|
[Docker] Docker 설치 - Linux 우분투 22.04.2 (0) | 2025.02.02 |
[Docker] Docker 설치 - 윈도우 11 (0) | 2025.01.31 |