SlideShare una empresa de Scribd logo
1 de 39
Descargar para leer sin conexión
Docker 소개 30M 
myrisinsun@gmail.com
시작하기전에 
간단한 용어 소개를 먼저 
『가상화』 
『Hypervisor』
『가상화』 
wikipedia 에서는 다음과 같이 정의 
컴퓨터에서 컴퓨터 리소스의 추상화을 일컫는 광범위한 용어 
물리적인 컴퓨터 리소스의 특징을 
다른 시스템, 응용 프로그램, 최종 사용자들이 
리소스와 상호 작용하는 방식으로부터 감추는 기술 
어렵고 복잡해~@.@ 
(그림으로 예를 들어보면)
『가상화』 기술의 예 
Oracle 
OS 
서버 
Tomcat 
OS 
서버 
Oracle 
OS 
가상화기술 
MySQL 
OS 
일반서버 쉽게(?) 볼 수 있는 ‘서버 가상화’
『Hypervisor』 
wikipedia 에서는 다음과 같이 정의 
호스트 컴퓨터에서 다수의 운영 체제(operating system)를 
동시에 실행하기 위한 논리적 플랫폼(platform) 
Hypervisor 는 VMM(Virtual Machine Monitor)으로도 불림. 
(이것도 그림으로 보면..)
『Hypervisor』 2가지 형태 
Oracle 
GuestOS 
Oracle 
GuestOS 
Hypervisor 
Hardware 
Type-I (Bare-metal) 
GuestOS 
Tomcat 
Hypervisor 
Hardware 
Oracle 
GuestOS 
Hosted OS 
Type-II (Hosted)
Docker 소개 시작! 
앞에서 VM에 대한 이야기는 왜 했을까? 
Docker는.. 
VM과 비슷해보이지만 다름! 
그리고 VM과는 그 '의도'가 다름
그렇다면.. Docker란? 
Docker
Docker는.. 
(고래 등짝에 올려진 컨테이너 박스들처럼) 
프로그램과 실행에 필요한것들을 박스(?)로 포장하고, 
포장된 박스(?)를 손쉽게 이동해서, 
어디서나 간단하게 실행할 수 있는 
도구와 환경을 제공하는 오픈소스 플랫폼. 
Write Once, 
Run Anywhere 
Build, Ship and Run 
Any App, Anywhere
Docker와 VM 다른점 『구조』 
Image. https://www.docker.com/whatisdocker/ 
Hypervisor의 자리를 Docker Engine이 대체 
VM과는 다르게 (형태를 갖춘) GuestOS를 가지지 않음
Docker와 VM 다른점 『활용』 
기존의 VM은 가상화를 통해 
격리된 실행 환경을 만들었다면 
Docker 또한 격리된 실행 환경을 제공하지만 
이와함께 Packaging(포장), Delivery(전달)등 
통합적인 환경을 제공. 
(다음장에서 간단한 그림으로 확인)
Docker Flow 요약 
Docker 
Repositories 
myServer 
Docker 
Repositories 
Docker Engine 
Server 1 
Docker Engine 
Server 2 
Docker Engine 
Server 3 
docker push myid:1.0 
docker push 
myserver.com:5000/myid:0.3 
docker pull myid:1.0 
docker pull 
myserver.com:5000/myid:0.3 
docker build 
Dockerfile
Docker Repositories 종류 
Docker 
Repositories 
<PUBLIC> 
myServer 
Docker 
Repositories 
Docker 
Repositories 
<PRIVATE> 
registry 서버 설치 
Official 
Repositories 
일반 User 
vendors/contributors 
http:// 
registry.hub.dock 
er.com 
https://registry.hub.docker.com/repos/
그렇다면 Docker의 장점은? 
VM대비 상대적으로 적은 Overhead(CPU, Memory, Storage) 
실행가능한 모든 프로그램을 패키징 가능 
간편한 이미지 관리(create, push, pull) 
생성된 이미지는 어디서나 실행가능 
Linux에서 실행가능한 프로그램이라면 
패키징 작업 및 
어떠한 Linux 환경으로도 이동 및 실행 가능.
Docker가 사용하는 기술 
Image. http://blog.docker.com/2014/03/docker-0-9-introducing-execution-drivers-and-libcontainer
『LXC』 - LinuX Containers 
wikipedia에서는.. 
LXC (LinuX Containers) is an 
operating system–level virtualization method 
for running multiple isolated Linux systems (containers) 
on a single control host. 
사용기술: chroot, namespaces, cgroups... 
추천링크: LinuX Container’s official page 
https://linuxcontainers.org/
『chroot』 - Change Root 
시스템의 root 구성을 
임의로 구성한 위치로 binding 
Image. http://www.bestlinux.com.br/index.php/dicas/117-redes/2818-guia-completo-do-apache-parte-7
『cgroups』 - Control Groups 
Linux Kernel에서 제공하는 기능 
프로세스 그룹에 대한 리소스 제한(Limit), 격리(Isolation), 모니터링 
(CPU, Memory, Storage, Network I/O) 
2006년 9월 부터 ‘Process Container’로 개발시작 
2007년 단어의 모호함때문에 cgroups 로 이름변경 
2008년 1월 Linux Kernel 2.6.24에 적용 
추천링크: 
Introduction to Linux Control Groups (Cgroups) 
https://sysadmincasts.com/episodes/14-introduction-to-linux-control- 
groups-cgroups
『Namespaces』 
시스템 자원을 Process 레벨에서 격리화 
Mount namespaces 
UTS namespaces 
IPC namespaces 
PID namespaces 
Net namespaces 
User namespaces 
추천링크: 
Namespaces in operation, part 1: namespaces overview 
http://lwn.net/Articles/531114/
『Namespaces』 
Image. 
Lightweight Virtual System Mechanism: Linux Container - Gao Feng, Fujitsu 
http://events.linuxfoundation.org/events/archive/2013/cloudopen-japan/program/presentations 
http://events.linuxfoundation.org/sites/events/files/cojp13_feng.pdf
『Namespaces』 
Image. 
Lightweight Virtual System Mechanism: Linux Container - Gao Feng, Fujitsu 
http://events.linuxfoundation.org/events/archive/2013/cloudopen-japan/program/presentations 
http://events.linuxfoundation.org/sites/events/files/cojp13_feng.pdf
『Namespaces』 
Image. 
Lightweight Virtual System Mechanism: Linux Container - Gao Feng, Fujitsu 
http://events.linuxfoundation.org/events/archive/2013/cloudopen-japan/program/presentations 
http://events.linuxfoundation.org/sites/events/files/cojp13_feng.pdf
『Namespaces』 
Image. 
Lightweight Virtual System Mechanism: Linux Container - Gao Feng, Fujitsu 
http://events.linuxfoundation.org/events/archive/2013/cloudopen-japan/program/presentations 
http://events.linuxfoundation.org/sites/events/files/cojp13_feng.pdf
『Namespaces』 
Image. 
Lightweight Virtual System Mechanism: Linux Container - Gao Feng, Fujitsu 
http://events.linuxfoundation.org/events/archive/2013/cloudopen-japan/program/presentations 
http://events.linuxfoundation.org/sites/events/files/cojp13_feng.pdf
『Namespaces』 
Image. 
Lightweight Virtual System Mechanism: Linux Container - Gao Feng, Fujitsu 
http://events.linuxfoundation.org/events/archive/2013/cloudopen-japan/program/presentations 
http://events.linuxfoundation.org/sites/events/files/cojp13_feng.pdf
『Namespaces』 
Image. 
Lightweight Virtual System Mechanism: Linux Container - Gao Feng, Fujitsu 
http://events.linuxfoundation.org/events/archive/2013/cloudopen-japan/program/presentations 
http://events.linuxfoundation.org/sites/events/files/cojp13_feng.pdf
Docker는 다중 Layer 
FileSystem을 사용
『Layer / FileSystem』 
• 겹쳐서 쌓아올린 레이어 구조. 
(포토샵의 Layer 같은?) 
• 각각의 모든 레이어는 read-only. 
• 최상단의 Container만 read-write. 
• 하단 레이어에 속한 파일이 변경되면, 
최상단의 Container로 복사해서 수정 적용 
• 각각의 이미지는 바로 아래에 Parent Image를 가짐 
• Base Image는 Parent Image가 없음. 
Image. http://docs.docker.com/terms/layer/
예제를 통해 Docker 좀더 알기
간단한 Ubuntu Image 다운로드
간단한 Ubuntu 실행 
Ubuntu 12.04 실행 확인!!!
Image는 다중 Layer로 구성 
ubuntu 12.04를 받았지만(pull) 
Layer 된 하위 Image가 함께 받아졌음
변경분에 대한 조회가 가능 
server.txt 파일을 신규 생성하고 
diff 옵션을 사용하면 추가된(A) 정보 확인가능
변경분을 Image로 생성 
Container의 변경사항을 Image로 생성 가능 commit!!
기존 Image와 비교
기존 Image와 비교
『변화의 시작?』 
• 소프트웨어+실행환경의 변화 
• 배포(SW+런타임) 방식의 변화 
• 자동화된 제조라인에서 만들어진 제품을 
간단히 배송받고 콘센트에 꽂으면 동작. 
• DockerFile 을 통해 자동 생성되는 이미지를 
Push, Pull로 전달(이동) 
docker run을 통해 간단하게 동작!
『앞으로?』 
• Java 는 JVM을 이용해서 
Write Once, 
Run Anywhere 
하지만.. 실패.. 
• Docker는 
Build, Ship and Run 
Any App, Anywhere 
한번.. 믿어볼만함?
『참고자료』 
• What is Docker? 
https://www.docker.com/whatisdocker/ 
• DOCKER 0.9: INTRODUCING EXECUTION DRIVERS AND LIBCONTAINER 
http://blog.docker.com/2014/03/docker-0-9-introducing-execution-drivers-and-libcontainer 
• LXC - Linux Containers 
https://linuxcontainers.org/ 
• chroot 
http://www.bestlinux.com.br/index.php/dicas/117-redes/2818-guia-completo-do-apache-parte-7 
• Episode #14 - Introduction to Linux Control Groups (Cgroups) 
https://sysadmincasts.com/episodes/14-introduction-to-linux-control-groups-cgroups 
• Namespaces in operation, part 1: namespaces overview 
http://lwn.net/Articles/531114 
• Lightweight Virtual System Mechanism: Linux Container - Gao Feng, Fujitsu 
http://events.linuxfoundation.org/events/archive/2013/cloudopen-japan/program/presentations 
http://events.linuxfoundation.org/sites/events/files/cojp13_feng.pdf 
• Docker Layers 
http://docs.docker.com/terms/layer/

