Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | |||||
| 3 | 4 | 5 | 6 | 7 | 8 | 9 |
| 10 | 11 | 12 | 13 | 14 | 15 | 16 |
| 17 | 18 | 19 | 20 | 21 | 22 | 23 |
| 24 | 25 | 26 | 27 | 28 | 29 | 30 |
| 31 |
Tags
- 가상환경만들기
- GCP
- 아나콘다설치
- 가상환경설정
- 커널
- python
- 아이펠톤
- MongoDB
- 데이터분석
- 아나콘다3
- 모두의연구소
- nosql
- jupyter
- 데이터분석환경
- 데이터분석부트캠프
- 데이터사이언티스트
- 데이터사이언티스트 #데이터 #모두의연구소 #데이터분석부트캠프
- 데이터
- 데이터전처리
- 데이터싸이언티스트
- 데이터사시언티스트 #데이터 #모두의연구소
- anaconda3
Archives
- Today
- Total
EH_dream
Docker학습_25.07.17 본문
Docker
도커(Docker)는 애플리케이션을 컨테이너라는 단위로 패키징해서 실행하는 플랫폼 쉽게 말하면,
어떤 프로그램이 "어떤 환경에서도 똑같이 작동하도록 만들어주는 기술”
핵심개념
- 컨테이너 (Container)
- 프로그램, 라이브러리, 설정파일 등을 묶은 실행 단위
- 가볍고 빠르기 때문에 가상머신보다 효율적이다.
- 이미지(Image)
- 컨테이너를 만들기 위한 설계도
- Dockerfile을 기반으로 생성한다.
- Dockerfile
- 이미지 만들기 위한 스크립트이다.
- 예시 : ‘ 이 OS 기반으로 Python을 설치하고 내 코드 복사해 넣고 실행해줘’
- 도커 허브 (Docker Hub)
- 이미지들을 올리고 받을 수 있는 공식 저장소 이다.
도커의 구조
- Docker Client
- 사용자가 docker 명령어를 치면 클라이언트가 요청을 도커 데몬에게 전달
- 사용예시 : docker build, docker run, docker pull
- 사용자는 클라이언트를 통해 간접적으로 도커를 조작한다.
- 사용자가 docker 명령어를 치면 클라이언트가 요청을 도커 데몬에게 전달
- Docker Daemon
- 실제로 컨테이너를 생성, 실행, 관리하는 백그라운드 서비스이다.
- 명령을 받고 컨테이너, 이미지 네트워크, 볼륨을 관리한다.
- 데몬은 보통 docker로 실행된다.
- 클라이언트와 REST API를 통해 통신한다.
- Docker Image
- 컨테이너를 실행하기위한 설계도로 정적인 파일이다.
- 리눅스 기반 스시템, 앱 실행에 필요한 설정 / 라이브러리를 포함한다.
- 계층 구조 (layered) 로 되어있거, 같은 부분은 캐시되기 때문에 효율적이다.
- 컨테이너를 실행하기위한 설계도로 정적인 파일이다.
- Docker Container
- 이미지를 기반으로 실제로 실행중인 인스턴스 ( 프로세스 ) 이다.
- 이미지의 복사본을 메모리에 띄워서 실행
- 서로 족립적이고 격리되어 있다. 하지만 같은 커널을 공유한다.
- 이미지를 기반으로 실제로 실행중인 인스턴스 ( 프로세스 ) 이다.
- Docker Registry
- 이미지를 저장하고 배포하는 저장소이다.
- 기본은 Docker Hub
- 기업은 자체 레지스트리 (Private registry) 운영이 가능하다.
- 이미지를 저장하고 배포하는 저장소이다.
사용하는 이유
- 개발 환경을 통일 하기 위해서 ( 로컬 ↔ 서버환경)
- 배포 자동화 (CI / CD)
- 여러 앱을 격리된 상태로 실행이 가능하다 ( 작은 가상 머신처럼 사용가능 )
- 테스트 환경을 쉽게 세팅이 가능하다.
보조 구성요소
| Dockerfile | 이미지를 생성하기 위한 설정 파일 |
| Volume | 컨테이너끼리 공유하거나, 데이터를 유지하기 위한 디스크 공간 |
| Network | 컨테이너 간 통신을 위한 가상 네트워크 구성 |
구조 흐름 요약
[User] → docker CLI
↓
[Docker Client] → REST API → [Docker Daemon]
↓
이미지 생성 / 컨테이너 실행
↓
Docker Image → Docker Container
↑
Docker Registry (ex. Docker Hub)
버추얼 머신과 도커의 차이
버추얼머신 (VM) 은 가상환경의 한 종류로 컴퓨터 안에 또 하나의 진짜 컴퓨터를 만든것이고,
도커는 프로그램 실행에 필요한 최소한의 환경만 가볍게 만든것이다.
격리된 환경에서 실행한다는 점은 같지만 무겁고 느린게 VM, 가볍고 빠른게 Docker라고 생각하면된다.
💡참고 예시 상황
VM이 필요한경우
- 윈도우에서 리눅스 전체 환경을 띄워야 할때
- 서로 완전히 격리된 보안이 필요한 테스트 환경이 필요할때
Docker가 유리한 경우
- 빠르게 앱 실행하고, 배포 자동화를 할 때
- 여러 개의 앱을 격리된 상태로 띄울 때