Docker Toolbox 설치 - https://www.docker.com/toolbox
Solomon Hykes (Docker's co-founder & CTO) 가
dotCloud 내부 프로젝트로 Docker 시작,
2013년 3월 Open Source로 release (Apache 2.0 license)
Docker: 리눅스 기반의 가상화 솔루션.
다른 가상화 솔루션들과 다른 점은 리눅스 LXC를 기반으로 가상화 환경을 구성하여, 기존 가상화 솔루션에 비해 훨씬 가볍다는 점.
Docker에서는 이 가상화 공간을 "컨테이너(container)"라고 부르는데, 물류에서의 화물 컨테이너와 같은 역할
Docker는 기본적으로 클라이언트/서버 아키텍처로 동작.
서버측에 docker 데몬(daemon)이 떠 있고, 클라이언트 측에서 tcp 프로토콜로 서버에 access하는 구조. (REST API도 제공)
Docker의 구성요소
출처: http://www.slideshare.net/rkawkxms/docker-container
Docker Server & Client
Docker Server(Docker Daemon)
Host machine에서 컨테이너를 관리하고 실행하는 데몬
Docker Client
Docker와 사용자 간 인터페이스 제공
출처: http://www.slideshare.net/rkawkxms/docker-container
Docker Registry
Image 저장소 (Public 과 Private)
Docker Hub는 Docker, Inc에서 제공하는 public registry
출처: http://www.slideshare.net/rkawkxms/docker-container
Docker Image & Container
출처: http://www.slideshare.net/rkawkxms/docker-container
Docker 기반 기술 (Underlying Tech)
출처: http://www.slideshare.net/rkawkxms/docker-container
LXC & libcontainer
출처: http://www.slideshare.net/rkawkxms/docker-container
cgroups (Control groups)
출처: http://www.slideshare.net/rkawkxms/docker-container
namespaces
출처: http://www.slideshare.net/rkawkxms/docker-container
가상화 컨테이너는 "이미지(image)" 형태로 저장되고 관리.
이미지는 기존 VM 방식의 가상화 이미지들과 달리 경량.
Docker 이미지들은 주로 Dockerfile이라는 설정파일로 빌드되고, 빌드 시에는 git과 유사한 형태로 증감분만 저장되는 방식이며, Docker에서 공개한 퍼블릭 저장소 또는 private 공간에 저장
Docker Networking
Default gateway로 Linux bridge인 docker0 생성
외부 네트워크로 나가는 패킷을 위해 NAT 작업 수행
컨테이너 간 네트워크 연결
각 컨테이너에 격리된 네트워크 공간을 만들고 컨테이너의 eth0에 static IP 할당
컨테이너 내부의 eth0와 docker0을 연결하기 위한 veth 인터페이스 생성
출처: http://www.slideshare.net/rkawkxms/docker-container
1. 출처
- Docker란 무엇인가? : Docker 기본 사용법
2. 참고 자료
- Docker 웹사이트
3. Advanced - The Docker Ecosystem
- Service discovery tools
: etcd, consul, zookeeper, ...
- Networking tools
: flannel, weave, pipework
- Orchestration tools
: fleet, swarm, kubernetes, marathon, mesos, ...
Docker Toolbox 설치 - https://www.docker.com/toolbox
OS X(or Windows) natively docker를 지원하지는 않습니다.
그래서, VM을 생성하고 그 안에서 docker daemon이 설치되고, docker image가 다운로드/생성되고, docker container가 실행
Docker Machine
Docker host 서버를 생성할 수 있게 해 주는 도구
On your computer, on cloud providers, and inside your own data center
Docker host 서버를 생성하고, Docker를 설치하고, Docker client가 해당 서버와 통신하도록 설정
Docker Compose
복잡한 application을 Docker로 정의하고 실행하기 위한 툴
여러 개의 컨테이너로 구성된 application을 하나의 파일에 정의하고, 실행
docker-compose up
docker-compose scale web=2
그림 출처: http://www.slideshare.net/RyanHodgin/docker-overview-rise-of-the-containers
Docker 명령어 (첫 시간 실습에 주로 사용될)