Más contenido relacionado

La actualidad más candente

도커 학습과 Boot2Docker
도커 학습과 Boot2Docker도커 학습과 Boot2Docker
도커 학습과 Boot2Dockerpyrasis
 
Docker at Deview 2013
Docker at Deview 2013Docker at Deview 2013
Docker at Deview 2013Jude Kim
 
Open stack의 vm개념을 통한 docker의 활용
Open stack의 vm개념을 통한 docker의 활용Open stack의 vm개념을 통한 docker의 활용
Open stack의 vm개념을 통한 docker의 활용Tae Young Lee
 
Docker (Compose) 활용 - 개발 환경 구성하기
Docker (Compose) 활용 - 개발 환경 구성하기Docker (Compose) 활용 - 개발 환경 구성하기
Docker (Compose) 활용 - 개발 환경 구성하기raccoony
 
도커 무작정 따라하기: 도커가 처음인 사람도 60분이면 웹 서버를 올릴 수 있습니다!
도커 무작정 따라하기: 도커가 처음인 사람도 60분이면 웹 서버를 올릴 수 있습니다!도커 무작정 따라하기: 도커가 처음인 사람도 60분이면 웹 서버를 올릴 수 있습니다!
도커 무작정 따라하기: 도커가 처음인 사람도 60분이면 웹 서버를 올릴 수 있습니다!pyrasis
 
