Docker?
라이브러리 버전, 환경설정, 설치 파일 등의 문제로 내가 만든 프로그램이 내 개발환경 외부에서는 돌아가지 않을 때 솔루션 중 하나.
≫ 소프트웨어를 일관되게 빌드하고 실행, 배포하기 위해 사용!
≫ 개발/ 테스트/ 프로덕션을 모두 공통된 동일한 환경에서 실행 가능
* 빌드: 내가 개발한 개발환경을 그대로 패키징해서 Client(프로덕션 환경)가 사용하도록 한다.
빌드한 파일은 Docker hub와 같은 공용 레포지토리에 올려 공유

도커 엔진위에서 OS나 다른 container와 충돌이 생기지 않게 별도로 독립된 Docker Container 에서 실행
예를 들어 맥북 위에 Docker를 사용하고 있다면,
맥북 > 맥킨토시 운영체제 > 도커 > 도커컨테이너 >개별어플리케이션
∴ Light weight ↔ VM은 OS 자체를 내부에 갖고 있음
다른 사람이 내가 만든 docker image를 사용하고 싶다면 docker hub(=Docker Registry) 에서 다운로드

도커 사용방법 순서
1. 소프트웨어의 환경변수 세팅, 디펜던시를 Dockerfile로 만들어 빌드 Buile 해서 Docker Image 생성
2. 내컴퓨터에서 그대로 실행하려면 docker command로 컨테이너 위에서 실행 가능 run
3. 다른 사람들도 사용할 수 있게 하고 싶다면(access 권한이 있다는 전제하에) Docker Registry (or 프로덕션 서버)에 올려서 공유
Virtual Machine(VM)
컴퓨터 하드웨어 단의 추상화 ∵ 하드웨어 안에 또다른 하드웨어(가상환경도 OS 필요)
Virtual Machine(VM)의 예시
- AWS의 EC2
- 오픈스택의 Nova

| Docker Container | Virtual Machine | |
| 장점 | 커맨드 라인(CLI) 애플리케이션은 만들기에 적합 light weight함 다수의 소프트웨어를 각 컨테이너에서 독립적으로 실행가능 |
다수의 소프트웨어를 각 VM단에서 독립적으로 실행가능 VM은 다른 하드웨어라서 상관없음(훨씬 더 호환성이 높음) 다른 컴퓨터임(매우 독립적) |
| 단점 | 어디서 빌드, 실행되는지에 따라 호환 이슈 Host OS에 따라 지원하는 컨테이너 OS가 다름 그래픽 사용자 인터페이스(GUI) 개발 에는 한계가 있음 Cross-platform compatibility 지원 어려움 |
각 VM은 자신만의 OS 필요 유료 OS라면 라이센스 비용 필요 부팅하는데 시간이 걸림 OS위에 OS가 올라가는 거라서 자원을 많이 사용 VM들끼리 자원을 나눠서 사용 몇개의 SW밖에 돌릴 수 없음 |
'데브코스 데이터엔지니어링' 카테고리의 다른 글
| Docker 명령어 정리 Image, Hub, Container, logs, exec, Volume (0) | 2024.11.19 |
|---|---|
| [Docker] Mac OS 맥에서 Docker Desktop 설치 & 도커 컨테이너 생성 (0) | 2024.11.19 |
| [ETL] Airflow DAG 이슈 해결 Operator Executor (0) | 2024.11.19 |
| Git, Github 기본 용어 정리 (0) | 2024.11.18 |
| CI/CD 자동화 소프트웨어 빌드 devops (0) | 2024.11.18 |