ݺߣ

ݺߣShare a Scribd company logo
Docker로
서버 개발 편하게 하기
2016. 05. 23
임지혁
바깥은 혼자 돌아다니기엔 위험하단다!
이것들 중 하나를 서버로 쓰렴.
노트북 데스크탑 서버 호스팅
서버 개발하기
내 컴퓨터 == 개발 환경 == 내 서버 환경
노트북
서버 개발하기
내 컴퓨터 == 개발 환경 == 내 서버 환경
!= 다른 사람 컴퓨터
노트북
서버 개발하기
내 컴퓨터 == 개발 환경 == 내 서버 환경
!= 다른 사람 컴퓨터
!= 프레젠테이션용 컴퓨터
노트북
서버 개발하기
서버 호스팅
서버 개발하기
서버 호스팅
서버 개발하기
서버 호스팅
버전 관리 (Version control)
• 소스 코드를 버전으로 관리하자!
• 게임의 Save point와 비슷한 개념
• Git, Mercurial, Bazzar, Subversion, …
• 취소 (Ctrl + Z)  Revert / 저장 (Ctrl + S)  Commit
• 백업  Push / Pull
• 브랜치(Branch), 태그 등등
버전 관리 (Version control)
• Hosting: github, Bitbucket, gitlab 등등
서버 개발하기
문제: A, B, C가 시간표 서버를 같이 개발하고 싶어한다.
환경 설정 매뉴얼의 압박…
A가 시간표에 기능을 개발하는 동안
B도 다른 시간표 기능을 개발할 수 있는가?
시간표 서버가 고장났다…
다른 시간표 서버로 바로 옮길 수 있는가?
서버가 뭔가 잘못됐다…
서버를 빨리 재시작 / 재구축할 수 있는가?
가상화 (Virtualization)
• 운영체제 수업에서 배운 컴퓨터 구조
Hardware
Operating System
Application
가상화 (Virtualization)
• 운영체제 수업에서 배운 컴퓨터 구조
Hardware
Operating System
Application
• 호스트 기반 가상 머신을 이용하는
컴퓨터 구조
Hardware
Operating System
Operating System
Application
Docker로 서버 개발 편하게 하기
가상화 (Virtualization)
• 필요할 때마다 컴퓨터 (가상 머신) 만들기
• 웹 서비스용 VM: Ubuntu + Apache + PHP + MySQL
• 자바 수업용 VM: Windows + Java + Eclipse
• 결재용 VM: Windows + ActiveX + 공인인증모듈 + 공인인증서
• 가상 머신 관리
• 각 가상 머신별로 CPU, 메모리, 디스크 지정 가능 (나중에 변경도 가능)
• Snapshot: Save point
• 가상 머신 내보내기
• 가상 머신 가져오기
• Virtualbox, VMware, Xen, KVM..
가상화 (Virtualization)
VMVM
VM
가상화 (Virtualization)
VMVM
VM
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
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"
Docker
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: 이미지 제거
Docker
• Docker hub
docker pull <repository>
• Dockerfile
• Docker image를 이렇게 만들어라
• Dockerfile 버전 관리
= VM 개발 환경 공유
Docker 활용하기
• Docker machine
• Docker는 Linux 커널을 공유해야 하는데, Windows와 OSX은 커널이 다름
• VM 안의 리눅스와 Docker 연결
Docker 활용하기
• Docker machine
• CLI: docker 명령어가 VM을 참조하도록 변경
Docker 활용하기
• Docker compose
• 여러 개의 Docker 컨테이너들을
한번에 관리하기
• ex: 시간표 프로젝트
=
Docker 활용하기
• Docker compose
• CLI: 컨테이너 상태 보기, 같이 켜고 끄기
Docker 활용하기
• Docker를 활용한 서버 개발하기
$ git add Dockerfile
$ git commit …
$ git push
Docker 활용하기
• Docker를 활용한 서버 개발하기 $ git clone ~
$ cd univ-whoareyou-server
$ docker-compose build
$ docker-compose up -d
Docker 활용하기
• Docker를 활용한 서버 개발하기
$ git pull ~
$ docker-compose build
$ docker-compose up -d
Docker를 활용해 서버 개발하기
문제: A, B, C가 시간표 서버를 같이 개발하고 싶어한다.
환경 설정 매뉴얼의 압박…? Container 실행하면 끝!
A가 시간표에 기능을 개발하는 동안
B도 다른 시간표 기능을 개발할 수 있는가? YES!
시간표 서버가 고장났다…
다른 시간표 서버로 바로 옮길 수 있는가? YES!
서버가 뭔가 잘못됐다…
서버를 빨리 재시작 / 재구축할 수 있는가? YES!
Docker를 활용해…?
Docker를 활용해…?
Docker를 활용해…?
참고
• 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
Q&A

