초심자를 위한 도커 소개 및 입문

62
Introduce to Docker Daniel Seo(서현호)

Upload: daniel-seo

Post on 14-Apr-2017

932 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: 초심자를 위한 도커 소개 및 입문

Introduce to Docker

Daniel Seo(서현호)

Page 2: 초심자를 위한 도커 소개 및 입문

도커란 무엇인가?

Page 3: 초심자를 위한 도커 소개 및 입문

리눅스 어플리케이션을 묶어서 실행할 수 있는 리눅스 컨테이너다

Page 4: 초심자를 위한 도커 소개 및 입문

리눅스 컨테이너는? 가상 머신과 비슷한 거!

Page 5: 초심자를 위한 도커 소개 및 입문

그런데 가상머신 냅두고 왜 컨테이너일까?

Page 6: 초심자를 위한 도커 소개 및 입문

답은 성능차이!

Page 7: 초심자를 위한 도커 소개 및 입문

CPU, RAM을 할당하고 OS를 또 깔고……(in http://pyrasis.com/book/DockerForTheReallyImpatient/

Chapter01/01)

Page 8: 초심자를 위한 도커 소개 및 입문

일반머신 >>>>>>>>>>> 가상머신넘사벽

Page 9: 초심자를 위한 도커 소개 및 입문

이쁘고 아름다운 성능을 가진 가상머신은 없을까?

Page 10: 초심자를 위한 도커 소개 및 입문

그럼 이쁘고 아름다운 성능이 나오게 하려면?

Page 11: 초심자를 위한 도커 소개 및 입문

가상머신이 하는 일을 줄이자!!!

Page 12: 초심자를 위한 도커 소개 및 입문

자원 나눠쓰는건데 가상 하드웨어를 왜 또 만들어? 중복 아냐?

그럼 하이퍼바이저를 빼자

Page 13: 초심자를 위한 도커 소개 및 입문

OS도 이미 깔려 있잖아? 왜 또 깔아?

Guest OS를 빼자

Page 14: 초심자를 위한 도커 소개 및 입문

자원 할당은 어차피 OS 커널하잖아. 걔가 해주면 안돼??

돼! 우리에겐 LXC가 있잖아!

Page 15: 초심자를 위한 도커 소개 및 입문

LinuX Container(LXC)

• 커널 레벨에서 CPU, 메모리, 디스크 네트워크 자원을 나누고 격리 시켜준다!

Page 16: 초심자를 위한 도커 소개 및 입문

모든 조각을 맞춰 보면….

Page 17: 초심자를 위한 도커 소개 및 입문

대충 이런 그림이 아닐까? 답정너 Docker!

Page 18: 초심자를 위한 도커 소개 및 입문

이제 정말 빨라졌겠지?

Page 19: 초심자를 위한 도커 소개 및 입문

실 서버와 별 차이가 없다! (요즘 버전으로 테스트한건 이거보다 결과가 좋다!)

출처: http://www.slideshare.net/modestjude/dockerat-deview-2013

Page 20: 초심자를 위한 도커 소개 및 입문

좋은건 알겠는데 어떻게 써야하나?

Page 21: 초심자를 위한 도커 소개 및 입문

설치하는 방법은?

Page 22: 초심자를 위한 도커 소개 및 입문

어라라? 리눅스에서 밖에 설치 안되는데요?

아까 리눅스 커널 이용한다고 했는데…

그럼 맥에선 되야 하는거 아냐?

Page 23: 초심자를 위한 도커 소개 및 입문

우리에겐 Boot2docker가

있다.

Page 24: 초심자를 위한 도커 소개 및 입문

Boot2docker?

• 도커가 지원하지 않는 운영체제에 가상머신으로 가벼운 Linux 얹고 그 위에 도커를 얹으면 되지 않을까? 를 만들어낸 프로젝트

• VirtualBox을 가상머신으로 쓴다.

Page 25: 초심자를 위한 도커 소개 및 입문

설치부터 배워보자 (Mac OS)

• http://boot2docker.io/ 접속

• https://github.com/boot2docker/osx-installer/releases 접속하여 최신 버전을 다운로드한다.

• 다운로드 패키지를 설치한다.

Page 26: 초심자를 위한 도커 소개 및 입문

우리의 친구 HomeBrew로

대신 설치할 수도 있다.

Page 27: 초심자를 위한 도커 소개 및 입문

HomeBrew로 설치방법• 아래 처럼 수행

• brew tap phinze/homebrew-cask

• brew install brew-cask

• brew cask install virtualbox

• brew install docker2boot # 브루로 인스톨

• boot2docker init # 도커초기화

• boot2docker up # 부트2도커 실행

• export DOCKER_HOST=tcp://localhost:4243 # 도커의 접속 호스트 설정

• brew install docker # 도커 설치

• 참고 : http://blog.javabien.net/2014/03/03/setup-docker-on-osx-the-no-brainer-way/

Page 28: 초심자를 위한 도커 소개 및 입문

가장 어려운 설치 끝! 이제 한번 사용해봅시다!

Page 29: 초심자를 위한 도커 소개 및 입문

Docker에 SSH로 접속하기

Page 30: 초심자를 위한 도커 소개 및 입문

SSH로 접속하기

Page 31: 초심자를 위한 도커 소개 및 입문

참 쉽죠?

Page 32: 초심자를 위한 도커 소개 및 입문

이제 os나 redis 같은걸 설치할까요?

