일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 데이터 파이프라인
- sql
- S3
- airflow.cfg
- dockerfile
- TIL
- 가상환경
- 컴퓨터 네트워크
- PYTHON
- TCP
- Django
- redshift
- 데이터 엔지니어링
- AWS
- 데이터 웨어하우스
- Go
- 정리
- 데브코스
- 데이터엔지니어링
- 파이썬
- 데이터베이스
- Docker
- 운영체제
- airflow
- 컴퓨터네트워크
- linux
- http
- 종류
- 자료구조
- HADOOP
- Today
- Total
홍카나의 공부방
[Docker] Docker를 사용하는 이유 본문
Docker를 사용하는 이유는 여러가지가 있겠지만,
핵심적인 이유 중 하나는 "내가 만든 프로그램이 다른 컴퓨터에서는 돌아가지 않는다면?"
이 물음에 대한 해결을 하기 위함이 가장 클 것이다.
다른 컴퓨터에서 돌아가지 않는 이유도 많을 텐데,
1. 운영체제 이슈 등으로 환경 설정이 제대로 되지 않았거나 ( 혹은 못하거나 )
2. 라이브러리 dismatching이 생기거나
3. 설치 과정이 제대로 진행되지 못하거나
이런 이유들로 프로그램이 다른 컴퓨터에서 모두 실행됨을 보장하지 못한다.
이를 해결하기 위해서 virtual machine, docker 등이 등장했다.
Docker는 나의 프로그램, 컴퓨터 환경을 패키징 및 배포하여 그대로 사용하기 위한 Container 기술이다.
패키징 된 프로그램 모음집은 다른 컴퓨터에서 그대로 사용할 수 있을 것이다.
위 그림처럼 여러 환경들(바이너리 파일, 라이브러리, 어플리케이션)을 한꺼번에 묶은 Docker Image를
Docker Engine상에서 독립적으로 실행한 것을 Docker Container라고 한다.
Docker Container에서 실행되는 프로그램은 Host 컴퓨터의 운영체제 등에 상관없이 일관되게 실행된다.
이처럼 Docker의 목표는 SW를 일관되게 빌드하고, 실행하고, 배포하기 위해 만들어진 것이다.
Virtual Machine과 Docker Container가 주로 비교된다.
차이점에 대해 간단하게 이야기 해보자면,
가상 머신은 하드웨어를 추상화하여, 한 컴퓨터 위에 다른 컴퓨터를 올리는 것과 같다.
즉, 가상 머신은 자신만의 OS를 필요로 한다. ( 리눅스면 리눅스, 윈도우면 윈도우... )
AWS의 EC2가 대표적인 클라우드 가상 머신 서비스다.
Docker 컨테이너는 컨테이너만의 독립된 OS를 따로 필요로 하지 않고,
자체적인 리눅스가 돌아가는 Docker Engine 위에서 독립적으로 실행된다.
host OS가 맥, 윈도우, 리눅스 등 어떤 운영체제냐와 상관 없이
host 실행 환경과 분리된 독립된 실행 환경을 제공하기 때문에
리눅스 기반 application이면 Docker 위에서 모두 돌아간다.
'Data Engineering > Docker' 카테고리의 다른 글
[Docker] Image build - DockerHub - CI/CD 프로세스 실습 (0) | 2023.06.26 |
---|---|
[Docker] Docker + Registry(Hub) 관련 명령어 모음 (0) | 2023.06.25 |
[Docker] docker run과 docker exec의 차이점 (0) | 2023.06.25 |
[Docker] Docker Image 빌드 프로세스 (0) | 2023.06.25 |
[Docker, Airflow] Windows Docker 기반 Airflow에서 airflow.cfg 접근+수정 (0) | 2023.06.05 |