More Related Content

What's hot (20)

DevOps with Ansible
DevOps with AnsibleDevOps with Ansible
DevOps with Ansible
Swapnil Jain
Docker introduction
Docker introductionDocker introduction
Docker introduction
Phuc Nguyen
Docker intro
Docker introDocker intro
Docker intro
Oleg Z
Container Network Interface: Network Plugins for Kubernetes and beyond
Container Network Interface: Network Plugins for Kubernetes and beyondContainer Network Interface: Network Plugins for Kubernetes and beyond
Container Network Interface: Network Plugins for Kubernetes and beyond
KubeAcademy
[1A6]Docker로 보는 서버 운영의 미래
[1A6]Docker로 보는 서버 운영의 미래[1A6]Docker로 보는 서버 운영의 미래
[1A6]Docker로 보는 서버 운영의 미래
NAVER D2
(Draft) Kubernetes - A Comprehensive Overview
(Draft) Kubernetes - A Comprehensive Overview(Draft) Kubernetes - A Comprehensive Overview
(Draft) Kubernetes - A Comprehensive Overview
Bob Killen
Introduction to Docker
Introduction to DockerIntroduction to Docker
Introduction to Docker
Pubudu Jayawardana
Docker Basics
Docker BasicsDocker Basics
Docker Basics
DuckDuckGo
[오픈소스컨설팅]Docker기초 실습 교육 20181113_v3
[오픈소스컨설팅]Docker기초 실습 교육 20181113_v3[오픈소스컨설팅]Docker기초 실습 교육 20181113_v3
[오픈소스컨설팅]Docker기초 실습 교육 20181113_v3
Ji-Woong Choi
Kubernetes Introduction
Kubernetes IntroductionKubernetes Introduction
Kubernetes Introduction
Peng Xiao
초심자를 위한 도커 소개 및 입문
초심자를 위한 도커 소개 및 입문초심자를 위한 도커 소개 및 입문
초심자를 위한 도커 소개 및 입문
Daniel Seo
Docker and the Linux Kernel
Docker and the Linux KernelDocker and the Linux Kernel
Docker and the Linux Kernel
Docker, Inc.
Introduction to Docker storage, volume and image
Introduction to Docker storage, volume and imageIntroduction to Docker storage, volume and image
Introduction to Docker storage, volume and image
ejlp12
Docker Swarm Introduction
Docker Swarm IntroductionDocker Swarm Introduction
Docker Swarm Introduction
rajdeep
What is Docker
What is DockerWhat is Docker
What is Docker
Pavel Klimiankou
Kubernetes 101
Kubernetes 101Kubernetes 101
Kubernetes 101
Crevise Technologies
(발표자료) CentOS EOL에 따른 대응 OS 검토 및 적용 방안.pdf
(발표자료) CentOS EOL에 따른 대응 OS 검토 및 적용 방안.pdf(발표자료) CentOS EOL에 따른 대응 OS 검토 및 적용 방안.pdf
(발표자료) CentOS EOL에 따른 대응 OS 검토 및 적용 방안.pdf
ssuserf8b8bd1
Introduction to docker
Introduction to dockerIntroduction to docker
Introduction to docker
Walid Ashraf
Docker introduction
Docker introductionDocker introduction
Docker introduction
dotCloud
What is Docker | Docker Tutorial for Beginners | Docker Container | DevOps To...
What is Docker | Docker Tutorial for Beginners | Docker Container | DevOps To...What is Docker | Docker Tutorial for Beginners | Docker Container | DevOps To...
What is Docker | Docker Tutorial for Beginners | Docker Container | DevOps To...
Edureka!
Docker intro
Docker introDocker intro
Docker intro
Oleg Z
Container Network Interface: Network Plugins for Kubernetes and beyond
Container Network Interface: Network Plugins for Kubernetes and beyondContainer Network Interface: Network Plugins for Kubernetes and beyond
Container Network Interface: Network Plugins for Kubernetes and beyond
KubeAcademy
[1A6]Docker로 보는 서버 운영의 미래
[1A6]Docker로 보는 서버 운영의 미래[1A6]Docker로 보는 서버 운영의 미래
[1A6]Docker로 보는 서버 운영의 미래
NAVER D2
(Draft) Kubernetes - A Comprehensive Overview
(Draft) Kubernetes - A Comprehensive Overview(Draft) Kubernetes - A Comprehensive Overview
(Draft) Kubernetes - A Comprehensive Overview
Bob Killen
[오픈소스컨설팅]Docker기초 실습 교육 20181113_v3
[오픈소스컨설팅]Docker기초 실습 교육 20181113_v3[오픈소스컨설팅]Docker기초 실습 교육 20181113_v3
[오픈소스컨설팅]Docker기초 실습 교육 20181113_v3
Ji-Woong Choi
Kubernetes Introduction
Kubernetes IntroductionKubernetes Introduction
Kubernetes Introduction
Peng Xiao
초심자를 위한 도커 소개 및 입문
초심자를 위한 도커 소개 및 입문초심자를 위한 도커 소개 및 입문
초심자를 위한 도커 소개 및 입문
Daniel Seo
Docker and the Linux Kernel
Docker and the Linux KernelDocker and the Linux Kernel
Docker and the Linux Kernel
Docker, Inc.
Introduction to Docker storage, volume and image
Introduction to Docker storage, volume and imageIntroduction to Docker storage, volume and image
Introduction to Docker storage, volume and image
ejlp12
Docker Swarm Introduction
Docker Swarm IntroductionDocker Swarm Introduction
Docker Swarm Introduction
rajdeep
(발표자료) CentOS EOL에 따른 대응 OS 검토 및 적용 방안.pdf
(발표자료) CentOS EOL에 따른 대응 OS 검토 및 적용 방안.pdf(발표자료) CentOS EOL에 따른 대응 OS 검토 및 적용 방안.pdf
(발표자료) CentOS EOL에 따른 대응 OS 검토 및 적용 방안.pdf
ssuserf8b8bd1
Docker introduction
Docker introductionDocker introduction
Docker introduction
dotCloud
What is Docker | Docker Tutorial for Beginners | Docker Container | DevOps To...
What is Docker | Docker Tutorial for Beginners | Docker Container | DevOps To...What is Docker | Docker Tutorial for Beginners | Docker Container | DevOps To...
What is Docker | Docker Tutorial for Beginners | Docker Container | DevOps To...
Edureka!