Backend Master | 3.4.5 Deploy - Docker Principal
Backend Master | 3.4.5 Deploy - Docker PrincipalBackend Master | 3.4.5 Deploy - Docker Principal
Backend Master | 3.4.5 Deploy - Docker PrincipalKyunghun Jeon
 
Docker 기본 및 Docker Swarm을 활용한 분산 서버 관리 A부터 Z까지 [전체모드에서 봐주세요]
Docker 기본 및 Docker Swarm을 활용한 분산 서버 관리 A부터 Z까지 [전체모드에서 봐주세요]Docker 기본 및 Docker Swarm을 활용한 분산 서버 관리 A부터 Z까지 [전체모드에서 봐주세요]
Docker 기본 및 Docker Swarm을 활용한 분산 서버 관리 A부터 Z까지 [전체모드에서 봐주세요]David Lee
 
도커 없이 컨테이너 만들기 2편
도커 없이 컨테이너 만들기 2편도커 없이 컨테이너 만들기 2편
도커 없이 컨테이너 만들기 2편Sam Kim
 
Docker 사내교육 자료
Docker 사내교육 자료Docker 사내교육 자료
Docker 사내교육 자료Juneyoung Oh
 
CoreOS를 이용한 Docker 관리툴 소개
CoreOS를 이용한 Docker 관리툴 소개CoreOS를 이용한 Docker 관리툴 소개
CoreOS를 이용한 Docker 관리툴 소개충섭 김
 
가장 빨리 만나는 Docker 출간 후기
가장 빨리 만나는 Docker 출간 후기가장 빨리 만나는 Docker 출간 후기
가장 빨리 만나는 Docker 출간 후기pyrasis
 
XECon2015 :: [2-4] 오승현 - Chak 서비스 구축기 with XE3
XECon2015 :: [2-4] 오승현 - Chak 서비스 구축기 with XE3XECon2015 :: [2-4] 오승현 - Chak 서비스 구축기 with XE3
XECon2015 :: [2-4] 오승현 - Chak 서비스 구축기 with XE3XpressEngine
 
RancherOS Introduction
RancherOS IntroductionRancherOS Introduction
RancherOS IntroductionRemotty
 
Introduce Google Kubernetes
Introduce Google KubernetesIntroduce Google Kubernetes
Introduce Google KubernetesYongbok Kim
 
[Nomad connection]docker seminar 15.10.08
[Nomad connection]docker seminar 15.10.08[Nomad connection]docker seminar 15.10.08
[Nomad connection]docker seminar 15.10.08Nomad Connection, Inc.
 
Confd, systemd, fleet을 이용한 어플리케이션 배포 in CoreOS
Confd, systemd, fleet을 이용한 어플리케이션 배포 in CoreOSConfd, systemd, fleet을 이용한 어플리케이션 배포 in CoreOS
Confd, systemd, fleet을 이용한 어플리케이션 배포 in CoreOS충섭 김
 
Docker란 무엇인가? : Docker 기본 사용법
Docker란 무엇인가? : Docker 기본 사용법Docker란 무엇인가? : Docker 기본 사용법
Docker란 무엇인가? : Docker 기본 사용법pyrasis
 
왕초보를 위한 도커 사용법
왕초보를 위한 도커 사용법왕초보를 위한 도커 사용법
왕초보를 위한 도커 사용법GeunCheolYeom
 
XECon2015 :: [3-4] 조정현 - Laravel with cloud
XECon2015 :: [3-4] 조정현 - Laravel with cloudXECon2015 :: [3-4] 조정현 - Laravel with cloud
XECon2015 :: [3-4] 조정현 - Laravel with cloudXpressEngine
 

La actualidad más candente (20)

도커 학습과 Boot2Docker
도커 학습과 Boot2Docker도커 학습과 Boot2Docker
도커 학습과 Boot2Docker
 
Docker at Deview 2013
Docker at Deview 2013Docker at Deview 2013
Docker at Deview 2013
 
