| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- Apache kafka
- 빅데이터
- 도커
- 데이터 수집
- wsl2
- docker desktop
- Django
- big data
- Dockerfile
- hdfs
- Docker #도커 #이미지 #컨테이너 #리눅스 #Back-end
- 하둡
- orchestration
- nginx
- hadoop
- 이미지
- docker-compose
- container
- Kafka
- Jupyter notebook
- docker
- Window 10
- hyper-v
- topic
- Today
- Total
개발자 일기장
[Docker #1/도커 개념정리] 본문

개발자들의 필수 스택인 도커?
도커는 리눅스 상에서 컨테이너 방식으로 프로세스를 격리해서 실행하고 관리할 수 있도록 도와주며, 계층화된 파일 시스템에 기반해 효율적으로 이미지(프로세스 실행 환경)을 구축할 수 있도록 해준다.
도커를 사용하면 이 이미지를 기반으로 컨테이너를 실행할 수 있으며, 다시 특정 컨테이너의 상태를 변경해 이미지로 만들 수 있다.
이렇게 만들어진 이미지는 파일로 보관하거나 원격 저장소를 사용해 쉽게 공유할 수 있으며, 도커만 설치되어 있다면 필요할 때 언제 어디서나 컨테이너로 실행하는 것이 가능하다.
- 도커에서 컨테이너란?-
컨테이너는 하드웨어를 소프트웨어로 재구현하는 가상화(= 가상머신)와는 달리 프로세스의 실행 환경을 격리한다.
컨테이너가 실행되고 있는 호스트 입장에서 컨테이너는 단순히 프로세스에 불과합니다만, 사용자나 컨테이너 입장에서는 호스트와는 무관하게 동작하는 가상머신처럼 보인다.
그래서 컨테이너형 가상화라고 부르기도 하는데, 도커는 이러한 컨테이너 형 가상화를 지원하는 도구 중 하나이다.
LXC(리눅스 컨테이너)로부터 파생된 도커 컨테이너는 가상 머신과는 근본적으로 다른 접근이라는 점을 짚어둘 필요가 있다.
- 도커에서 이미지란?-
이미지는 컨테이너와 함께 도커에서 가장 중요한 개 념 중 하나로 컨테이너 실행에 필요한 파일과 설정 값 등을 포함하고 있는 것을 말한다. 컨테이너는 이미지를 실행한 상태 라고 볼 수 있고 추가되거나 변하는 값은 컨테이너에 저장된다. 하나의 이미지에서 여러 개의 컨테이너를 생성할 수 있고 컨테이너의 상태가 바뀌거나 컨테이너가 삭제되더라도 이미지는 변하지않는다. DockerFile은 컨테이너를 실행하기 위해 모든 정보를 포함해야하는 이미지를 생성할 수 있게 하는 명령어를 모아둔 것으로 이미지에 설치해야 하는 패키지, 추가해야 하는 소스코드, 실행해야 하는 명령어와 셸 스크립트 등을 하나의 파일로 기록해 둔 것이다. DockerFile을 이용하면 직접 컨테이너를 생성 하고 이미지로 변경해야하는 번거로움을 덜고 Git과 같은 개발도구를 통해 애플리케이션의 빌드 및 배포를 자동화할 수 있다.
-도커를 사용하는 의의-
1. 변화하지 않는 실행환경으로 멱등성 확보
2. 코드를 통한 실행 환경 구축 및 애플리케이션 구성
3. 실행 환경과 애플리케이션의 일체화로 이식성 향상
4. 시스템을 구성하는 애플리케이션 및 미들웨어의 관리 용이성

마치 가상 머신 같지만 분명 가상 머신 과는 다른점이 존재하며, 이것이 도커의 핵심 기술이다. 호스트OS 위에 또다른 OS를 가상화 하는 것이 아니라 같은 OS에서 프로세스를 격리 시켜 마치 독립적인 OS에서 실행한것 처럼 사용한다. 독립된 공간을 만들어 프로세스를 실행하기 때문에 실행속도가 빠르고 일반적으로 cpu, memory, network 성능저하가 거의 없다(호스트 대비 99% 성능)
성능과 개발 편의성 등 모든 이상적인 조건을 만족하는 도커는 그 생태계 또한 활발하여 도커와 호환성을 제공해주는 생태계가 활발하다. 거의 대부분의 오픈 소스들이 도커파일 및 도커 이미지를 퍼블릭 레포지토리에 공유하고있고 이를 이용하여 유연하게 개발 및 테스트를 진행할 수 있다.

다음장에선, 도커를 실제 환경(Window/Linux)에서 설치 해보고 몇가지 간단한 테스트를 진행해보도록 하겠다.
'Docker' 카테고리의 다른 글
| [Docker #5/설치하고 시작하기(Window)] (0) | 2020.11.25 |
|---|---|
| [Docker #4/docker command 정리] (0) | 2020.11.25 |
| [Docker #3/도커 컴포즈 설치 및 활용] (0) | 2020.11.24 |
| [Docker #2/설치하고 시작하기(Linux)] (0) | 2020.11.22 |