Viewers also liked (6)

Enterprise Docker
Enterprise DockerEnterprise Docker
Enterprise Docker
Lee Ji Eun
Docker란 무엇인가? : Docker 기본 사용법
Docker란 무엇인가? : Docker 기본 사용법Docker란 무엇인가? : Docker 기본 사용법
Docker란 무엇인가? : Docker 기본 사용법
pyrasis
The Future of Everything
The Future of EverythingThe Future of Everything
The Future of Everything
Michael Ducy
Envoy 를 이용한 코드 배포 자동화
Envoy 를 이용한 코드 배포 자동화Envoy 를 이용한 코드 배포 자동화
Envoy 를 이용한 코드 배포 자동화
Juwon Kim
Foreman in Your Data Center :OSDC 2015
Foreman in Your Data Center :OSDC 2015Foreman in Your Data Center :OSDC 2015
Foreman in Your Data Center :OSDC 2015
Stephen Benjamin
Foreman in your datacenter
Foreman in your datacenterForeman in your datacenter
Foreman in your datacenter
lzap
Docker란 무엇인가? : Docker 기본 사용법
Docker란 무엇인가? : Docker 기본 사용법Docker란 무엇인가? : Docker 기본 사용법
Docker란 무엇인가? : Docker 기본 사용법
pyrasis
The Future of Everything
The Future of EverythingThe Future of Everything
The Future of Everything
Michael Ducy
Envoy 를 이용한 코드 배포 자동화
Envoy 를 이용한 코드 배포 자동화Envoy 를 이용한 코드 배포 자동화
Envoy 를 이용한 코드 배포 자동화
Juwon Kim
Foreman in Your Data Center :OSDC 2015
Foreman in Your Data Center :OSDC 2015Foreman in Your Data Center :OSDC 2015
Foreman in Your Data Center :OSDC 2015
Stephen Benjamin
Foreman in your datacenter
Foreman in your datacenterForeman in your datacenter
Foreman in your datacenter
lzap