Open stack의 vm개념을 통한 docker의 활용
Open stack의 vm개념을 통한 docker의 활용Open stack의 vm개념을 통한 docker의 활용
Open stack의 vm개념을 통한 docker의 활용
 
Docker (Compose) 활용 - 개발 환경 구성하기
Docker (Compose) 활용 - 개발 환경 구성하기Docker (Compose) 활용 - 개발 환경 구성하기
Docker (Compose) 활용 - 개발 환경 구성하기
 
도커 무작정 따라하기: 도커가 처음인 사람도 60분이면 웹 서버를 올릴 수 있습니다!
도커 무작정 따라하기: 도커가 처음인 사람도 60분이면 웹 서버를 올릴 수 있습니다!도커 무작정 따라하기: 도커가 처음인 사람도 60분이면 웹 서버를 올릴 수 있습니다!
도커 무작정 따라하기: 도커가 처음인 사람도 60분이면 웹 서버를 올릴 수 있습니다!
 
Backend Master | 3.4.5 Deploy - Docker Principal
Backend Master | 3.4.5 Deploy - Docker PrincipalBackend Master | 3.4.5 Deploy - Docker Principal
Backend Master | 3.4.5 Deploy - Docker Principal
 
Docker 기본 및 Docker Swarm을 활용한 분산 서버 관리 A부터 Z까지 [전체모드에서 봐주세요]
Docker 기본 및 Docker Swarm을 활용한 분산 서버 관리 A부터 Z까지 [전체모드에서 봐주세요]Docker 기본 및 Docker Swarm을 활용한 분산 서버 관리 A부터 Z까지 [전체모드에서 봐주세요]
Docker 기본 및 Docker Swarm을 활용한 분산 서버 관리 A부터 Z까지 [전체모드에서 봐주세요]
 
AWS + Docker in Vingle
AWS + Docker in VingleAWS + Docker in Vingle
AWS + Docker in Vingle
 
도커 없이 컨테이너 만들기 2편
도커 없이 컨테이너 만들기 2편도커 없이 컨테이너 만들기 2편
도커 없이 컨테이너 만들기 2편
 
Docker 사내교육 자료
Docker 사내교육 자료Docker 사내교육 자료
Docker 사내교육 자료
 
CoreOS를 이용한 Docker 관리툴 소개
CoreOS를 이용한 Docker 관리툴 소개CoreOS를 이용한 Docker 관리툴 소개
CoreOS를 이용한 Docker 관리툴 소개
 
가장 빨리 만나는 Docker 출간 후기
가장 빨리 만나는 Docker 출간 후기가장 빨리 만나는 Docker 출간 후기
가장 빨리 만나는 Docker 출간 후기
 
XECon2015 :: [2-4] 오승현 - Chak 서비스 구축기 with XE3
XECon2015 :: [2-4] 오승현 - Chak 서비스 구축기 with XE3XECon2015 :: [2-4] 오승현 - Chak 서비스 구축기 with XE3
XECon2015 :: [2-4] 오승현 - Chak 서비스 구축기 with XE3
 
RancherOS Introduction
RancherOS IntroductionRancherOS Introduction
RancherOS Introduction
 
Introduce Google Kubernetes
Introduce Google KubernetesIntroduce Google Kubernetes
Introduce Google Kubernetes
 
[Nomad connection]docker seminar 15.10.08
[Nomad connection]docker seminar 15.10.08[Nomad connection]docker seminar 15.10.08
[Nomad connection]docker seminar 15.10.08
 
Confd, systemd, fleet을 이용한 어플리케이션 배포 in CoreOS
Confd, systemd, fleet을 이용한 어플리케이션 배포 in CoreOSConfd, systemd, fleet을 이용한 어플리케이션 배포 in CoreOS
Confd, systemd, fleet을 이용한 어플리케이션 배포 in CoreOS
 
Docker란 무엇인가? : Docker 기본 사용법
Docker란 무엇인가? : Docker 기본 사용법Docker란 무엇인가? : Docker 기본 사용법
Docker란 무엇인가? : Docker 기본 사용법
 
왕초보를 위한 도커 사용법
왕초보를 위한 도커 사용법왕초보를 위한 도커 사용법
왕초보를 위한 도커 사용법
 
XECon2015 :: [3-4] 조정현 - Laravel with cloud
XECon2015 :: [3-4] 조정현 - Laravel with cloudXECon2015 :: [3-4] 조정현 - Laravel with cloud
XECon2015 :: [3-4] 조정현 - Laravel with cloud
 

Destacado

Apache Spark Overview part2 (20161117)
Apache Spark Overview part2 (20161117)Apache Spark Overview part2 (20161117)
Apache Spark Overview part2 (20161117)Steve Min
 
Do not use Django as like as SMARTSTUDY
Do not use Django as like as SMARTSTUDYDo not use Django as like as SMARTSTUDY
Do not use Django as like as SMARTSTUDYHyun-woo Park
 
NoSQL distilled 왜 NoSQL인가
NoSQL distilled 왜 NoSQL인가NoSQL distilled 왜 NoSQL인가
NoSQL distilled 왜 NoSQL인가Choonghyun Yang
 
정보사회학
정보사회학정보사회학
정보사회학Il-woo Lee
 
[NoSQL] 2장. 집합적 데이터 모델
[NoSQL] 2장. 집합적 데이터 모델[NoSQL] 2장. 집합적 데이터 모델
[NoSQL] 2장. 집합적 데이터 모델kidoki
 