Page 33: 초심자를 위한 도커 소개 및 입문

먼저 원하는걸 찾아야 겠죠?

Page 34: 초심자를 위한 도커 소개 및 입문

모든 도커 명령어는 sudo docker가 먼저 붙습니다.

가상 머신에 리눅스를 설치이고 root로 로그인한게 아니기 때문이죠

Page 35: 초심자를 위한 도커 소개 및 입문

image 검색하기

• docker image 는 실행할 프로그램 정의. 프로그래밍 언어로 치면 Class로 생각하면 된다!

• sudo docker search <검색할이미지>

Page 36: 초심자를 위한 도커 소개 및 입문

image 다운받기• docker pull <다운받을 이미지>:<버전>

• 최신 버전은 lastest를 입력하면 된다.

Page 37: 초심자를 위한 도커 소개 및 입문

근데 어디서 검색하고 다운로드 받는거죠?

Page 38: 초심자를 위한 도커 소개 및 입문

바로 도커 허브죠!https://registry.hub.docker.com/search?q=library

Page 39: 초심자를 위한 도커 소개 및 입문

Docker hub

• public, private 계정 둘다 지원 (아직 과금 정책없음)

• Docker의 깃헙, 이상 잡다구리한 이미지까지 존재한다.

• Docker hub가 마음에 안들면? 개인 repository를 만들면 된다.

Page 40: 초심자를 위한 도커 소개 및 입문

다운받았으니 이미지를

확인 해봅시다.

Page 41: 초심자를 위한 도커 소개 및 입문

이미지 확인

• docker images

Page 42: 초심자를 위한 도커 소개 및 입문

그럼 이제 컨테이너를 생성해 봅시다.

Page 43: 초심자를 위한 도커 소개 및 입문

컨테이너 생성하기• docker run <옵션> <이미지이름> <실행할 파일>

• -i(interactive), -t(Pseudo-tty): Bash쉘에 입출력을 할 수 있음

• —name: 컨테이너 이름 지정 가능

• exit 를 치면 나올 수 있음

Page 44: 초심자를 위한 도커 소개 및 입문

생성 했으니 컨테이너를 확인 해봅시다

Page 45: 초심자를 위한 도커 소개 및 입문

컨테이너 목록 확인하기

• docker ps -a

• -a를 붙이면 모든 목록 안붙이면 실행 중인 목록만 보여줌

Page 46: 초심자를 위한 도커 소개 및 입문

이제부턴 귀찮으니 기본적인 커맨드를 알아보죠!

Page 47: 초심자를 위한 도커 소개 및 입문

컨테이너 실행 및 중지

• 컨테이너 실행

• docker start <컨테이너 이름>

• 컨테이너 중지

• docker stop <컨테이너 이름>

Page 48: 초심자를 위한 도커 소개 및 입문

컨테이너 접속, 해제

• 컨테이너 접속

• docker attach <컨테이너 이름>

• 컨테이너 접속해제,

• 컨테이너 중지 및 접속해제: exit

• 컨테이너 접속만 해제 Ctrl+P, Ctrl+Q

Page 49: 초심자를 위한 도커 소개 및 입문

컨테이너 삭제

• docker rm <컨테이너 이름>

Page 50: 초심자를 위한 도커 소개 및 입문

이미지 삭제

• docker rmi <이미지 이름>

Page 51: 초심자를 위한 도커 소개 및 입문

겨우 이정도인가요? 굳이 도커를 써야할까요?

Page 52: 초심자를 위한 도커 소개 및 입문

아니죠.근데 이것만 해도 꽤 쓸만해요…

Page 53: 초심자를 위한 도커 소개 및 입문

도커의 써야 하는 또다른 이유! 바로

버전 관리 입니다!

Page 54: 초심자를 위한 도커 소개 및 입문

변경을 새로운 이미지로!

• docker commit -a <커밋한 사람> -m <메시지> <컨테이너 이름> <이미지이름>:<태그>

Page 55: 초심자를 위한 도커 소개 및 입문

이미지 히스토리 보기

• docker history <이미지 이름>:<태그>

Page 56: 초심자를 위한 도커 소개 및 입문

그럼 도커를 사용하면 뭐가 좋을까?

Page 57: 초심자를 위한 도커 소개 및 입문

도커의 장점

• production과 거의 동일한 로컬 개발환경을 만들 수 있다

• 하지만 맥을 쓴다면 어떨까?

• 빠른 배포가 가능하다. => 이미지만 만들어두면 됨!

• 서버 환경의 버전 관리가 가능하다?!

• 무료로 책이 한권 풀려있다!

• http://pyrasis.com/docker.html

Page 58: 초심자를 위한 도커 소개 및 입문

단점은 뭐지?

Page 59: 초심자를 위한 도커 소개 및 입문

도커의 단점

• 성능 저하 약간?!

• IP 주소가 포함되어 있지 않다.

• 난잡한 docker hub => 어른들의 사정 아직 발전중이라 그래요

• Web UI가 있긴한데 아주 깔삼한 녀석은 없음

Page 60: 초심자를 위한 도커 소개 및 입문

Docker + Git을 제공하는 서비스

• dokku = docker 전용 git 저장소 + 자동빌드

• deis.io = 멀티 서버 지원 dokku

Page 61: 초심자를 위한 도커 소개 및 입문

debis

Page 62: 초심자를 위한 도커 소개 및 입문