Similar to Docker로 서버 개발 편하게 하기 (20)

Docker 로 Linux 없이 Linux 환경에서 개발하기
Docker 로 Linux 없이 Linux 환경에서 개발하기Docker 로 Linux 없이 Linux 환경에서 개발하기
Docker 로 Linux 없이 Linux 환경에서 개발하기
iFunFactory Inc.
XECon2015 :: [1-5] 김훈민 - 서버 운영자가 꼭 알아야 할 Docker
XECon2015 :: [1-5] 김훈민 - 서버 운영자가 꼭 알아야 할 DockerXECon2015 :: [1-5] 김훈민 - 서버 운영자가 꼭 알아야 할 Docker
XECon2015 :: [1-5] 김훈민 - 서버 운영자가 꼭 알아야 할 Docker
XpressEngine
Docker 기본 및 Docker Swarm을 활용한 분산 서버 관리 A부터 Z까지 [전체모드에서 봐주세요]
Docker 기본 및 Docker Swarm을 활용한 분산 서버 관리 A부터 Z까지 [전체모드에서 봐주세요]Docker 기본 및 Docker Swarm을 활용한 분산 서버 관리 A부터 Z까지 [전체모드에서 봐주세요]
Docker 기본 및 Docker Swarm을 활용한 분산 서버 관리 A부터 Z까지 [전체모드에서 봐주세요]
David Lee
[Nomad connection]docker seminar 15.10.08
[Nomad connection]docker seminar 15.10.08[Nomad connection]docker seminar 15.10.08
[Nomad connection]docker seminar 15.10.08
Nomad Connection, Inc.
Bon voyage Docker_Kubernetes
Bon voyage Docker_KubernetesBon voyage Docker_Kubernetes
Bon voyage Docker_Kubernetes
ssuseraada82
Docker.소개.30 m
Docker.소개.30 mDocker.소개.30 m
Docker.소개.30 m
Wonchang Song
[17.01.19] docker introduction (Korean Version)
[17.01.19] docker introduction (Korean Version)[17.01.19] docker introduction (Korean Version)
[17.01.19] docker introduction (Korean Version)
Ildoo Kim
Docker Container
Docker ContainerDocker Container
Docker Container
Seung-Hoon Baek
Introduce Docker
Introduce DockerIntroduce Docker
Introduce Docker
Yongbok Kim
Docker osc 0508
Docker osc 0508Docker osc 0508
Docker osc 0508
Open Source Consulting
Docker at Deview 2013
Docker at Deview 2013Docker at Deview 2013
Docker at Deview 2013
Jude Kim
Docker at Deview 2013
Docker at Deview 2013Docker at Deview 2013
Docker at Deview 2013
Jude Kim
AWS + Docker in Vingle
AWS + Docker in VingleAWS + Docker in Vingle
AWS + Docker in Vingle
D C
DevOps with Docker
DevOps with DockerDevOps with Docker
DevOps with Docker
Sangcheol Hwang
Docker 사용가이드 public v0.1
Docker 사용가이드 public v0.1Docker 사용가이드 public v0.1
Docker 사용가이드 public v0.1
Steve Shim
[slideshare]k8s.pptx
[slideshare]k8s.pptx[slideshare]k8s.pptx
[slideshare]k8s.pptx
ssuserb8551e
Backend Master | 3.4.5 Deploy - Docker Principal
Backend Master | 3.4.5 Deploy - Docker PrincipalBackend Master | 3.4.5 Deploy - Docker Principal
Backend Master | 3.4.5 Deploy - Docker Principal
Kyunghun Jeon
01.WEB SYSTEM BASED ON DOCKER
01.WEB SYSTEM BASED ON DOCKER01.WEB SYSTEM BASED ON DOCKER
01.WEB SYSTEM BASED ON DOCKER
Opennaru, inc.
aws/docker/rails를 활용한 시스템 구축/운용 - docker편
aws/docker/rails를 활용한 시스템 구축/운용 - docker편aws/docker/rails를 활용한 시스템 구축/운용 - docker편
aws/docker/rails를 활용한 시스템 구축/운용 - docker편
negabaro
[오픈소스컨설팅]Docker on Kubernetes v1
[오픈소스컨설팅]Docker on Kubernetes v1[오픈소스컨설팅]Docker on Kubernetes v1
[오픈소스컨설팅]Docker on Kubernetes v1
Ji-Woong Choi
Docker 로 Linux 없이 Linux 환경에서 개발하기
Docker 로 Linux 없이 Linux 환경에서 개발하기Docker 로 Linux 없이 Linux 환경에서 개발하기
Docker 로 Linux 없이 Linux 환경에서 개발하기
iFunFactory Inc.
XECon2015 :: [1-5] 김훈민 - 서버 운영자가 꼭 알아야 할 Docker
XECon2015 :: [1-5] 김훈민 - 서버 운영자가 꼭 알아야 할 DockerXECon2015 :: [1-5] 김훈민 - 서버 운영자가 꼭 알아야 할 Docker
XECon2015 :: [1-5] 김훈민 - 서버 운영자가 꼭 알아야 할 Docker
XpressEngine
Docker 기본 및 Docker Swarm을 활용한 분산 서버 관리 A부터 Z까지 [전체모드에서 봐주세요]
Docker 기본 및 Docker Swarm을 활용한 분산 서버 관리 A부터 Z까지 [전체모드에서 봐주세요]Docker 기본 및 Docker Swarm을 활용한 분산 서버 관리 A부터 Z까지 [전체모드에서 봐주세요]
Docker 기본 및 Docker Swarm을 활용한 분산 서버 관리 A부터 Z까지 [전체모드에서 봐주세요]
David Lee
Bon voyage Docker_Kubernetes
Bon voyage Docker_KubernetesBon voyage Docker_Kubernetes
Bon voyage Docker_Kubernetes
ssuseraada82
[17.01.19] docker introduction (Korean Version)
[17.01.19] docker introduction (Korean Version)[17.01.19] docker introduction (Korean Version)
[17.01.19] docker introduction (Korean Version)
Ildoo Kim
Docker at Deview 2013
Docker at Deview 2013Docker at Deview 2013
Docker at Deview 2013
Jude Kim
Docker at Deview 2013
Docker at Deview 2013Docker at Deview 2013
Docker at Deview 2013
Jude Kim
AWS + Docker in Vingle
AWS + Docker in VingleAWS + Docker in Vingle
AWS + Docker in Vingle
D C
Docker 사용가이드 public v0.1
Docker 사용가이드 public v0.1Docker 사용가이드 public v0.1
Docker 사용가이드 public v0.1
Steve Shim
Backend Master | 3.4.5 Deploy - Docker Principal
Backend Master | 3.4.5 Deploy - Docker PrincipalBackend Master | 3.4.5 Deploy - Docker Principal
Backend Master | 3.4.5 Deploy - Docker Principal
Kyunghun Jeon
aws/docker/rails를 활용한 시스템 구축/운용 - docker편
aws/docker/rails를 활용한 시스템 구축/운용 - docker편aws/docker/rails를 활용한 시스템 구축/운용 - docker편
aws/docker/rails를 활용한 시스템 구축/운용 - docker편
negabaro
[오픈소스컨설팅]Docker on Kubernetes v1
[오픈소스컨설팅]Docker on Kubernetes v1[오픈소스컨설팅]Docker on Kubernetes v1
[오픈소스컨설팅]Docker on Kubernetes v1
Ji-Woong Choi

