SlideShare une entreprise Scribd logo
1  sur  35
Télécharger pour lire hors ligne
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
가상화 (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

Contenu connexe

Tendances

Ansible presentation
Ansible presentationAnsible presentation
Ansible presentationKumar Y
 
docker installation and basics
docker installation and basicsdocker installation and basics
docker installation and basicsWalid Ashraf
 
초심자를 위한 도커 소개 및 입문
초심자를 위한 도커 소개 및 입문초심자를 위한 도커 소개 및 입문
초심자를 위한 도커 소개 및 입문Daniel Seo
 
왕초보를 위한 도커 사용법
왕초보를 위한 도커 사용법왕초보를 위한 도커 사용법
왕초보를 위한 도커 사용법GeunCheolYeom
 
IT Automation with Ansible
IT Automation with AnsibleIT Automation with Ansible
IT Automation with AnsibleRayed Alrashed
 
Docker introduction
Docker introductionDocker introduction
Docker introductionPhuc Nguyen
 
Sonatype nexus 로 docker registry 관리하기
Sonatype nexus 로 docker registry 관리하기Sonatype nexus 로 docker registry 관리하기
Sonatype nexus 로 docker registry 관리하기KwangSeob Jeong
 
[1A6]Docker로 보는 서버 운영의 미래
[1A6]Docker로 보는 서버 운영의 미래[1A6]Docker로 보는 서버 운영의 미래
[1A6]Docker로 보는 서버 운영의 미래NAVER D2
 
Introduction to Ansible
Introduction to AnsibleIntroduction to Ansible
Introduction to AnsibleCoreStack
 
Introduction to ansible
Introduction to ansibleIntroduction to ansible
Introduction to ansibleOmid Vahdaty
 
쿠키런 1년, 서버개발 분투기
쿠키런 1년, 서버개발 분투기쿠키런 1년, 서버개발 분투기
쿠키런 1년, 서버개발 분투기Brian Hong
 
Docker 基礎介紹與實戰
Docker 基礎介紹與實戰Docker 基礎介紹與實戰
Docker 基礎介紹與實戰Bo-Yi Wu
 
Introduction to Docker
Introduction to DockerIntroduction to Docker
Introduction to DockerLuong Vo
 
Getting started with Ansible
Getting started with AnsibleGetting started with Ansible
Getting started with AnsibleIvan Serdyuk
 
DevOps with Ansible
DevOps with AnsibleDevOps with Ansible
DevOps with AnsibleSwapnil Jain
 
Docker: From Zero to Hero
Docker: From Zero to HeroDocker: From Zero to Hero
Docker: From Zero to Herofazalraja
 

Tendances (20)

Ansible presentation
Ansible presentationAnsible presentation
Ansible presentation
 
docker installation and basics
docker installation and basicsdocker installation and basics
docker installation and basics
 
What is Docker
What is DockerWhat is Docker
What is Docker
 
초심자를 위한 도커 소개 및 입문
초심자를 위한 도커 소개 및 입문초심자를 위한 도커 소개 및 입문
초심자를 위한 도커 소개 및 입문
 
왕초보를 위한 도커 사용법
왕초보를 위한 도커 사용법왕초보를 위한 도커 사용법
왕초보를 위한 도커 사용법
 
IT Automation with Ansible
IT Automation with AnsibleIT Automation with Ansible
IT Automation with Ansible
 
Docker introduction
Docker introductionDocker introduction
Docker introduction
 
Sonatype nexus 로 docker registry 관리하기
Sonatype nexus 로 docker registry 관리하기Sonatype nexus 로 docker registry 관리하기
Sonatype nexus 로 docker registry 관리하기
 
[1A6]Docker로 보는 서버 운영의 미래
[1A6]Docker로 보는 서버 운영의 미래[1A6]Docker로 보는 서버 운영의 미래
[1A6]Docker로 보는 서버 운영의 미래
 
Introduction to Ansible
Introduction to AnsibleIntroduction to Ansible
Introduction to Ansible
 
Introduction to ansible
Introduction to ansibleIntroduction to ansible
Introduction to ansible
 
Docker Kubernetes Istio
Docker Kubernetes IstioDocker Kubernetes Istio
Docker Kubernetes Istio
 
쿠키런 1년, 서버개발 분투기
쿠키런 1년, 서버개발 분투기쿠키런 1년, 서버개발 분투기
쿠키런 1년, 서버개발 분투기
 
Ansible get started
Ansible get startedAnsible get started
Ansible get started
 
Docker 基礎介紹與實戰
Docker 基礎介紹與實戰Docker 基礎介紹與實戰
Docker 基礎介紹與實戰
 
Automating with Ansible
Automating with AnsibleAutomating with Ansible
Automating with Ansible
 
Introduction to Docker
Introduction to DockerIntroduction to Docker
Introduction to Docker
 
Getting started with Ansible
Getting started with AnsibleGetting started with Ansible
Getting started with Ansible
 
DevOps with Ansible
DevOps with AnsibleDevOps with Ansible
DevOps with Ansible
 
Docker: From Zero to Hero
Docker: From Zero to HeroDocker: From Zero to Hero
Docker: From Zero to Hero
 

Similaire à Docker로 서버 개발 편하게 하기

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] 김훈민 - 서버 운영자가 꼭 알아야 할 DockerXpressEngine
 