NoSQL 동향
NoSQL 동향NoSQL 동향
NoSQL 동향NAVER D2
 
NoSQL 분석 Slamdata
NoSQL 분석 SlamdataNoSQL 분석 Slamdata
NoSQL 분석 SlamdataPikdata Inc.
 
NoSQL Database
NoSQL DatabaseNoSQL Database
NoSQL DatabaseSteve Min
 
개인정보 비식별화 기술 동향 및 전망
개인정보 비식별화 기술 동향 및 전망 개인정보 비식별화 기술 동향 및 전망
개인정보 비식별화 기술 동향 및 전망 Donghan Kim
 
No sql 5장 일관성
No sql 5장   일관성No sql 5장   일관성
No sql 5장 일관성rooya85
 
Node Js와 Redis를 사용한 구조화된 데이터
Node Js와 Redis를 사용한 구조화된 데이터Node Js와 Redis를 사용한 구조화된 데이터
Node Js와 Redis를 사용한 구조화된 데이터jinho park
 
제2회 사내기술세미나-no sql(배표용)-d-hankim-2013-4-30
제2회 사내기술세미나-no sql(배표용)-d-hankim-2013-4-30제2회 사내기술세미나-no sql(배표용)-d-hankim-2013-4-30
제2회 사내기술세미나-no sql(배표용)-d-hankim-2013-4-30Donghan Kim
 
Api design for c++ ch3 pattern
Api design for c++ ch3 patternApi design for c++ ch3 pattern
Api design for c++ ch3 patternjinho park
 
NoSQL 모델링
NoSQL 모델링NoSQL 모델링
NoSQL 모델링Hoyong Lee
 
파이콘 한국 2017 키노트 : Back to the Basic
파이콘 한국 2017 키노트 : Back to the Basic파이콘 한국 2017 키노트 : Back to the Basic
파이콘 한국 2017 키노트 : Back to the BasicHyun-woo Park
 

Destacado (20)

Apache Spark Overview part2 (20161117)
Apache Spark Overview part2 (20161117)Apache Spark Overview part2 (20161117)
Apache Spark Overview part2 (20161117)
 
Do not use Django as like as SMARTSTUDY
Do not use Django as like as SMARTSTUDYDo not use Django as like as SMARTSTUDY
Do not use Django as like as SMARTSTUDY
 
NoSQL distilled 왜 NoSQL인가
NoSQL distilled 왜 NoSQL인가NoSQL distilled 왜 NoSQL인가
NoSQL distilled 왜 NoSQL인가
 
정보사회학
정보사회학정보사회학
정보사회학
 
[NoSQL] 2장. 집합적 데이터 모델
[NoSQL] 2장. 집합적 데이터 모델[NoSQL] 2장. 집합적 데이터 모델
[NoSQL] 2장. 집합적 데이터 모델
 
NoSQL 동향
NoSQL 동향NoSQL 동향
NoSQL 동향
 
Big data
Big dataBig data
Big data
 
No sql 분산모델
No sql 분산모델No sql 분산모델
No sql 분산모델
 
NoSQL 분석 Slamdata
NoSQL 분석 SlamdataNoSQL 분석 Slamdata
NoSQL 분석 Slamdata
 
NoSQL Database
NoSQL DatabaseNoSQL Database
NoSQL Database
 
개인정보 비식별화 기술 동향 및 전망
개인정보 비식별화 기술 동향 및 전망 개인정보 비식별화 기술 동향 및 전망
개인정보 비식별화 기술 동향 및 전망
 
No sql 5장 일관성
No sql 5장   일관성No sql 5장   일관성
No sql 5장 일관성
 
Node Js와 Redis를 사용한 구조화된 데이터
Node Js와 Redis를 사용한 구조화된 데이터Node Js와 Redis를 사용한 구조화된 데이터
Node Js와 Redis를 사용한 구조화된 데이터
 
Express 프레임워크
Express 프레임워크Express 프레임워크
Express 프레임워크
 
제2회 사내기술세미나-no sql(배표용)-d-hankim-2013-4-30
제2회 사내기술세미나-no sql(배표용)-d-hankim-2013-4-30제2회 사내기술세미나-no sql(배표용)-d-hankim-2013-4-30
제2회 사내기술세미나-no sql(배표용)-d-hankim-2013-4-30
 
Api design for c++ ch3 pattern
Api design for c++ ch3 patternApi design for c++ ch3 pattern
Api design for c++ ch3 pattern
 
Git
Git Git
Git
 
NoSQL 모델링
NoSQL 모델링NoSQL 모델링
NoSQL 모델링
 
TRIZ
TRIZTRIZ
TRIZ
 
파이콘 한국 2017 키노트 : Back to the Basic
파이콘 한국 2017 키노트 : Back to the Basic파이콘 한국 2017 키노트 : Back to the Basic
파이콘 한국 2017 키노트 : Back to the Basic
 

Similar a Docker.소개.30 m

[17.01.19] docker introduction (Korean Version)
[17.01.19] docker introduction (Korean Version)[17.01.19] docker introduction (Korean Version)
[17.01.19] docker introduction (Korean Version)Ildoo Kim
 
[오픈소스컨설팅]Docker on Kubernetes v1
[오픈소스컨설팅]Docker on Kubernetes v1[오픈소스컨설팅]Docker on Kubernetes v1
[오픈소스컨설팅]Docker on Kubernetes v1Ji-Woong Choi
 