Docker로 서버 개발 편하게 하기

  • 1. Docker로 서버 개발 편하게 하기 2016. 05. 23 임지혁
  • 2. 바깥은 혼자 돌아다니기엔 위험하단다! 이것들 중 하나를 서버로 쓰렴. 노트북 데스크탑 서버 호스팅
  • 3. 서버 개발하기 내 컴퓨터 == 개발 환경 == 내 서버 환경 노트북
  • 4. 서버 개발하기 내 컴퓨터 == 개발 환경 == 내 서버 환경 != 다른 사람 컴퓨터 노트북
  • 5. 서버 개발하기 내 컴퓨터 == 개발 환경 == 내 서버 환경 != 다른 사람 컴퓨터 != 프레젠테이션용 컴퓨터 노트북
  • 9. 버전 관리 (Version control) • 소스 코드를 버전으로 관리하자! • 게임의 Save point와 비슷한 개념 • Git, Mercurial, Bazzar, Subversion, … • 취소 (Ctrl + Z)  Revert / 저장 (Ctrl + S)  Commit • 백업  Push / Pull • 브랜치(Branch), 태그 등등
  • 10. 버전 관리 (Version control) • Hosting: github, Bitbucket, gitlab 등등
  • 11. 서버 개발하기 문제: A, B, C가 시간표 서버를 같이 개발하고 싶어한다. 환경 설정 매뉴얼의 압박… A가 시간표에 기능을 개발하는 동안 B도 다른 시간표 기능을 개발할 수 있는가? 시간표 서버가 고장났다… 다른 시간표 서버로 바로 옮길 수 있는가? 서버가 뭔가 잘못됐다… 서버를 빨리 재시작 / 재구축할 수 있는가?
  • 12. 가상화 (Virtualization) • 운영체제 수업에서 배운 컴퓨터 구조 Hardware Operating System Application
  • 13. 가상화 (Virtualization) • 운영체제 수업에서 배운 컴퓨터 구조 Hardware Operating System Application • 호스트 기반 가상 머신을 이용하는 컴퓨터 구조 Hardware Operating System Operating System Application
  • 15. 가상화 (Virtualization) • 필요할 때마다 컴퓨터 (가상 머신) 만들기 • 웹 서비스용 VM: Ubuntu + Apache + PHP + MySQL • 자바 수업용 VM: Windows + Java + Eclipse • 결재용 VM: Windows + ActiveX + 공인인증모듈 + 공인인증서 • 가상 머신 관리 • 각 가상 머신별로 CPU, 메모리, 디스크 지정 가능 (나중에 변경도 가능) • Snapshot: Save point • 가상 머신 내보내기 • 가상 머신 가져오기 • Virtualbox, VMware, Xen, KVM..
  • 18. 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
  • 19. 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"
  • 21. 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: 이미지 제거
  • 22. Docker • Docker hub docker pull <repository> • Dockerfile • Docker image를 이렇게 만들어라 • Dockerfile 버전 관리 = VM 개발 환경 공유
  • 23. Docker 활용하기 • Docker machine • Docker는 Linux 커널을 공유해야 하는데, Windows와 OSX은 커널이 다름 • VM 안의 리눅스와 Docker 연결
  • 24. Docker 활용하기 • Docker machine • CLI: docker 명령어가 VM을 참조하도록 변경
  • 25. Docker 활용하기 • Docker compose • 여러 개의 Docker 컨테이너들을 한번에 관리하기 • ex: 시간표 프로젝트 =
  • 26. Docker 활용하기 • Docker compose • CLI: 컨테이너 상태 보기, 같이 켜고 끄기
  • 27. Docker 활용하기 • Docker를 활용한 서버 개발하기 $ git add Dockerfile $ git commit … $ git push
  • 28. Docker 활용하기 • Docker를 활용한 서버 개발하기 $ git clone ~ $ cd univ-whoareyou-server $ docker-compose build $ docker-compose up -d
  • 29. Docker 활용하기 • Docker를 활용한 서버 개발하기 $ git pull ~ $ docker-compose build $ docker-compose up -d
  • 30. Docker를 활용해 서버 개발하기 문제: A, B, C가 시간표 서버를 같이 개발하고 싶어한다. 환경 설정 매뉴얼의 압박…? Container 실행하면 끝! A가 시간표에 기능을 개발하는 동안 B도 다른 시간표 기능을 개발할 수 있는가? YES! 시간표 서버가 고장났다… 다른 시간표 서버로 바로 옮길 수 있는가? YES! 서버가 뭔가 잘못됐다… 서버를 빨리 재시작 / 재구축할 수 있는가? YES!
  • 34. 참고 • 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
  • 35. Q&A