Docker
1. Docker의 기본 개념
- Docker 이미지: 컨테이너를 생성하기 위한 템플릿. 소프트웨어, 라이브러리, 설정 등을 포함.
- Docker 컨테이너: 이미지를 기반으로 실행되는 독립적인 환경.
- Docker 레지스트리: 이미지를 저장하고 배포하는 중앙 저장소(Docker Hub 등).
- 이미지 레이어: 이미지의 구성 단위로, 읽기 전용이며 공유 가능.
2. 소프트웨어 설치 방식
- Docker 레지스트리 사용:
- docker pull 명령어를 통해 이미지를 다운로드.
- Docker Hub가 기본 레지스트리.
- 이미지 파일 사용:
- docker save로 이미지를 저장하고 docker load로 로드.
- Dockerfile 빌드:
- Dockerfile에 정의된 명령어로 이미지를 생성.
- 예: docker build -t [이미지명] [디렉토리]
3. 태그와 리포지토리
- 리포지토리: 관련된 이미지들의 모음(예: nginx 리포지토리).
- 태그: 이미지 버전을 식별하는 레이블(예: nginx:latest).
- 이름 형식: [레지스트리주소]/[사용자이름]/[리포지토리명]:[태그]
4. Docker 이미지와 레이어
- 이미지는 여러 레이어로 구성되며, 레이어는 읽기 전용.
- 공통 레이어는 공유되므로 저장 공간을 절약.
- 컨테이너 실행 시 쓰기 가능한 레이어가 추가됨.
5. 컨테이너 격리
- 유니온 파일 시스템(UFS): 여러 레이어를 하나의 파일 시스템으로 통합.
- 네임스페이스(MNT): 각 컨테이너의 파일 시스템을 호스트와 독립적으로 관리.
- chroot: 컨테이너 내부 파일 시스템을 격리.
6. Docker의 장점
- 효율성:
- 레이어 재사용으로 대역폭과 저장 공간 절약.
- 공통 레이어는 한 번만 다운로드.
- 이식성:
- 동일한 이미지를 사용하여 어디서나 컨테이너 실행 가능.
- 격리와 보안:
- 네임스페이스와 chroot를 통한 프로세스 및 파일 시스템 격리.
- 자동화:
- Dockerfile과 CI/CD 파이프라인으로 빌드와 배포 자동화.
7. 주요 명령어
- 이미지 관련:
- docker pull [이미지명]: 이미지 다운로드.
- docker build -t [이미지명] [디렉토리]: Dockerfile로 이미지 빌드.
- docker rmi [이미지명]: 이미지 삭제.
- 컨테이너 관련:
- docker run [옵션] [이미지명]: 컨테이너 실행.
- docker ps: 실행 중인 컨테이너 목록.
- docker stop [컨테이너ID]: 컨테이너 중지.
- docker rm [컨테이너ID]: 컨테이너 삭제.
- 파일 관련:
- docker save [이미지명] -o [파일명]: 이미지를 파일로 저장.
- docker load -i [파일명]: 파일에서 이미지 로드.
8. 레이어 기반 설계의 장점
- 효율적인 이미지 관리:
- 동일한 부모 이미지를 공유하여 저장 공간 절약.
- 빠른 배포:
- 필요한 레이어만 다운로드.
- 유연성:
- 사용자 요구에 맞춘 커스터마이징 가능.
9. Docker Hub
- Docker의 기본 레지스트리 서비스.
- 공개/비공개 리포지토리를 통해 이미지 공유 가능.
- 공식 이미지와 커뮤니티 이미지 제공.
10. 최신 도커 생태계
- Docker Compose: 여러 컨테이너를 정의하고 실행.
- Kubernetes: 컨테이너 오케스트레이션 도구.
- Docker Desktop: macOS, Windows에서 Docker 환경 제공.
결론: Docker는 효율적이고 이식성 높은 컨테이너 기술로, 현대적인 소프트웨어 개발과 배포의 핵심 도구로 자리 잡았습니다.
'Docker' 카테고리의 다른 글
도커 인 액션 2장 (0) | 2024.12.04 |
---|---|
도커 인 액션 1장 (0) | 2024.12.04 |
ext4 (Extended Filesystem 4) (1) | 2024.12.04 |
Docker 레이어 (0) | 2024.12.04 |
Root 파일 시스템(root filesystem) (1) | 2024.12.04 |