Docker & Kubernetes 기초 - 최용호
Docker & Kubernetes 기초 - 최용호Docker & Kubernetes 기초 - 최용호
Docker & Kubernetes 기초 - 최용호용호 최
 
Introduction to Docker - LOGISPOT
Introduction to Docker - LOGISPOTIntroduction to Docker - LOGISPOT
Introduction to Docker - LOGISPOTHosang Jeon
 
모두의 쿠버네티스 (Kubernetes for everyone)
모두의 쿠버네티스 (Kubernetes for everyone)모두의 쿠버네티스 (Kubernetes for everyone)
모두의 쿠버네티스 (Kubernetes for everyone)Eunwoo Cho
 
1. Docker Network (1)
1. Docker Network (1)1. Docker Network (1)
1. Docker Network (1)DEVELOPER.NET
 
[1A6]Docker로 보는 서버 운영의 미래
[1A6]Docker로 보는 서버 운영의 미래[1A6]Docker로 보는 서버 운영의 미래
[1A6]Docker로 보는 서버 운영의 미래NAVER D2
 
Introduction to Docker - LOGISPOT
Introduction to Docker - LOGISPOTIntroduction to Docker - LOGISPOT
Introduction to Docker - LOGISPOTLOGISPOT
 
[부스트캠퍼세미나]육진혁_(대충 도커 쓰자는 이야기)
[부스트캠퍼세미나]육진혁_(대충 도커 쓰자는 이야기)[부스트캠퍼세미나]육진혁_(대충 도커 쓰자는 이야기)
[부스트캠퍼세미나]육진혁_(대충 도커 쓰자는 이야기)CONNECT FOUNDATION
 
도커없이 컨테이너 만들기 1편
도커없이 컨테이너 만들기 1편도커없이 컨테이너 만들기 1편
도커없이 컨테이너 만들기 1편Sam Kim
 
Sonatype nexus 로 docker registry 관리하기
Sonatype nexus 로 docker registry 관리하기Sonatype nexus 로 docker registry 관리하기
Sonatype nexus 로 docker registry 관리하기KwangSeob Jeong
 
