230506 Docker
이번 포스팅에서는 Docker에 대해 학습한 내용을 기록하고자 한다.
Docker
Docker는 컨테이너 기술로, 컨테이너를 생성하고 관리하는데 사용된다.
VM
VM과 비교했을때, VM 또한 도커와 같이 환경을 분리하고, 각 환경별로 구체적인 환경설정을 분리하는 것 또한 가능하다. 그리고 구성한 환경 설정을 공유할 수 있고, VM 간의 의존성을 낮출 수 있다.
위의 장점이 있지만, 환경 구성을 위해 각 각의 VM의 기반으로 OS를 설치해야 되기 때문에 시스템의 리소스가 낭비될 수 있으며, 퍼포먼스가 느려지고, 부팅 시간이 길어지는 단점이 있다.
Docker 구성
Docker 엔진 위에 복수의 컨테이너들을 띄워서 구성할 수 있다. 물론 Docker container 내에도 OS를 설치하지만 VM의 OS보다 훨씬 가볍고 빠르다. Share, Re-building, Distribution에 용이하며, apps와 환경을 Encapsulation한다.
Docker image
Container는 이미지를 기반으로 하기 때문에 이미지 생성을 우선 해야한다.
각 각의 이미지에는 개별 파일 시스템이 있기 때문에 Dockerfile이 위치한 경로에 있는 파일들을 Docker의 파일 시스템에 복사해서 처리해줘야 한다.
1 | FROM node:14 |
Docker image build
위에서 작성한 Dockerfile을 아래 명령을 통해 실행한다.
1 | docker build . |
build 결과로 IMAGE ID를 얻게 되는데, 해당 아이디로 아래와 같이 docker container를 올릴 수 있다.
1 | # 3000 port에 실행중인 애플리케이션을 외부 로컬 호스트 시스템에 연결을 해줘야한다. |
모든 컨테이너를 Stop & Remove 하기
1 | # -q 옵션은 컨테이너의 아이디만 출력되도록 하는 옵션 |
Docker foundation
- Images & Containers
- Data & Volumes(in Containers)
- Containers & Networking
Real life
- Multi-Container Projects
- Using Docker-Compose
- Utility Containers
- Deploying Docker Containers
Kubernetes
- Kubernetes Introduction & Basics
- Kubernetes: Data & Volumes
- Kubernetes: Networking
- Deploying a Kubernetes cluster
학습 가이드라인
- Watch the videos & code along
- Repeat concepts
- Google, Stackoverflow
- Ask & Answer in Q&A Section