[NDC17] Kubernetes로 개발서버 간단히 찍어내기
[NDC17] Kubernetes로 개발서버 간단히 찍어내기[NDC17] Kubernetes로 개발서버 간단히 찍어내기
[NDC17] Kubernetes로 개발서버 간단히 찍어내기SeungYong Oh
 
[TD 2015] windows server에서 만나보는 docker와 windows container(최한홍)
[TD 2015] windows server에서 만나보는 docker와 windows container(최한홍)[TD 2015] windows server에서 만나보는 docker와 windows container(최한홍)
[TD 2015] windows server에서 만나보는 docker와 windows container(최한홍)Sang Don Kim
 
DevOps (AWS, Docker, Ansible, Jenkins)
DevOps (AWS, Docker, Ansible, Jenkins)DevOps (AWS, Docker, Ansible, Jenkins)
DevOps (AWS, Docker, Ansible, Jenkins)완철 김
 
docker_quick_start
docker_quick_startdocker_quick_start
docker_quick_startSukjin Yun
 
Introduction to Docker - LOGISPOT
Introduction to Docker - LOGISPOTIntroduction to Docker - LOGISPOT
Introduction to Docker - LOGISPOTHosang Jeon
 
Introduction to Docker - LOGISPOT
Introduction to Docker - LOGISPOTIntroduction to Docker - LOGISPOT
Introduction to Docker - LOGISPOTLOGISPOT
 
Tech planet 2015 Docker 클라우드 구축 프로젝트 - d4
Tech planet 2015 Docker 클라우드 구축 프로젝트 - d4Tech planet 2015 Docker 클라우드 구축 프로젝트 - d4
Tech planet 2015 Docker 클라우드 구축 프로젝트 - d4Sangcheol Hwang
 
01.WEB SYSTEM BASED ON DOCKER
01.WEB SYSTEM BASED ON DOCKER01.WEB SYSTEM BASED ON DOCKER
01.WEB SYSTEM BASED ON DOCKEROpennaru, inc.
 
