docker.소개.30 m
DESCRIPTION
Docker.소개.30M Docker 간단한 소개 30분TRANSCRIPT
![Page 2: Docker.소개.30 m](https://reader034.vdocuments.net/reader034/viewer/2022052623/559abb421a28abde4a8b45ba/html5/thumbnails/2.jpg)
시작하기전에
간단한 용어 소개를 먼저
『가상화』
『Hypervisor』
![Page 3: Docker.소개.30 m](https://reader034.vdocuments.net/reader034/viewer/2022052623/559abb421a28abde4a8b45ba/html5/thumbnails/3.jpg)
『가상화』
wikipedia 에서는 다음과 같이 정의
컴퓨터에서 컴퓨터 리소스의 추상화을 일컫는 광범위한 용어
물리적인 컴퓨터 리소스의 특징을다른 시스템, 응용 프로그램, 최종 사용자들이리소스와 상호 작용하는 방식으로부터 감추는 기술
어렵고 복잡해~@.@
(그림으로 예를 들어보면)
![Page 4: Docker.소개.30 m](https://reader034.vdocuments.net/reader034/viewer/2022052623/559abb421a28abde4a8b45ba/html5/thumbnails/4.jpg)
『가상화』 기술의 예
서버
OS
Oracle
서버
OS
Oracle
가상화기술
OS
Tomcat
OS
MySQL
쉽게(?) 볼 수 있는 ‘서버 가상화’일반서버
![Page 5: Docker.소개.30 m](https://reader034.vdocuments.net/reader034/viewer/2022052623/559abb421a28abde4a8b45ba/html5/thumbnails/5.jpg)
『Hypervisor』
wikipedia 에서는 다음과 같이 정의
호스트 컴퓨터에서 다수의 운영 체제(operating system)를 동시에 실행하기 위한 논리적 플랫폼(platform)
Hypervisor 는 VMM(Virtual Machine Monitor)으로도 불림.
(이것도 그림으로 보면..)
![Page 6: Docker.소개.30 m](https://reader034.vdocuments.net/reader034/viewer/2022052623/559abb421a28abde4a8b45ba/html5/thumbnails/6.jpg)
『Hypervisor』 2가지 형태
Hardware
Hypervisor
GuestOS
Type-I (Bare-metal)
Oracle
GuestOS
Oracle
Hardware
Hypervisor
GuestOS
Oracle
GuestOS
Tomcat
Hosted OS
Type-II (Hosted)
![Page 7: Docker.소개.30 m](https://reader034.vdocuments.net/reader034/viewer/2022052623/559abb421a28abde4a8b45ba/html5/thumbnails/7.jpg)
Docker 소개 시작!
앞에서 VM에 대한 이야기는 왜 했을까?
Docker는..
VM과 비슷해보이지만 다름! 그리고 VM과는 그 '의도'가 다름
![Page 8: Docker.소개.30 m](https://reader034.vdocuments.net/reader034/viewer/2022052623/559abb421a28abde4a8b45ba/html5/thumbnails/8.jpg)
그렇다면.. Docker란?
Docker
![Page 9: Docker.소개.30 m](https://reader034.vdocuments.net/reader034/viewer/2022052623/559abb421a28abde4a8b45ba/html5/thumbnails/9.jpg)
Docker는..(고래 등짝에 올려진 컨테이너 박스들처럼)프로그램과 실행에 필요한것들을 박스(?)로 포장하고,포장된 박스(?)를 손쉽게 이동해서,어디서나 간단하게 실행할 수 있는
도구와 환경을 제공하는 오픈소스 플랫폼.
Write Once,Run Anywhere
Build, Ship and RunAny App, Anywhere
![Page 10: Docker.소개.30 m](https://reader034.vdocuments.net/reader034/viewer/2022052623/559abb421a28abde4a8b45ba/html5/thumbnails/10.jpg)
Docker와 VM 다른점 『구조』
Hypervisor의 자리를 Docker Engine이 대체VM과는 다르게 (형태를 갖춘) GuestOS를 가지지 않음
Image. https://www.docker.com/whatisdocker/
![Page 11: Docker.소개.30 m](https://reader034.vdocuments.net/reader034/viewer/2022052623/559abb421a28abde4a8b45ba/html5/thumbnails/11.jpg)
Docker와 VM 다른점 『활용』
기존의 VM은 가상화를 통해 격리된 실행 환경을 만들었다면
Docker 또한 격리된 실행 환경을 제공하지만이와함께 Packaging(포장), Delivery(전달)등통합적인 환경을 제공.
(다음장에서 간단한 그림으로 확인)
![Page 12: Docker.소개.30 m](https://reader034.vdocuments.net/reader034/viewer/2022052623/559abb421a28abde4a8b45ba/html5/thumbnails/12.jpg)
Docker Flow 요약Docker
Repositories
myServer Docker
Repositories
Server 1
Docker Engine
Server 2
Docker Engine
Server 3
Docker Engine
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
Dockerfile
docker build
![Page 13: Docker.소개.30 m](https://reader034.vdocuments.net/reader034/viewer/2022052623/559abb421a28abde4a8b45ba/html5/thumbnails/13.jpg)
Docker Repositories 종류
Docker Repositories <PUBLIC>
myServer Docker
Repositories
Docker Repositories <PRIVATE>
registry 서버 설치
Official Repositories
일반 User
vendors/contributors
http://registry.hub.dock
er.comhttps://registry.hub.docker.com/repos/
![Page 14: Docker.소개.30 m](https://reader034.vdocuments.net/reader034/viewer/2022052623/559abb421a28abde4a8b45ba/html5/thumbnails/14.jpg)
그렇다면 Docker의 장점은?
VM대비 상대적으로 적은 Overhead(CPU, Memory, Storage)
실행가능한 모든 프로그램을 패키징 가능간편한 이미지 관리(create, push, pull) 생성된 이미지는 어디서나 실행가능
Linux에서 실행가능한 프로그램이라면패키징 작업 및어떠한 Linux 환경으로도 이동 및 실행 가능.
![Page 15: Docker.소개.30 m](https://reader034.vdocuments.net/reader034/viewer/2022052623/559abb421a28abde4a8b45ba/html5/thumbnails/15.jpg)
Docker가 사용하는 기술
Image. http://blog.docker.com/2014/03/docker-0-9-introducing-execution-drivers-and-libcontainer
![Page 16: Docker.소개.30 m](https://reader034.vdocuments.net/reader034/viewer/2022052623/559abb421a28abde4a8b45ba/html5/thumbnails/16.jpg)
『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 pagehttps://linuxcontainers.org/
![Page 17: Docker.소개.30 m](https://reader034.vdocuments.net/reader034/viewer/2022052623/559abb421a28abde4a8b45ba/html5/thumbnails/17.jpg)
『chroot』 - Change Root시스템의 root 구성을임의로 구성한 위치로 binding
Image. http://www.bestlinux.com.br/index.php/dicas/117-redes/2818-guia-completo-do-apache-parte-7
![Page 18: Docker.소개.30 m](https://reader034.vdocuments.net/reader034/viewer/2022052623/559abb421a28abde4a8b45ba/html5/thumbnails/18.jpg)
『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
![Page 19: Docker.소개.30 m](https://reader034.vdocuments.net/reader034/viewer/2022052623/559abb421a28abde4a8b45ba/html5/thumbnails/19.jpg)
『Namespaces』시스템 자원을 Process 레벨에서 격리화
Mount namespaces UTS namespacesIPC namespacesPID namespacesNet namespaces User namespaces
추천링크: Namespaces in operation, part 1: namespaces overviewhttp://lwn.net/Articles/531114/
![Page 20: Docker.소개.30 m](https://reader034.vdocuments.net/reader034/viewer/2022052623/559abb421a28abde4a8b45ba/html5/thumbnails/20.jpg)
『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
![Page 21: Docker.소개.30 m](https://reader034.vdocuments.net/reader034/viewer/2022052623/559abb421a28abde4a8b45ba/html5/thumbnails/21.jpg)
『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
![Page 22: Docker.소개.30 m](https://reader034.vdocuments.net/reader034/viewer/2022052623/559abb421a28abde4a8b45ba/html5/thumbnails/22.jpg)
『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
![Page 23: Docker.소개.30 m](https://reader034.vdocuments.net/reader034/viewer/2022052623/559abb421a28abde4a8b45ba/html5/thumbnails/23.jpg)
『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
![Page 24: Docker.소개.30 m](https://reader034.vdocuments.net/reader034/viewer/2022052623/559abb421a28abde4a8b45ba/html5/thumbnails/24.jpg)
『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
![Page 25: Docker.소개.30 m](https://reader034.vdocuments.net/reader034/viewer/2022052623/559abb421a28abde4a8b45ba/html5/thumbnails/25.jpg)
『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
![Page 26: Docker.소개.30 m](https://reader034.vdocuments.net/reader034/viewer/2022052623/559abb421a28abde4a8b45ba/html5/thumbnails/26.jpg)
『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
![Page 27: Docker.소개.30 m](https://reader034.vdocuments.net/reader034/viewer/2022052623/559abb421a28abde4a8b45ba/html5/thumbnails/27.jpg)
Docker는 다중 LayerFileSystem을 사용
![Page 28: Docker.소개.30 m](https://reader034.vdocuments.net/reader034/viewer/2022052623/559abb421a28abde4a8b45ba/html5/thumbnails/28.jpg)
『Layer / FileSystem』• 겹쳐서 쌓아올린 레이어 구조.
(포토샵의 Layer 같은?)
• 각각의 모든 레이어는 read-only.
• 최상단의 Container만 read-write.
• 하단 레이어에 속한 파일이 변경되면, 최상단의 Container로 복사해서 수정 적용
• 각각의 이미지는 바로 아래에 Parent Image를 가짐
• Base Image는 Parent Image가 없음.
Image. http://docs.docker.com/terms/layer/
![Page 29: Docker.소개.30 m](https://reader034.vdocuments.net/reader034/viewer/2022052623/559abb421a28abde4a8b45ba/html5/thumbnails/29.jpg)
예제를 통해 Docker 좀더 알기
![Page 30: Docker.소개.30 m](https://reader034.vdocuments.net/reader034/viewer/2022052623/559abb421a28abde4a8b45ba/html5/thumbnails/30.jpg)
간단한 Ubuntu Image 다운로드
![Page 31: Docker.소개.30 m](https://reader034.vdocuments.net/reader034/viewer/2022052623/559abb421a28abde4a8b45ba/html5/thumbnails/31.jpg)
간단한 Ubuntu 실행
Ubuntu 12.04 실행 확인!!!
![Page 32: Docker.소개.30 m](https://reader034.vdocuments.net/reader034/viewer/2022052623/559abb421a28abde4a8b45ba/html5/thumbnails/32.jpg)
Image는 다중 Layer로 구성
ubuntu 12.04를 받았지만(pull) Layer 된 하위 Image가 함께 받아졌음
![Page 33: Docker.소개.30 m](https://reader034.vdocuments.net/reader034/viewer/2022052623/559abb421a28abde4a8b45ba/html5/thumbnails/33.jpg)
변경분에 대한 조회가 가능
server.txt 파일을 신규 생성하고 diff 옵션을 사용하면 추가된(A) 정보 확인가능
![Page 34: Docker.소개.30 m](https://reader034.vdocuments.net/reader034/viewer/2022052623/559abb421a28abde4a8b45ba/html5/thumbnails/34.jpg)
변경분을 Image로 생성
Container의 변경사항을 Image로 생성 가능 commit!!
![Page 35: Docker.소개.30 m](https://reader034.vdocuments.net/reader034/viewer/2022052623/559abb421a28abde4a8b45ba/html5/thumbnails/35.jpg)
기존 Image와 비교
![Page 36: Docker.소개.30 m](https://reader034.vdocuments.net/reader034/viewer/2022052623/559abb421a28abde4a8b45ba/html5/thumbnails/36.jpg)
기존 Image와 비교
![Page 37: Docker.소개.30 m](https://reader034.vdocuments.net/reader034/viewer/2022052623/559abb421a28abde4a8b45ba/html5/thumbnails/37.jpg)
『변화의 시작?』
• 소프트웨어+실행환경의 변화
• 배포(SW+런타임) 방식의 변화
• 자동화된 제조라인에서 만들어진 제품을간단히 배송받고 콘센트에 꽂으면 동작.
• DockerFile 을 통해 자동 생성되는 이미지를Push, Pull로 전달(이동)docker run을 통해 간단하게 동작!
![Page 38: Docker.소개.30 m](https://reader034.vdocuments.net/reader034/viewer/2022052623/559abb421a28abde4a8b45ba/html5/thumbnails/38.jpg)
『앞으로?』
• Java 는 JVM을 이용해서Write Once,Run Anywhere하지만.. 실패..
• Docker는Build, Ship and RunAny App, Anywhere한번.. 믿어볼만함?
![Page 39: Docker.소개.30 m](https://reader034.vdocuments.net/reader034/viewer/2022052623/559abb421a28abde4a8b45ba/html5/thumbnails/39.jpg)
• 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 Containershttps://linuxcontainers.org/
• chroothttp://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 overviewhttp://lwn.net/Articles/531114
• Lightweight Virtual System Mechanism: Linux Container - Gao Feng, Fujitsu http://events.linuxfoundation.org/events/archive/2013/cloudopen-japan/program/presentationshttp://events.linuxfoundation.org/sites/events/files/cojp13_feng.pdf
• Docker Layershttp://docs.docker.com/terms/layer/
『참고자료』