Docker로 서버 개발 편하게 하기

1,267 views

Published on

Docker를 한 번도 써보지 않은 사람들을 위한 간단한 소개

Published in: Software
0 Comments
6 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,267
On SlideShare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
33
Comments
0
Likes
6
Embeds 0
No embeds

No notes for slide

Docker로 서버 개발 편하게 하기

  1. 1. Docker로 서버 개발 편하게 하기 2016. 05. 23 임지혁
  2. 2. 바깥은 혼자 돌아다니기엔 위험하단다! 이것들 중 하나를 서버로 쓰렴. 노트북 데스크탑 서버 호스팅
  3. 3. 서버 개발하기 내 컴퓨터 == 개발 환경 == 내 서버 환경 노트북
  4. 4. 서버 개발하기 내 컴퓨터 == 개발 환경 == 내 서버 환경 != 다른 사람 컴퓨터 노트북
  5. 5. 서버 개발하기 내 컴퓨터 == 개발 환경 == 내 서버 환경 != 다른 사람 컴퓨터 != 프레젠테이션용 컴퓨터 노트북
  6. 6. 서버 개발하기 서버 호스팅
  7. 7. 서버 개발하기 서버 호스팅
  8. 8. 서버 개발하기 서버 호스팅
  9. 9. 버전 관리 (Version control) • 소스 코드를 버전으로 관리하자! • 게임의 Save point와 비슷한 개념 • Git, Mercurial, Bazzar, Subversion, … • 취소 (Ctrl + Z)  Revert / 저장 (Ctrl + S)  Commit • 백업  Push / Pull • 브랜치(Branch), 태그 등등
  10. 10. 버전 관리 (Version control) • Hosting: github, Bitbucket, gitlab 등등
  11. 11. 서버 개발하기 문제: A, B, C가 시간표 서버를 같이 개발하고 싶어한다. 환경 설정 매뉴얼의 압박… A가 시간표에 기능을 개발하는 동안 B도 다른 시간표 기능을 개발할 수 있는가? 시간표 서버가 고장났다… 다른 시간표 서버로 바로 옮길 수 있는가? 서버가 뭔가 잘못됐다… 서버를 빨리 재시작 / 재구축할 수 있는가?
  12. 12. 가상화 (Virtualization) • 운영체제 수업에서 배운 컴퓨터 구조 Hardware Operating System Application
  13. 13. 가상화 (Virtualization) • 운영체제 수업에서 배운 컴퓨터 구조 Hardware Operating System Application • 호스트 기반 가상 머신을 이용하는 컴퓨터 구조 Hardware Operating System Operating System Application
  14. 14. 가상화 (Virtualization) • 필요할 때마다 컴퓨터 (가상 머신) 만들기 • 웹 서비스용 VM: Ubuntu + Apache + PHP + MySQL • 자바 수업용 VM: Windows + Java + Eclipse • 결재용 VM: Windows + ActiveX + 공인인증모듈 + 공인인증서 • 가상 머신 관리 • 각 가상 머신별로 CPU, 메모리, 디스크 지정 가능 (나중에 변경도 가능) • Snapshot: Save point • 가상 머신 내보내기 • 가상 머신 가져오기 • Virtualbox, VMware, Xen, KVM..
  15. 15. 가상화 (Virtualization) VMVM VM
  16. 16. 가상화 (Virtualization) VMVM VM
  17. 17. Docker • Docker: 컨테이너 기반 가상화 도구 • cgroups, namespace, LXC 기반 경량 가상화 • 파일시스템 변경 사항 추적 및 관리 • 쉬운 설치 및 배포 • ex: centos 실행하기 user@ubuntu:~$ docker pull centos Using default tag: latest latest: Pulling from library/centos a3ed95caeb02: Pull complete 5989106db7fb: Pull complete Digest: sha256:1b9adf413b3ab95ce430c2039954bb0db0c8e2672c48182f2c5b3d30373d5b71 Status: Downloaded newer image for centos:latest
  18. 18. Docker • Docker: 컨테이너 기반 가상화 도구 • cgroups, namespace, LXC 기반 경량 가상화 • 파일시스템 변경 사항 추적 및 관리 • 쉬운 설치 및 배포 • ex: centos 실행하기 user@ubuntu:~$ docker run --rm -i -t centos bash [root@f3182a332abf /]# uname -a Linux f3182a332abf 3.19.0-56-generic #62~14.04.1-Ubuntu SMP Fri Mar 11 11:03:15 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux [root@f3182a332abf /]# cat /etc/*-release CentOS Linux release 7.2.1511 (Core) NAME="CentOS Linux" VERSION="7 (Core)" ID="centos" ID_LIKE="rhel fedora"
  19. 19. Docker
  20. 20. Docker • Image = Class, Program • FROM ubuntu • RUN apt-get install ~ • ADD sources /home/user/sources • CMD ["/home/user/server.sh"] • Container = Object, Process • Docker CLI • ps: 컨테이너 목록 보기 • start: 컨테이너 실행 • stop: 컨테이너 종료 • restart: 컨테이너 재시작 • rm: 컨테이너 삭제 • build: Dockerfile Recipe를 참조해서 이미지 생성 • rmi: 이미지 제거
  21. 21. Docker • Docker hub docker pull <repository> • Dockerfile • Docker image를 이렇게 만들어라 • Dockerfile 버전 관리 = VM 개발 환경 공유
  22. 22. Docker 활용하기 • Docker machine • Docker는 Linux 커널을 공유해야 하는데, Windows와 OSX은 커널이 다름 • VM 안의 리눅스와 Docker 연결
  23. 23. Docker 활용하기 • Docker machine • CLI: docker 명령어가 VM을 참조하도록 변경
  24. 24. Docker 활용하기 • Docker compose • 여러 개의 Docker 컨테이너들을 한번에 관리하기 • ex: 시간표 프로젝트 =
  25. 25. Docker 활용하기 • Docker compose • CLI: 컨테이너 상태 보기, 같이 켜고 끄기
  26. 26. Docker 활용하기 • Docker를 활용한 서버 개발하기 $ git add Dockerfile $ git commit … $ git push
  27. 27. Docker 활용하기 • Docker를 활용한 서버 개발하기 $ git clone ~ $ cd univ-whoareyou-server $ docker-compose build $ docker-compose up -d
  28. 28. Docker 활용하기 • Docker를 활용한 서버 개발하기 $ git pull ~ $ docker-compose build $ docker-compose up -d
  29. 29. Docker를 활용해 서버 개발하기 문제: A, B, C가 시간표 서버를 같이 개발하고 싶어한다. 환경 설정 매뉴얼의 압박…? Container 실행하면 끝! A가 시간표에 기능을 개발하는 동안 B도 다른 시간표 기능을 개발할 수 있는가? YES! 시간표 서버가 고장났다… 다른 시간표 서버로 바로 옮길 수 있는가? YES! 서버가 뭔가 잘못됐다… 서버를 빨리 재시작 / 재구축할 수 있는가? YES!
  30. 30. Docker를 활용해…?
  31. 31. Docker를 활용해…?
  32. 32. Docker를 활용해…?
  33. 33. 참고 • https://www.docker.com/ • 도커 무작정 따라하기: 도커가 처음인 사람도 60분이면 웹 서버를 올릴 수 있습니다 http://www.slideshare.net/pyrasis/docker-fordummies-44424016 • 도커(Docker) 튜토리얼 : 깐 김에 배포까지 http://blog.nacyot.com/articles/2014-01-27-easy-deploy-with-docker/ • Docker로 보는 서버 운영의 미래 http://www.slideshare.net/deview/1a6docker • 예제: 작년 종합설계 때 썼던 웹 서버 https://bitbucket.org/jhgod/ univ-whoareyou-server
  34. 34. Q&A

×