[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축
[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축
[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축Ji-Woong Choi
 
[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.08Nomad Connection, Inc.
 
[야생의 땅: 듀랑고] 지형 관리 완전 자동화 - 생생한 AWS와 Docker 체험기
[야생의 땅: 듀랑고] 지형 관리 완전 자동화 - 생생한 AWS와 Docker 체험기[야생의 땅: 듀랑고] 지형 관리 완전 자동화 - 생생한 AWS와 Docker 체험기
[야생의 땅: 듀랑고] 지형 관리 완전 자동화 - 생생한 AWS와 Docker 체험기Sumin Byeon
 
[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 on Kubernetes v1
[오픈소스컨설팅]Docker on Kubernetes v1[오픈소스컨설팅]Docker on Kubernetes v1
[오픈소스컨설팅]Docker on Kubernetes v1Ji-Woong Choi
 
Open stack의 vm개념을 통한 docker의 활용
Open stack의 vm개념을 통한 docker의 활용Open stack의 vm개념을 통한 docker의 활용
Open stack의 vm개념을 통한 docker의 활용Tae Young Lee
 
[부스트캠퍼세미나]육진혁_(대충 도커 쓰자는 이야기)
[부스트캠퍼세미나]육진혁_(대충 도커 쓰자는 이야기)[부스트캠퍼세미나]육진혁_(대충 도커 쓰자는 이야기)
[부스트캠퍼세미나]육진혁_(대충 도커 쓰자는 이야기)CONNECT FOUNDATION
 

Similaire à Docker로 서버 개발 편하게 하기 (20)

Docker 로 Linux 없이 Linux 환경에서 개발하기
Docker 로 Linux 없이 Linux 환경에서 개발하기Docker 로 Linux 없이 Linux 환경에서 개발하기
Docker 로 Linux 없이 Linux 환경에서 개발하기
 
XECon2015 :: [1-5] 김훈민 - 서버 운영자가 꼭 알아야 할 Docker
XECon2015 :: [1-5] 김훈민 - 서버 운영자가 꼭 알아야 할 DockerXECon2015 :: [1-5] 김훈민 - 서버 운영자가 꼭 알아야 할 Docker
XECon2015 :: [1-5] 김훈민 - 서버 운영자가 꼭 알아야 할 Docker
 
[NDC17] Kubernetes로 개발서버 간단히 찍어내기
[NDC17] Kubernetes로 개발서버 간단히 찍어내기[NDC17] Kubernetes로 개발서버 간단히 찍어내기
[NDC17] Kubernetes로 개발서버 간단히 찍어내기
 
[TD 2015] windows server에서 만나보는 docker와 windows container(최한홍)
[TD 2015] windows server에서 만나보는 docker와 windows container(최한홍)[TD 2015] windows server에서 만나보는 docker와 windows container(최한홍)
[TD 2015] windows server에서 만나보는 docker와 windows container(최한홍)
 
DevOps (AWS, Docker, Ansible, Jenkins)
DevOps (AWS, Docker, Ansible, Jenkins)DevOps (AWS, Docker, Ansible, Jenkins)
DevOps (AWS, Docker, Ansible, Jenkins)
 
docker_quick_start
docker_quick_startdocker_quick_start
docker_quick_start
 
Introduction to Docker - LOGISPOT
Introduction to Docker - LOGISPOTIntroduction to Docker - LOGISPOT
Introduction to Docker - LOGISPOT
 
Introduction to Docker - LOGISPOT
Introduction to Docker - LOGISPOTIntroduction to Docker - LOGISPOT
Introduction to Docker - LOGISPOT
 
Tech planet 2015 Docker 클라우드 구축 프로젝트 - d4
Tech planet 2015 Docker 클라우드 구축 프로젝트 - d4Tech planet 2015 Docker 클라우드 구축 프로젝트 - d4
Tech planet 2015 Docker 클라우드 구축 프로젝트 - d4
 
Docker osc 0508
Docker osc 0508Docker osc 0508
Docker osc 0508
 
01.WEB SYSTEM BASED ON DOCKER
01.WEB SYSTEM BASED ON DOCKER01.WEB SYSTEM BASED ON DOCKER
01.WEB SYSTEM BASED ON DOCKER
 
[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축
[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축
[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축
 
[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
 
Docker Intro
Docker IntroDocker Intro
Docker Intro
 
[야생의 땅: 듀랑고] 지형 관리 완전 자동화 - 생생한 AWS와 Docker 체험기
[야생의 땅: 듀랑고] 지형 관리 완전 자동화 - 생생한 AWS와 Docker 체험기[야생의 땅: 듀랑고] 지형 관리 완전 자동화 - 생생한 AWS와 Docker 체험기
[야생의 땅: 듀랑고] 지형 관리 완전 자동화 - 생생한 AWS와 Docker 체험기
 
[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)
 
Docker Container
Docker ContainerDocker Container
Docker Container
 
[오픈소스컨설팅]Docker on Kubernetes v1
[오픈소스컨설팅]Docker on Kubernetes v1[오픈소스컨설팅]Docker on Kubernetes v1
[오픈소스컨설팅]Docker on Kubernetes v1
 
Open stack의 vm개념을 통한 docker의 활용
Open stack의 vm개념을 통한 docker의 활용Open stack의 vm개념을 통한 docker의 활용
Open stack의 vm개념을 통한 docker의 활용
 
[부스트캠퍼세미나]육진혁_(대충 도커 쓰자는 이야기)
[부스트캠퍼세미나]육진혁_(대충 도커 쓰자는 이야기)[부스트캠퍼세미나]육진혁_(대충 도커 쓰자는 이야기)
[부스트캠퍼세미나]육진혁_(대충 도커 쓰자는 이야기)
 

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
  • 14.
  • 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