devopswithdocker도커(docker) 리눅스컨테이너 기술을이용해어플리케이 션...

29
© 2015 IBM Corporation 개발자와 함께하는 친친親親 DAY! 개발자가 개발되는 시간, 50MM/DD/YY DevOps with Docker 황상철/SK planet

Upload: others

Post on 02-Feb-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: DevOpswithDocker도커(Docker) 리눅스컨테이너 기술을이용해어플리케이 션 패키징,’배포를지원하는오픈소스프로 젝트’ *경량 ,가상화솔루션

© 2015 IBM Corporation

개발자와 함께하는 친친親親 DAY! 개발자가 개발되는 시간, 50분 MM/DD/YY

DevOps����������� ������������������  with����������� ������������������  Docker����������� ������������������  

황상철/SK����������� ������������������  planet����������� ������������������  

Page 2: DevOpswithDocker도커(Docker) 리눅스컨테이너 기술을이용해어플리케이 션 패키징,’배포를지원하는오픈소스프로 젝트’ *경량 ,가상화솔루션

© 2015 IBM Corporation

도커는����������� ������������������  무엇인가����������� ������������������  

Introduction of Docker

Page 3: DevOpswithDocker도커(Docker) 리눅스컨테이너 기술을이용해어플리케이 션 패키징,’배포를지원하는오픈소스프로 젝트’ *경량 ,가상화솔루션

© 2015 IBM Corporation 3

Page header content goes here

도커(Docker)����������� ������������������  

리눅스����������� ������������������  컨테이너����������� ������������������  기술을����������� ������������������  이용해����������� ������������������  어플리케이션����������� ������������������  패키징,����������� ������������������  배포를����������� ������������������  지원하는����������� ������������������  오픈소스����������� ������������������  프로젝트����������� ������������������  

*����������� ������������������  경량,����������� ������������������  가상화����������� ������������������  솔루션����������� ������������������  

Page 4: DevOpswithDocker도커(Docker) 리눅스컨테이너 기술을이용해어플리케이 션 패키징,’배포를지원하는오픈소스프로 젝트’ *경량 ,가상화솔루션

© 2015 IBM Corporation 4

Page header content goes here

도커(Docker)����������� ������������������  

PyCon2013에서����������� ������������������  Solomon����������� ������������������  Hykes의����������� ������������������  ‘Hello����������� ������������������  World’����������� ������������������  데모로����������� ������������������  처음����������� ������������������  소개����������� ������������������  

