Upload
daniel-seo
View
932
Download
0
Embed Size (px)
Citation preview
Introduce to Docker
Daniel Seo(서현호)
도커란 무엇인가?
리눅스 어플리케이션을 묶어서 실행할 수 있는 리눅스 컨테이너다
리눅스 컨테이너는? 가상 머신과 비슷한 거!
그런데 가상머신 냅두고 왜 컨테이너일까?
답은 성능차이!
CPU, RAM을 할당하고 OS를 또 깔고……(in http://pyrasis.com/book/DockerForTheReallyImpatient/
Chapter01/01)
일반머신 >>>>>>>>>>> 가상머신넘사벽
이쁘고 아름다운 성능을 가진 가상머신은 없을까?
그럼 이쁘고 아름다운 성능이 나오게 하려면?
가상머신이 하는 일을 줄이자!!!
자원 나눠쓰는건데 가상 하드웨어를 왜 또 만들어? 중복 아냐?
그럼 하이퍼바이저를 빼자
OS도 이미 깔려 있잖아? 왜 또 깔아?
Guest OS를 빼자
자원 할당은 어차피 OS 커널하잖아. 걔가 해주면 안돼??
돼! 우리에겐 LXC가 있잖아!
LinuX Container(LXC)
• 커널 레벨에서 CPU, 메모리, 디스크 네트워크 자원을 나누고 격리 시켜준다!
모든 조각을 맞춰 보면….
대충 이런 그림이 아닐까? 답정너 Docker!
이제 정말 빨라졌겠지?
실 서버와 별 차이가 없다! (요즘 버전으로 테스트한건 이거보다 결과가 좋다!)
출처: http://www.slideshare.net/modestjude/dockerat-deview-2013
좋은건 알겠는데 어떻게 써야하나?
설치하는 방법은?
어라라? 리눅스에서 밖에 설치 안되는데요?
아까 리눅스 커널 이용한다고 했는데…
그럼 맥에선 되야 하는거 아냐?
우리에겐 Boot2docker가
있다.
Boot2docker?
• 도커가 지원하지 않는 운영체제에 가상머신으로 가벼운 Linux 얹고 그 위에 도커를 얹으면 되지 않을까? 를 만들어낸 프로젝트
• VirtualBox을 가상머신으로 쓴다.
설치부터 배워보자 (Mac OS)
• http://boot2docker.io/ 접속
• https://github.com/boot2docker/osx-installer/releases 접속하여 최신 버전을 다운로드한다.
• 다운로드 패키지를 설치한다.
우리의 친구 HomeBrew로
대신 설치할 수도 있다.
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/
가장 어려운 설치 끝! 이제 한번 사용해봅시다!
Docker에 SSH로 접속하기
SSH로 접속하기
참 쉽죠?
이제 os나 redis 같은걸 설치할까요?
먼저 원하는걸 찾아야 겠죠?
모든 도커 명령어는 sudo docker가 먼저 붙습니다.
가상 머신에 리눅스를 설치이고 root로 로그인한게 아니기 때문이죠
image 검색하기
• docker image 는 실행할 프로그램 정의. 프로그래밍 언어로 치면 Class로 생각하면 된다!
• sudo docker search <검색할이미지>
image 다운받기• docker pull <다운받을 이미지>:<버전>
• 최신 버전은 lastest를 입력하면 된다.
근데 어디서 검색하고 다운로드 받는거죠?
바로 도커 허브죠!https://registry.hub.docker.com/search?q=library
Docker hub
• public, private 계정 둘다 지원 (아직 과금 정책없음)
• Docker의 깃헙, 이상 잡다구리한 이미지까지 존재한다.
• Docker hub가 마음에 안들면? 개인 repository를 만들면 된다.
다운받았으니 이미지를
확인 해봅시다.
이미지 확인
• docker images
그럼 이제 컨테이너를 생성해 봅시다.
컨테이너 생성하기• docker run <옵션> <이미지이름> <실행할 파일>
• -i(interactive), -t(Pseudo-tty): Bash쉘에 입출력을 할 수 있음
• —name: 컨테이너 이름 지정 가능
• exit 를 치면 나올 수 있음
생성 했으니 컨테이너를 확인 해봅시다
컨테이너 목록 확인하기
• docker ps -a
• -a를 붙이면 모든 목록 안붙이면 실행 중인 목록만 보여줌
이제부턴 귀찮으니 기본적인 커맨드를 알아보죠!
컨테이너 실행 및 중지
• 컨테이너 실행
• docker start <컨테이너 이름>
• 컨테이너 중지
• docker stop <컨테이너 이름>
컨테이너 접속, 해제
• 컨테이너 접속
• docker attach <컨테이너 이름>
• 컨테이너 접속해제,
• 컨테이너 중지 및 접속해제: exit
• 컨테이너 접속만 해제 Ctrl+P, Ctrl+Q
컨테이너 삭제
• docker rm <컨테이너 이름>
이미지 삭제
• docker rmi <이미지 이름>
겨우 이정도인가요? 굳이 도커를 써야할까요?
아니죠.근데 이것만 해도 꽤 쓸만해요…
도커의 써야 하는 또다른 이유! 바로
버전 관리 입니다!
변경을 새로운 이미지로!
• docker commit -a <커밋한 사람> -m <메시지> <컨테이너 이름> <이미지이름>:<태그>
이미지 히스토리 보기
• docker history <이미지 이름>:<태그>
그럼 도커를 사용하면 뭐가 좋을까?
도커의 장점
• production과 거의 동일한 로컬 개발환경을 만들 수 있다
• 하지만 맥을 쓴다면 어떨까?
• 빠른 배포가 가능하다. => 이미지만 만들어두면 됨!
• 서버 환경의 버전 관리가 가능하다?!
• 무료로 책이 한권 풀려있다!
• http://pyrasis.com/docker.html
단점은 뭐지?
도커의 단점
• 성능 저하 약간?!
• IP 주소가 포함되어 있지 않다.
• 난잡한 docker hub => 어른들의 사정 아직 발전중이라 그래요
• Web UI가 있긴한데 아주 깔삼한 녀석은 없음
Docker + Git을 제공하는 서비스
• dokku = docker 전용 git 저장소 + 자동빌드
• deis.io = 멀티 서버 지원 dokku
debis
끝