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