The����������� ������������������  future����������� ������������������  of����������� ������������������  Linux����������� ������������������  containers(http://goo.gl/QR7jr7)����������� ������������������  

����������� ������������������  $����������� ������������������  docker����������� ������������������  run����������� ������������������  busybox����������� ������������������  echo����������� ������������������  ‘Hello����������� ������������������  World’����������� ������������������  

Page 5: DevOpswithDocker도커(Docker) 리눅스컨테이너 기술을이용해어플리케이 션 패키징,’배포를지원하는오픈소스프로 젝트’ *경량 ,가상화솔루션

© 2015 IBM Corporation 5

Page header content goes here

docker����������� ������������������  run����������� ������������������  busybox����������� ������������������  echo����������� ������������������  ‘Hello����������� ������������������  World’����������� ������������������  ����������� ������������������  ����������� ������������������  

1.If(busybox����������� ������������������  이미지����������� ������������������  없으면)����������� ������������������  {����������� ������������������  

����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  ����������� ������������������  dockerhub에서����������� ������������������  다운로드}����������� ������������������  

2.Busybox이미지로����������� ������������������  새로운����������� ������������������  컨테이너����������� ������������������  실행����������� ������������������  

3.TTY로����������� ������������������  ‘Hello����������� ������������������  World’����������� ������������������  출력����������� ������������������  

4.유닉스����������� ������������������  소켓으로����������� ������������������  결과����������� ������������������  전송����������� ������������������  

Page 6: DevOpswithDocker도커(Docker) 리눅스컨테이너 기술을이용해어플리케이 션 패키징,’배포를지원하는오픈소스프로 젝트’ *경량 ,가상화솔루션

© 2015 IBM Corporation 6

Page header content goes here

14년말기준����������� ������������������  1억����������� ������������������  다운로드����������� ������������������  

Page 7: DevOpswithDocker도커(Docker) 리눅스컨테이너 기술을이용해어플리케이 션 패키징,’배포를지원하는오픈소스프로 젝트’ *경량 ,가상화솔루션

© 2015 IBM Corporation 7

Page header content goes here

특징1:����������� ������������������  사용하기����������� ������������������  쉽다����������� ������������������  

리눅스����������� ������������������  컨테이너는����������� ������������������  소개된지����������� ������������������  10년이����������� ������������������  지난����������� ������������������  오래된����������� ������������������  기술이다.����������� ������������������  하지만����������� ������������������  설정이����������� ������������������  복잡하고����������� ������������������  사용하기����������� ������������������  어려워����������� ������������������  널리����������� ������������������  사용되지����������� ������������������  못했음.����������� ������������������  

Page 8: DevOpswithDocker도커(Docker) 리눅스컨테이너 기술을이용해어플리케이 션 패키징,’배포를지원하는오픈소스프로 젝트’ *경량 ,가상화솔루션

© 2015 IBM Corporation 8

Page header content goes here

특징2:����������� ������������������  가볍다����������� ������������������  

VM에����������� ������������������  비해����������� ������������������  이미지����������� ������������������  파일����������� ������������������  크기가����������� ������������������  작아서����������� ������������������  이미지를����������� ������������������  만들고����������� ������������������  실행하는����������� ������������������  시간이����������� ������������������  적게����������� ������������������  걸린다.����������� ������������������  

����������� ������������������  

Linux����������� ������������������  베이스����������� ������������������  이미지����������� ������������������  

ubuntu����������� ������������������  latest����������� ������������������  ba5877dc9bec����������� ������������������  4����������� ������������������  days����������� ������������������  ago����������� ������������������  192.7����������� ������������������  MB����������� ������������������  

centos����������� ������������������  latest����������� ������������������  1a7dc42f78ba����������� ������������������  2����������� ������������������  weeks����������� ������������������  ago����������� ������������������  236.4����������� ������������������  MB����������� ������������������  

fedora����������� ������������������  latest����������� ������������������  88b42ffd1f7c����������� ������������������  10����������� ������������������  days����������� ������������������  ago����������� ������������������  373.7����������� ������������������  MB����������� ������������������  

Page 9: DevOpswithDocker도커(Docker) 리눅스컨테이너 기술을이용해어플리케이 션 패키징,’배포를지원하는오픈소스프로 젝트’ *경량 ,가상화솔루션

© 2015 IBM Corporation 9

Page header content goes here

리눅스����������� ������������������  컨테이너(LXC)����������� ������������������  

단일����������� ������������������  리눅스����������� ������������������  호스트에����������� ������������������  격리된(isolated)����������� ������������������  리눅스����������� ������������������  시스템을����������� ������������������  여러개����������� ������������������  실행하는����������� ������������������  OS����������� ������������������  수준의����������� ������������������  가상화����������� ������������������  ����������� ������������������  

§ ����������� ������������������  OpenVZ(openvz.org)����������� ������������������  § ����������� ������������������  Imctfy(google/Imctfy)����������� ������������������  § ����������� ������������������  Warden(cloudfoundry/warden)����������� ������������������  

Page 10: DevOpswithDocker도커(Docker) 리눅스컨테이너 기술을이용해어플리케이 션 패키징,’배포를지원하는오픈소스프로 젝트’ *경량 ,가상화솔루션

© 2015 IBM Corporation 10

Page header content goes here

LXC����������� ������������������  vs����������� ������������������  VM����������� ������������������  

Page 11: DevOpswithDocker도커(Docker) 리눅스컨테이너 기술을이용해어플리케이 션 패키징,’배포를지원하는오픈소스프로 젝트’ *경량 ,가상화솔루션

© 2015 IBM Corporation 11

Page header content goes here

도커가����������� ������������������  지원하는����������� ������������������  Host����������� ������������������  OS����������� ������������������  

리눅스����������� ������������������  커널버전����������� ������������������  3.8.0x86_64����������� ������������������  이상으로����������� ������������������  Device����������� ������������������  Mapper가����������� ������������������  설치된����������� ������������������  환경.����������� ������������������  

§ ����������� ������������������  Ubuntu,CentOS,RHEL����������� ������������������  

§ ����������� ������������������  CoreOS����������� ������������������  § ����������� ������������������  Debian,����������� ������������������  SUSE,����������� ������������������  Fedora,����������� ������������������  etc����������� ������������������  

Page 12: DevOpswithDocker도커(Docker) 리눅스컨테이너 기술을이용해어플리케이 션 패키징,’배포를지원하는오픈소스프로 젝트’ *경량 ,가상화솔루션

© 2015 IBM Corporation 12

Page header content goes here

도커����������� ������������������  아키텍처����������� ������������������  

Page 13: DevOpswithDocker도커(Docker) 리눅스컨테이너 기술을이용해어플리케이 션 패키징,’배포를지원하는오픈소스프로 젝트’ *경량 ,가상화솔루션

© 2015 IBM Corporation 13

Page header content goes here

Boot2Docker����������� ������������������  

MacOS����������� ������������������  X와����������� ������������������  윈도우즈는����������� ������������������  리눅스����������� ������������������  커널을����������� ������������������  지원하지����������� ������������������  않기����������� ������������������  때문에����������� ������������������  도커를����������� ������������������  실행할수����������� ������������������  없다.����������� ������������������  Boot2Docker는����������� ������������������  도커����������� ������������������  데몬을����������� ������������������  실행하는����������� ������������������  가벼운����������� ������������������  가상머신����������� ������������������  관리도구.����������� ������������������  

Page 14: DevOpswithDocker도커(Docker) 리눅스컨테이너 기술을이용해어플리케이 션 패키징,’배포를지원하는오픈소스프로 젝트’ *경량 ,가상화솔루션

© 2015 IBM Corporation 14

Page header content goes here

Page 15: DevOpswithDocker도커(Docker) 리눅스컨테이너 기술을이용해어플리케이 션 패키징,’배포를지원하는오픈소스프로 젝트’ *경량 ,가상화솔루션

© 2015 IBM Corporation

이미지와����������� ������������������  컨테이너����������� ������������������  

Image and Container

Page 16: DevOpswithDocker도커(Docker) 리눅스컨테이너 기술을이용해어플리케이 션 패키징,’배포를지원하는오픈소스프로 젝트’ *경량 ,가상화솔루션

© 2015 IBM Corporation 16

Page header content goes here

도커����������� ������������������  이미지����������� ������������������  

레이어����������� ������������������  파일����������� ������������������  시스템으로����������� ������������������  각����������� ������������������  파일시스템이����������� ������������������  곧����������� ������������������  이미지.����������� ������������������  읽기전용����������� ������������������  파일시스템으로����������� ������������������  도커가����������� ������������������  어플리케이션을����������� ������������������  배포하는����������� ������������������  단위.����������� ������������������  

§ ����������� ������������������  bootfs:����������� ������������������  도커����������� ������������������  시스템이����������� ������������������  사용하는����������� ������������������  파일시스템����������� ������������������  § ����������� ������������������  union����������� ������������������  mount:����������� ������������������  여러����������� ������������������  파일시스템을����������� ������������������  하나의����������� ������������������  파일����������� ������������������  시스템으로����������� ������������������  보이게����������� ������������������  ����������� ������������������  

Page 17: DevOpswithDocker도커(Docker) 리눅스컨테이너 기술을이용해어플리케이 션 패키징,’배포를지원하는오픈소스프로 젝트’ *경량 ,가상화솔루션

© 2015 IBM Corporation 17

Page header content goes here

Page 18: DevOpswithDocker도커(Docker) 리눅스컨테이너 기술을이용해어플리케이 션 패키징,’배포를지원하는오픈소스프로 젝트’ *경량 ,가상화솔루션

© 2015 IBM Corporation 18

Page header content goes here

DockerHub����������� ������������������  

도커����������� ������������������  이미지를����������� ������������������  공유하는����������� ������������������  저장소.����������� ������������������  github����������� ������������������  계정으로����������� ������������������  사용가능.����������� ������������������  많은����������� ������������������  오픈소스����������� ������������������  공식����������� ������������������  이미지가����������� ������������������  관리되고����������� ������������������  있다.����������� ������������������  

Page 19: DevOpswithDocker도커(Docker) 리눅스컨테이너 기술을이용해어플리케이 션 패키징,’배포를지원하는오픈소스프로 젝트’ *경량 ,가상화솔루션

© 2015 IBM Corporation 19

Page header content goes here

Dockerfile����������� ������������������  

도커����������� ������������������  이미지를����������� ������������������  만들기����������� ������������������  위해����������� ������������������  설치할����������� ������������������  SW,����������� ������������������  필요한����������� ������������������  설정을����������� ������������������  정의하는����������� ������������������  파일.����������� ������������������  

§ ����������� ������������������  프로비저닝(Provisioning)����������� ������������������  역할����������� ������������������  

§ ����������� ������������������  이미지����������� ������������������  제작����������� ������������������  과정을����������� ������������������  기록����������� ������������������  ����������� ������������������  

Page 20: DevOpswithDocker도커(Docker) 리눅스컨테이너 기술을이용해어플리케이 션 패키징,’배포를지원하는오픈소스프로 젝트’ *경량 ,가상화솔루션

© 2015 IBM Corporation 20

Page header content goes here

nginx를����������� ������������������  위한����������� ������������������  Dockerfile����������� ������������������  

#����������� ������������������  Version:����������� ������������������  0.0.1����������� ������������������  FROM����������� ������������������  ubuntu:14.04����������� ������������������  MAINTAINER����������� ������������������  Sangcheol����������� ������������������  Hwang����������� ������������������  "[email protected]"����������� ������������������  ����������� ������������������  RUN����������� ������������������  apt-get����������� ������������������  update����������� ������������������  RUN����������� ������������������  apt-get����������� ������������������  install����������� ������������������  -y����������� ������������������  nginx����������� ������������������  RUN����������� ������������������  echo����������� ������������������  'Hi,����������� ������������������  I����������� ������������������  am����������� ������������������  in����������� ������������������  your����������� ������������������  container'����������� ������������������  ����������� ������������������  EXPOSE����������� ������������������  80����������� ������������������  

Page 21: DevOpswithDocker도커(Docker) 리눅스컨테이너 기술을이용해어플리케이 션 패키징,’배포를지원하는오픈소스프로 젝트’ *경량 ,가상화솔루션

© 2015 IBM Corporation 21

Page header content goes here

도커����������� ������������������  컨테이너����������� ������������������  

읽기/쓰기가����������� ������������������  가능한����������� ������������������  파일����������� ������������������  시스템으로����������� ������������������  이미지를����������� ������������������  실행한것.����������� ������������������  ����������� ������������������  ����������� ������������������  

DB,Web,WAS,etc����������� ������������������  

Page 22: DevOpswithDocker도커(Docker) 리눅스컨테이너 기술을이용해어플리케이 션 패키징,’배포를지원하는오픈소스프로 젝트’ *경량 ,가상화솔루션

© 2015 IBM Corporation

도커����������� ������������������  어떻게����������� ������������������  사용할까����������� ������������������  

Use cases of Docker

Page 23: DevOpswithDocker도커(Docker) 리눅스컨테이너 기술을이용해어플리케이 션 패키징,’배포를지원하는오픈소스프로 젝트’ *경량 ,가상화솔루션

© 2015 IBM Corporation 23

Page header content goes here

US1:����������� ������������������  독립된����������� ������������������  로컬����������� ������������������  개발환경����������� ������������������  

로컬����������� ������������������  설정에����������� ������������������  영향을����������� ������������������  받지����������� ������������������  않는����������� ������������������  독립된����������� ������������������  개발환경을����������� ������������������  구성.����������� ������������������  Vagrant를����������� ������������������  이용하면����������� ������������������  일관된����������� ������������������  인터페이스로����������� ������������������  구성이����������� ������������������  가능.����������� ������������������  

Vagrant����������� ������������������  Docker����������� ������������������  provider����������� ������������������  

(http://docs.vagrantup.com/v2/docker/)����������� ������������������  

Page 24: DevOpswithDocker도커(Docker) 리눅스컨테이너 기술을이용해어플리케이 션 패키징,’배포를지원하는오픈소스프로 젝트’ *경량 ,가상화솔루션

© 2015 IBM Corporation 24

Page header content goes here

US2:����������� ������������������  VM기반의����������� ������������������  도커����������� ������������������  Host����������� ������������������  

VM서버로����������� ������������������  도커����������� ������������������  Host����������� ������������������  구성한다.����������� ������������������  Host에는����������� ������������������  한개����������� ������������������  컨테이너만����������� ������������������  운영하는게����������� ������������������  효과적이다.����������� ������������������  VM����������� ������������������  유형,환경에����������� ������������������  상관없이����������� ������������������  배포가����������� ������������������  가능하다.����������� ������������������  

Docker����������� ������������������  Machine(https://github.com/docker/machine)����������� ������������������  

Page 25: DevOpswithDocker도커(Docker) 리눅스컨테이너 기술을이용해어플리케이 션 패키징,’배포를지원하는오픈소스프로 젝트’ *경량 ,가상화솔루션

© 2015 IBM Corporation 25

Page header content goes here

US3:����������� ������������������  싱글서버����������� ������������������  도커����������� ������������������  Host����������� ������������������  

물리서버����������� ������������������  1대로����������� ������������������  도커����������� ������������������  Host를����������� ������������������  구성한다.����������� ������������������  여러����������� ������������������  컨테이너를����������� ������������������  운영할수����������� ������������������  있어서����������� ������������������  효율적이다.����������� ������������������  구성이����������� ������������������  단순하여����������� ������������������  관리가����������� ������������������  용이하지만����������� ������������������  서버����������� ������������������  에러에����������� ������������������  대한����������� ������������������  위험성이����������� ������������������  크다.����������� ������������������  ����������� ������������������  

Page 26: DevOpswithDocker도커(Docker) 리눅스컨테이너 기술을이용해어플리케이 션 패키징,’배포를지원하는오픈소스프로 젝트’ *경량 ,가상화솔루션

© 2015 IBM Corporation 26

Page header content goes here

US4:����������� ������������������  도커����������� ������������������  Host����������� ������������������  클러스터����������� ������������������  

여러����������� ������������������  도커����������� ������������������  Host����������� ������������������  서버를����������� ������������������  하나의����������� ������������������  Host처럼����������� ������������������  관리하기����������� ������������������  위해����������� ������������������  ����������� ������������������  클러스터를����������� ������������������  구성한다.����������� ������������������  컨테이너����������� ������������������  스케쥴링,����������� ������������������  Host����������� ������������������  모니터링����������� ������������������  등이����������� ������������������  필요.����������� ������������������  § ����������� ������������������  fleet����������� ������������������  § ����������� ������������������  swarm����������� ������������������  § ����������� ������������������  kubernets����������� ������������������  § ����������� ������������������  mesos����������� ������������������  

Page 27: DevOpswithDocker도커(Docker) 리눅스컨테이너 기술을이용해어플리케이 션 패키징,’배포를지원하는오픈소스프로 젝트’ *경량 ,가상화솔루션

© 2015 IBM Corporation

도커기반의����������� ������������������  개발과����������� ������������������  운영����������� ������������������  

DevOps with Docker

Page 28: DevOpswithDocker도커(Docker) 리눅스컨테이너 기술을이용해어플리케이 션 패키징,’배포를지원하는오픈소스프로 젝트’ *경량 ,가상화솔루션

© 2015 IBM Corporation 28

Page header content goes here

개발/운영/테스트를����������� ������������������  함께한다.����������� ������������������  

Page 29: DevOpswithDocker도커(Docker) 리눅스컨테이너 기술을이용해어플리케이 션 패키징,’배포를지원하는오픈소스프로 젝트’ *경량 ,가상화솔루션

© 2015 IBM Corporation 29

Page header content goes here

Docker기반����������� ������������������  DevOps����������� ������������������  

DevOps를����������� ������������������  위해서는����������� ������������������  자동화가����������� ������������������  필수이며����������� ������������������  Docker를����������� ������������������  이용하면����������� ������������������  개발����������� ������������������  및����������� ������������������  운영����������� ������������������  환경����������� ������������������  자동화가����������� ������������������  가능하다.����������� ������������������