[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기
[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기
[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기Chanwoong Kim
 
Devfair kubernetes 101
Devfair kubernetes 101Devfair kubernetes 101
Devfair kubernetes 101Daegwon Kim
 
[221] docker orchestration
[221] docker orchestration[221] docker orchestration
[221] docker orchestrationNAVER D2
 
[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축
[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축
[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축Ji-Woong Choi
 

Similar a Docker.소개.30 m (20)

[17.01.19] docker introduction (Korean Version)
[17.01.19] docker introduction (Korean Version)[17.01.19] docker introduction (Korean Version)
[17.01.19] docker introduction (Korean Version)
 
[오픈소스컨설팅]Docker on Kubernetes v1
[오픈소스컨설팅]Docker on Kubernetes v1[오픈소스컨설팅]Docker on Kubernetes v1
[오픈소스컨설팅]Docker on Kubernetes v1
 
Docker & Kubernetes 기초 - 최용호
Docker & Kubernetes 기초 - 최용호Docker & Kubernetes 기초 - 최용호
Docker & Kubernetes 기초 - 최용호
 
Docker osc 0508
Docker osc 0508Docker osc 0508
Docker osc 0508
 
why docker
why dockerwhy docker
why docker
 
Introduction to Docker - LOGISPOT
Introduction to Docker - LOGISPOTIntroduction to Docker - LOGISPOT
Introduction to Docker - LOGISPOT
 
[9월 런치 세미나] 도커와 쿠버네티스 기술에 스며들다
[9월 런치 세미나] 도커와 쿠버네티스 기술에 스며들다[9월 런치 세미나] 도커와 쿠버네티스 기술에 스며들다
[9월 런치 세미나] 도커와 쿠버네티스 기술에 스며들다
 
모두의 쿠버네티스 (Kubernetes for everyone)
모두의 쿠버네티스 (Kubernetes for everyone)모두의 쿠버네티스 (Kubernetes for everyone)
모두의 쿠버네티스 (Kubernetes for everyone)
 
1. Docker Network (1)
1. Docker Network (1)1. Docker Network (1)
1. Docker Network (1)
 
Docker Container
Docker ContainerDocker Container
Docker Container
 
[1A6]Docker로 보는 서버 운영의 미래
[1A6]Docker로 보는 서버 운영의 미래[1A6]Docker로 보는 서버 운영의 미래
[1A6]Docker로 보는 서버 운영의 미래
 
Docker Intro
Docker IntroDocker Intro
Docker Intro
 
Introduction to Docker - LOGISPOT
Introduction to Docker - LOGISPOTIntroduction to Docker - LOGISPOT
Introduction to Docker - LOGISPOT
 
[부스트캠퍼세미나]육진혁_(대충 도커 쓰자는 이야기)
[부스트캠퍼세미나]육진혁_(대충 도커 쓰자는 이야기)[부스트캠퍼세미나]육진혁_(대충 도커 쓰자는 이야기)
[부스트캠퍼세미나]육진혁_(대충 도커 쓰자는 이야기)
 
도커없이 컨테이너 만들기 1편
도커없이 컨테이너 만들기 1편도커없이 컨테이너 만들기 1편
도커없이 컨테이너 만들기 1편
 
Sonatype nexus 로 docker registry 관리하기
Sonatype nexus 로 docker registry 관리하기Sonatype nexus 로 docker registry 관리하기
Sonatype nexus 로 docker registry 관리하기
 
[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기
[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기
[NDC18] 만들고 붓고 부수고 - 〈야생의 땅: 듀랑고〉 서버 관리 배포 이야기
 
Devfair kubernetes 101
Devfair kubernetes 101Devfair kubernetes 101
Devfair kubernetes 101
 
[221] docker orchestration
[221] docker orchestration[221] docker orchestration
[221] docker orchestration
 
[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축
[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축
[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축
 

Docker.소개.30 m

  • 1. Docker 소개 30M myrisinsun@gmail.com
  • 2. 시작하기전에 간단한 용어 소개를 먼저 『가상화』 『Hypervisor』
  • 3. 『가상화』 wikipedia 에서는 다음과 같이 정의 컴퓨터에서 컴퓨터 리소스의 추상화을 일컫는 광범위한 용어 물리적인 컴퓨터 리소스의 특징을 다른 시스템, 응용 프로그램, 최종 사용자들이 리소스와 상호 작용하는 방식으로부터 감추는 기술 어렵고 복잡해~@.@ (그림으로 예를 들어보면)
  • 4. 『가상화』 기술의 예 Oracle OS 서버 Tomcat OS 서버 Oracle OS 가상화기술 MySQL OS 일반서버 쉽게(?) 볼 수 있는 ‘서버 가상화’
  • 5. 『Hypervisor』 wikipedia 에서는 다음과 같이 정의 호스트 컴퓨터에서 다수의 운영 체제(operating system)를 동시에 실행하기 위한 논리적 플랫폼(platform) Hypervisor 는 VMM(Virtual Machine Monitor)으로도 불림. (이것도 그림으로 보면..)
  • 6. 『Hypervisor』 2가지 형태 Oracle GuestOS Oracle GuestOS Hypervisor Hardware Type-I (Bare-metal) GuestOS Tomcat Hypervisor Hardware Oracle GuestOS Hosted OS Type-II (Hosted)
  • 7. Docker 소개 시작! 앞에서 VM에 대한 이야기는 왜 했을까? Docker는.. VM과 비슷해보이지만 다름! 그리고 VM과는 그 '의도'가 다름
  • 9. Docker는.. (고래 등짝에 올려진 컨테이너 박스들처럼) 프로그램과 실행에 필요한것들을 박스(?)로 포장하고, 포장된 박스(?)를 손쉽게 이동해서, 어디서나 간단하게 실행할 수 있는 도구와 환경을 제공하는 오픈소스 플랫폼. Write Once, Run Anywhere Build, Ship and Run Any App, Anywhere
  • 10. Docker와 VM 다른점 『구조』 Image. https://www.docker.com/whatisdocker/ Hypervisor의 자리를 Docker Engine이 대체 VM과는 다르게 (형태를 갖춘) GuestOS를 가지지 않음
  • 11. Docker와 VM 다른점 『활용』 기존의 VM은 가상화를 통해 격리된 실행 환경을 만들었다면 Docker 또한 격리된 실행 환경을 제공하지만 이와함께 Packaging(포장), Delivery(전달)등 통합적인 환경을 제공. (다음장에서 간단한 그림으로 확인)
  • 12. Docker Flow 요약 Docker Repositories myServer Docker Repositories Docker Engine Server 1 Docker Engine Server 2 Docker Engine Server 3 docker push myid:1.0 docker push myserver.com:5000/myid:0.3 docker pull myid:1.0 docker pull myserver.com:5000/myid:0.3 docker build Dockerfile
  • 13. Docker Repositories 종류 Docker Repositories <PUBLIC> myServer Docker Repositories Docker Repositories <PRIVATE> registry 서버 설치 Official Repositories 일반 User vendors/contributors http:// registry.hub.dock er.com https://registry.hub.docker.com/repos/
  • 14. 그렇다면 Docker의 장점은? VM대비 상대적으로 적은 Overhead(CPU, Memory, Storage) 실행가능한 모든 프로그램을 패키징 가능 간편한 이미지 관리(create, push, pull) 생성된 이미지는 어디서나 실행가능 Linux에서 실행가능한 프로그램이라면 패키징 작업 및 어떠한 Linux 환경으로도 이동 및 실행 가능.
  • 15. Docker가 사용하는 기술 Image. http://blog.docker.com/2014/03/docker-0-9-introducing-execution-drivers-and-libcontainer
  • 16. 『LXC』 - LinuX Containers wikipedia에서는.. LXC (LinuX Containers) is an operating system–level virtualization method for running multiple isolated Linux systems (containers) on a single control host. 사용기술: chroot, namespaces, cgroups... 추천링크: LinuX Container’s official page https://linuxcontainers.org/
  • 17. 『chroot』 - Change Root 시스템의 root 구성을 임의로 구성한 위치로 binding Image. http://www.bestlinux.com.br/index.php/dicas/117-redes/2818-guia-completo-do-apache-parte-7
  • 18. 『cgroups』 - Control Groups Linux Kernel에서 제공하는 기능 프로세스 그룹에 대한 리소스 제한(Limit), 격리(Isolation), 모니터링 (CPU, Memory, Storage, Network I/O) 2006년 9월 부터 ‘Process Container’로 개발시작 2007년 단어의 모호함때문에 cgroups 로 이름변경 2008년 1월 Linux Kernel 2.6.24에 적용 추천링크: Introduction to Linux Control Groups (Cgroups) https://sysadmincasts.com/episodes/14-introduction-to-linux-control- groups-cgroups
  • 19. 『Namespaces』 시스템 자원을 Process 레벨에서 격리화 Mount namespaces UTS namespaces IPC namespaces PID namespaces Net namespaces User namespaces 추천링크: Namespaces in operation, part 1: namespaces overview http://lwn.net/Articles/531114/
  • 20. 『Namespaces』 Image. Lightweight Virtual System Mechanism: Linux Container - Gao Feng, Fujitsu http://events.linuxfoundation.org/events/archive/2013/cloudopen-japan/program/presentations http://events.linuxfoundation.org/sites/events/files/cojp13_feng.pdf
  • 21. 『Namespaces』 Image. Lightweight Virtual System Mechanism: Linux Container - Gao Feng, Fujitsu http://events.linuxfoundation.org/events/archive/2013/cloudopen-japan/program/presentations http://events.linuxfoundation.org/sites/events/files/cojp13_feng.pdf
  • 22. 『Namespaces』 Image. Lightweight Virtual System Mechanism: Linux Container - Gao Feng, Fujitsu http://events.linuxfoundation.org/events/archive/2013/cloudopen-japan/program/presentations http://events.linuxfoundation.org/sites/events/files/cojp13_feng.pdf
  • 23. 『Namespaces』 Image. Lightweight Virtual System Mechanism: Linux Container - Gao Feng, Fujitsu http://events.linuxfoundation.org/events/archive/2013/cloudopen-japan/program/presentations http://events.linuxfoundation.org/sites/events/files/cojp13_feng.pdf
  • 24. 『Namespaces』 Image. Lightweight Virtual System Mechanism: Linux Container - Gao Feng, Fujitsu http://events.linuxfoundation.org/events/archive/2013/cloudopen-japan/program/presentations http://events.linuxfoundation.org/sites/events/files/cojp13_feng.pdf
  • 25. 『Namespaces』 Image. Lightweight Virtual System Mechanism: Linux Container - Gao Feng, Fujitsu http://events.linuxfoundation.org/events/archive/2013/cloudopen-japan/program/presentations http://events.linuxfoundation.org/sites/events/files/cojp13_feng.pdf
  • 26. 『Namespaces』 Image. Lightweight Virtual System Mechanism: Linux Container - Gao Feng, Fujitsu http://events.linuxfoundation.org/events/archive/2013/cloudopen-japan/program/presentations http://events.linuxfoundation.org/sites/events/files/cojp13_feng.pdf
  • 27. Docker는 다중 Layer FileSystem을 사용
  • 28. 『Layer / FileSystem』 • 겹쳐서 쌓아올린 레이어 구조. (포토샵의 Layer 같은?) • 각각의 모든 레이어는 read-only. • 최상단의 Container만 read-write. • 하단 레이어에 속한 파일이 변경되면, 최상단의 Container로 복사해서 수정 적용 • 각각의 이미지는 바로 아래에 Parent Image를 가짐 • Base Image는 Parent Image가 없음. Image. http://docs.docker.com/terms/layer/
  • 29. 예제를 통해 Docker 좀더 알기
  • 30. 간단한 Ubuntu Image 다운로드
  • 31. 간단한 Ubuntu 실행 Ubuntu 12.04 실행 확인!!!
  • 32. Image는 다중 Layer로 구성 ubuntu 12.04를 받았지만(pull) Layer 된 하위 Image가 함께 받아졌음
  • 33. 변경분에 대한 조회가 가능 server.txt 파일을 신규 생성하고 diff 옵션을 사용하면 추가된(A) 정보 확인가능
  • 34. 변경분을 Image로 생성 Container의 변경사항을 Image로 생성 가능 commit!!
  • 37. 『변화의 시작?』 • 소프트웨어+실행환경의 변화 • 배포(SW+런타임) 방식의 변화 • 자동화된 제조라인에서 만들어진 제품을 간단히 배송받고 콘센트에 꽂으면 동작. • DockerFile 을 통해 자동 생성되는 이미지를 Push, Pull로 전달(이동) docker run을 통해 간단하게 동작!
  • 38. 『앞으로?』 • Java 는 JVM을 이용해서 Write Once, Run Anywhere 하지만.. 실패.. • Docker는 Build, Ship and Run Any App, Anywhere 한번.. 믿어볼만함?
  • 39. 『참고자료』 • What is Docker? https://www.docker.com/whatisdocker/ • DOCKER 0.9: INTRODUCING EXECUTION DRIVERS AND LIBCONTAINER http://blog.docker.com/2014/03/docker-0-9-introducing-execution-drivers-and-libcontainer • LXC - Linux Containers https://linuxcontainers.org/ • chroot http://www.bestlinux.com.br/index.php/dicas/117-redes/2818-guia-completo-do-apache-parte-7 • Episode #14 - Introduction to Linux Control Groups (Cgroups) https://sysadmincasts.com/episodes/14-introduction-to-linux-control-groups-cgroups • Namespaces in operation, part 1: namespaces overview http://lwn.net/Articles/531114 • Lightweight Virtual System Mechanism: Linux Container - Gao Feng, Fujitsu http://events.linuxfoundation.org/events/archive/2013/cloudopen-japan/program/presentations http://events.linuxfoundation.org/sites/events/files/cojp13_feng.pdf • Docker Layers http://docs.docker.com/terms/layer/