[발표] 멜팅팟 서버 사이드 레벨에서 자바 스크립트 엔진 Node.js의
[1A6]Docker로 보는 서버 운영의 미래
-
Upload
naver-d2 -
Category
Technology
-
view
7.321 -
download
15
description
Transcript of [1A6]Docker로 보는 서버 운영의 미래
![Page 1: [1A6]Docker로 보는 서버 운영의 미래](https://reader031.fdocument.pub/reader031/viewer/2022020217/5560fa74d8b42a8c388b4e24/html5/thumbnails/1.jpg)
Docker로 보는 서버 운영의 미래
김대권(nacyot)
![Page 2: [1A6]Docker로 보는 서버 운영의 미래](https://reader031.fdocument.pub/reader031/viewer/2022020217/5560fa74d8b42a8c388b4e24/html5/thumbnails/2.jpg)
Leevi
@nacyot
Ruby
Docker Korea
http://leevi.co.kr http://nacyot.com
![Page 3: [1A6]Docker로 보는 서버 운영의 미래](https://reader031.fdocument.pub/reader031/viewer/2022020217/5560fa74d8b42a8c388b4e24/html5/thumbnails/3.jpg)
Deployment, 그리고 Docker
![Page 4: [1A6]Docker로 보는 서버 운영의 미래](https://reader031.fdocument.pub/reader031/viewer/2022020217/5560fa74d8b42a8c388b4e24/html5/thumbnails/4.jpg)
TOC
1. 배포와 서버운영
2. Infrastructure as a Service (IaaS)
3. Platform as a Service (PaaS)
4. 컨테이너형 어플리케이션 가상화
5. Docker로 다시 정의하는 배포
![Page 5: [1A6]Docker로 보는 서버 운영의 미래](https://reader031.fdocument.pub/reader031/viewer/2022020217/5560fa74d8b42a8c388b4e24/html5/thumbnails/5.jpg)
State (상태)사물ㆍ현상이 놓여 있는 모양이나 형편
![Page 6: [1A6]Docker로 보는 서버 운영의 미래](https://reader031.fdocument.pub/reader031/viewer/2022020217/5560fa74d8b42a8c388b4e24/html5/thumbnails/6.jpg)
1. 배포와 서버운영
![Page 7: [1A6]Docker로 보는 서버 운영의 미래](https://reader031.fdocument.pub/reader031/viewer/2022020217/5560fa74d8b42a8c388b4e24/html5/thumbnails/7.jpg)
배포의 요소
![Page 8: [1A6]Docker로 보는 서버 운영의 미래](https://reader031.fdocument.pub/reader031/viewer/2022020217/5560fa74d8b42a8c388b4e24/html5/thumbnails/8.jpg)
배포란?
대상 서버를 어플리케이션이 실행 가능한 상태로 만드는 일
![Page 9: [1A6]Docker로 보는 서버 운영의 미래](https://reader031.fdocument.pub/reader031/viewer/2022020217/5560fa74d8b42a8c388b4e24/html5/thumbnails/9.jpg)
예제
Ruby on Rails 어플리케이션
![Page 10: [1A6]Docker로 보는 서버 운영의 미래](https://reader031.fdocument.pub/reader031/viewer/2022020217/5560fa74d8b42a8c388b4e24/html5/thumbnails/10.jpg)
하나의 서버
![Page 11: [1A6]Docker로 보는 서버 운영의 미래](https://reader031.fdocument.pub/reader031/viewer/2022020217/5560fa74d8b42a8c388b4e24/html5/thumbnails/11.jpg)
배포 과정
![Page 12: [1A6]Docker로 보는 서버 운영의 미래](https://reader031.fdocument.pub/reader031/viewer/2022020217/5560fa74d8b42a8c388b4e24/html5/thumbnails/12.jpg)
배포 과정에 따른 상태 변화
![Page 13: [1A6]Docker로 보는 서버 운영의 미래](https://reader031.fdocument.pub/reader031/viewer/2022020217/5560fa74d8b42a8c388b4e24/html5/thumbnails/13.jpg)
더 복잡한 상황
![Page 14: [1A6]Docker로 보는 서버 운영의 미래](https://reader031.fdocument.pub/reader031/viewer/2022020217/5560fa74d8b42a8c388b4e24/html5/thumbnails/14.jpg)
다수의 어플리케이션
![Page 15: [1A6]Docker로 보는 서버 운영의 미래](https://reader031.fdocument.pub/reader031/viewer/2022020217/5560fa74d8b42a8c388b4e24/html5/thumbnails/15.jpg)
새로운 어플리케이션
![Page 16: [1A6]Docker로 보는 서버 운영의 미래](https://reader031.fdocument.pub/reader031/viewer/2022020217/5560fa74d8b42a8c388b4e24/html5/thumbnails/16.jpg)
배포 과정 (정상화)
![Page 17: [1A6]Docker로 보는 서버 운영의 미래](https://reader031.fdocument.pub/reader031/viewer/2022020217/5560fa74d8b42a8c388b4e24/html5/thumbnails/17.jpg)
배포
어플리케이션들이 모두 실행 가능한 상태로 만드는 일
![Page 18: [1A6]Docker로 보는 서버 운영의 미래](https://reader031.fdocument.pub/reader031/viewer/2022020217/5560fa74d8b42a8c388b4e24/html5/thumbnails/18.jpg)
서버 운영
모든 어플리케이션이 동작하는 *상태*를 유지하는 일
![Page 19: [1A6]Docker로 보는 서버 운영의 미래](https://reader031.fdocument.pub/reader031/viewer/2022020217/5560fa74d8b42a8c388b4e24/html5/thumbnails/19.jpg)
서버 운영이 어려운 이유
![Page 20: [1A6]Docker로 보는 서버 운영의 미래](https://reader031.fdocument.pub/reader031/viewer/2022020217/5560fa74d8b42a8c388b4e24/html5/thumbnails/20.jpg)
서버 운영 == 전역적 상태 관리
![Page 21: [1A6]Docker로 보는 서버 운영의 미래](https://reader031.fdocument.pub/reader031/viewer/2022020217/5560fa74d8b42a8c388b4e24/html5/thumbnails/21.jpg)
![Page 22: [1A6]Docker로 보는 서버 운영의 미래](https://reader031.fdocument.pub/reader031/viewer/2022020217/5560fa74d8b42a8c388b4e24/html5/thumbnails/22.jpg)
The system becomes a house of cards. You fearany change and you fear replacing it since youdon’t know everything about how it works.
- Chad Fowler
![Page 23: [1A6]Docker로 보는 서버 운영의 미래](https://reader031.fdocument.pub/reader031/viewer/2022020217/5560fa74d8b42a8c388b4e24/html5/thumbnails/23.jpg)
클라우드
![Page 24: [1A6]Docker로 보는 서버 운영의 미래](https://reader031.fdocument.pub/reader031/viewer/2022020217/5560fa74d8b42a8c388b4e24/html5/thumbnails/24.jpg)
2. Infrastructure as a Service
![Page 25: [1A6]Docker로 보는 서버 운영의 미래](https://reader031.fdocument.pub/reader031/viewer/2022020217/5560fa74d8b42a8c388b4e24/html5/thumbnails/25.jpg)
같은 환경을 가지는 가상화된 환경
![Page 26: [1A6]Docker로 보는 서버 운영의 미래](https://reader031.fdocument.pub/reader031/viewer/2022020217/5560fa74d8b42a8c388b4e24/html5/thumbnails/26.jpg)
원하는 만큼 사용 가능한 컴퓨팅 자원
![Page 27: [1A6]Docker로 보는 서버 운영의 미래](https://reader031.fdocument.pub/reader031/viewer/2022020217/5560fa74d8b42a8c388b4e24/html5/thumbnails/27.jpg)
Disposable Component
서버는 물리적 자원
인스턴스는 쓰고 버리는 자원
![Page 28: [1A6]Docker로 보는 서버 운영의 미래](https://reader031.fdocument.pub/reader031/viewer/2022020217/5560fa74d8b42a8c388b4e24/html5/thumbnails/28.jpg)
"Amazon Web Service는 인터넷의 발전소다.
타마카와 켄
![Page 29: [1A6]Docker로 보는 서버 운영의 미래](https://reader031.fdocument.pub/reader031/viewer/2022020217/5560fa74d8b42a8c388b4e24/html5/thumbnails/29.jpg)
이미지
![Page 30: [1A6]Docker로 보는 서버 운영의 미래](https://reader031.fdocument.pub/reader031/viewer/2022020217/5560fa74d8b42a8c388b4e24/html5/thumbnails/30.jpg)
이미지화 & 스케일 인/아웃
![Page 31: [1A6]Docker로 보는 서버 운영의 미래](https://reader031.fdocument.pub/reader031/viewer/2022020217/5560fa74d8b42a8c388b4e24/html5/thumbnails/31.jpg)
오토 스케일링
![Page 32: [1A6]Docker로 보는 서버 운영의 미래](https://reader031.fdocument.pub/reader031/viewer/2022020217/5560fa74d8b42a8c388b4e24/html5/thumbnails/32.jpg)
이미지 관리
![Page 33: [1A6]Docker로 보는 서버 운영의 미래](https://reader031.fdocument.pub/reader031/viewer/2022020217/5560fa74d8b42a8c388b4e24/html5/thumbnails/33.jpg)
이미지 수의 증가
이미지 수에 비례해서 관리가 어려워짐 (어플리케이션 수 * 시간)
![Page 34: [1A6]Docker로 보는 서버 운영의 미래](https://reader031.fdocument.pub/reader031/viewer/2022020217/5560fa74d8b42a8c388b4e24/html5/thumbnails/34.jpg)
상태에 기반한 이미지
이미지는 어떤 특정 시점의 *상태*를 저장한 것 뿐
![Page 35: [1A6]Docker로 보는 서버 운영의 미래](https://reader031.fdocument.pub/reader031/viewer/2022020217/5560fa74d8b42a8c388b4e24/html5/thumbnails/35.jpg)
최종적으로 남은 이미지
어떻게 만들었는지 아무도 모름 (복원 불가능)
![Page 36: [1A6]Docker로 보는 서버 운영의 미래](https://reader031.fdocument.pub/reader031/viewer/2022020217/5560fa74d8b42a8c388b4e24/html5/thumbnails/36.jpg)
이미지 관리
단순화된 상태 관리
어떻게 하면 상태를 더 잘 관리할 수 있을까?
이미지 / 인스턴스 활용의 극대화
![Page 37: [1A6]Docker로 보는 서버 운영의 미래](https://reader031.fdocument.pub/reader031/viewer/2022020217/5560fa74d8b42a8c388b4e24/html5/thumbnails/37.jpg)
Configuration Management
![Page 38: [1A6]Docker로 보는 서버 운영의 미래](https://reader031.fdocument.pub/reader031/viewer/2022020217/5560fa74d8b42a8c388b4e24/html5/thumbnails/38.jpg)
명령어를 통한 상태 변화(과거)
![Page 39: [1A6]Docker로 보는 서버 운영의 미래](https://reader031.fdocument.pub/reader031/viewer/2022020217/5560fa74d8b42a8c388b4e24/html5/thumbnails/39.jpg)
Cookbook을 통한 상태 변화(Chef)
![Page 40: [1A6]Docker로 보는 서버 운영의 미래](https://reader031.fdocument.pub/reader031/viewer/2022020217/5560fa74d8b42a8c388b4e24/html5/thumbnails/40.jpg)
멱등
같은 과정을 거치면 서버는 똑같은 상태가 된다
![Page 41: [1A6]Docker로 보는 서버 운영의 미래](https://reader031.fdocument.pub/reader031/viewer/2022020217/5560fa74d8b42a8c388b4e24/html5/thumbnails/41.jpg)
Infrastructure의 코드화
![Page 42: [1A6]Docker로 보는 서버 운영의 미래](https://reader031.fdocument.pub/reader031/viewer/2022020217/5560fa74d8b42a8c388b4e24/html5/thumbnails/42.jpg)
Apache Cookbook 예제
CMD
$ apt-get install apache2
Chef Cookbook
package 'httpd'
service 'httpd' do action [:start, :enable]end
![Page 43: [1A6]Docker로 보는 서버 운영의 미래](https://reader031.fdocument.pub/reader031/viewer/2022020217/5560fa74d8b42a8c388b4e24/html5/thumbnails/43.jpg)
Configuration Management 효과
초기 적용이 어려움
학습 비용많은 시행착오가 필요작업 속도가 느림
서버 운영를 단순화
서버의 상태를 코드로 관리어떤 상태를 재현 가능하게 만들어줌다수의 서버를 운용중에 특정 상태로 변화시킬 수 있음
![Page 44: [1A6]Docker로 보는 서버 운영의 미래](https://reader031.fdocument.pub/reader031/viewer/2022020217/5560fa74d8b42a8c388b4e24/html5/thumbnails/44.jpg)
Configuration Management
상태를 관리하는 도구
![Page 45: [1A6]Docker로 보는 서버 운영의 미래](https://reader031.fdocument.pub/reader031/viewer/2022020217/5560fa74d8b42a8c388b4e24/html5/thumbnails/45.jpg)
3. Platform as a Service
![Page 46: [1A6]Docker로 보는 서버 운영의 미래](https://reader031.fdocument.pub/reader031/viewer/2022020217/5560fa74d8b42a8c388b4e24/html5/thumbnails/46.jpg)
PaaS
자유도는 낮지만, 좀 더 편리한?
![Page 47: [1A6]Docker로 보는 서버 운영의 미래](https://reader031.fdocument.pub/reader031/viewer/2022020217/5560fa74d8b42a8c388b4e24/html5/thumbnails/47.jpg)
![Page 48: [1A6]Docker로 보는 서버 운영의 미래](https://reader031.fdocument.pub/reader031/viewer/2022020217/5560fa74d8b42a8c388b4e24/html5/thumbnails/48.jpg)
배포의 요소(과거)
![Page 49: [1A6]Docker로 보는 서버 운영의 미래](https://reader031.fdocument.pub/reader031/viewer/2022020217/5560fa74d8b42a8c388b4e24/html5/thumbnails/49.jpg)
배포의 요소(PaaS)
![Page 50: [1A6]Docker로 보는 서버 운영의 미래](https://reader031.fdocument.pub/reader031/viewer/2022020217/5560fa74d8b42a8c388b4e24/html5/thumbnails/50.jpg)
어플리케이션 배포 단위
배포 환경은 Heroku가 제공
![Page 51: [1A6]Docker로 보는 서버 운영의 미래](https://reader031.fdocument.pub/reader031/viewer/2022020217/5560fa74d8b42a8c388b4e24/html5/thumbnails/51.jpg)
어플리케이션과 배포 단위의 1:1 매치
어플리케이션 별 독립된 배포 환경 제공
![Page 52: [1A6]Docker로 보는 서버 운영의 미래](https://reader031.fdocument.pub/reader031/viewer/2022020217/5560fa74d8b42a8c388b4e24/html5/thumbnails/52.jpg)
Scale In / Out 기본 지원
![Page 53: [1A6]Docker로 보는 서버 운영의 미래](https://reader031.fdocument.pub/reader031/viewer/2022020217/5560fa74d8b42a8c388b4e24/html5/thumbnails/53.jpg)
어플리케이션 업데이트
![Page 54: [1A6]Docker로 보는 서버 운영의 미래](https://reader031.fdocument.pub/reader031/viewer/2022020217/5560fa74d8b42a8c388b4e24/html5/thumbnails/54.jpg)
기존의 어플리케이션 업데이트
![Page 55: [1A6]Docker로 보는 서버 운영의 미래](https://reader031.fdocument.pub/reader031/viewer/2022020217/5560fa74d8b42a8c388b4e24/html5/thumbnails/55.jpg)
기존의 어플리케이션 롤백
![Page 56: [1A6]Docker로 보는 서버 운영의 미래](https://reader031.fdocument.pub/reader031/viewer/2022020217/5560fa74d8b42a8c388b4e24/html5/thumbnails/56.jpg)
Heroku에서의 어플리케이션 업데이트
![Page 57: [1A6]Docker로 보는 서버 운영의 미래](https://reader031.fdocument.pub/reader031/viewer/2022020217/5560fa74d8b42a8c388b4e24/html5/thumbnails/57.jpg)
Heroku에서의 롤백
$ heroku releasesRel Change By When---- ---------------------- ---------- ----------v52 Config add AWS_S3_KEY [email protected] 5 minutes agov51 Deploy de63889 [email protected] 7 minutes agov50 Deploy 7c35f77 [email protected] 3 hours agov49 Rollback to v46 [email protected] 2010-09-12 15:32:17 -0700...
$ heroku rollback v40
![Page 58: [1A6]Docker로 보는 서버 운영의 미래](https://reader031.fdocument.pub/reader031/viewer/2022020217/5560fa74d8b42a8c388b4e24/html5/thumbnails/58.jpg)
배포의 단순화
![Page 59: [1A6]Docker로 보는 서버 운영의 미래](https://reader031.fdocument.pub/reader031/viewer/2022020217/5560fa74d8b42a8c388b4e24/html5/thumbnails/59.jpg)
확장의 단순화
![Page 60: [1A6]Docker로 보는 서버 운영의 미래](https://reader031.fdocument.pub/reader031/viewer/2022020217/5560fa74d8b42a8c388b4e24/html5/thumbnails/60.jpg)
PaaS를 사용하지 않는 이유
![Page 61: [1A6]Docker로 보는 서버 운영의 미래](https://reader031.fdocument.pub/reader031/viewer/2022020217/5560fa74d8b42a8c388b4e24/html5/thumbnails/61.jpg)
비용
![Page 62: [1A6]Docker로 보는 서버 운영의 미래](https://reader031.fdocument.pub/reader031/viewer/2022020217/5560fa74d8b42a8c388b4e24/html5/thumbnails/62.jpg)
PaaS스럽지 않은 어플리케이션
![Page 63: [1A6]Docker로 보는 서버 운영의 미래](https://reader031.fdocument.pub/reader031/viewer/2022020217/5560fa74d8b42a8c388b4e24/html5/thumbnails/63.jpg)
PaaS != IaaS
IaaS에 비해서 큰 학습 비용
원격 접속 시스템이 없거나 제한
파일 시스템 이용에 제한
Site 패키지 설치 제한
로그 수집 제한적 허용 (STDOUT)
![Page 64: [1A6]Docker로 보는 서버 운영의 미래](https://reader031.fdocument.pub/reader031/viewer/2022020217/5560fa74d8b42a8c388b4e24/html5/thumbnails/64.jpg)
문제를 해결하는 법이 다름
![Page 65: [1A6]Docker로 보는 서버 운영의 미래](https://reader031.fdocument.pub/reader031/viewer/2022020217/5560fa74d8b42a8c388b4e24/html5/thumbnails/65.jpg)
파일 시스템
외부 Storage 서비스를 사용
![Page 66: [1A6]Docker로 보는 서버 운영의 미래](https://reader031.fdocument.pub/reader031/viewer/2022020217/5560fa74d8b42a8c388b4e24/html5/thumbnails/66.jpg)
애드온 (외부 서비스)
![Page 67: [1A6]Docker로 보는 서버 운영의 미래](https://reader031.fdocument.pub/reader031/viewer/2022020217/5560fa74d8b42a8c388b4e24/html5/thumbnails/67.jpg)
4. 컨테이너형 어플리케이션 가상화
![Page 68: [1A6]Docker로 보는 서버 운영의 미래](https://reader031.fdocument.pub/reader031/viewer/2022020217/5560fa74d8b42a8c388b4e24/html5/thumbnails/68.jpg)
PaaS의 단점?
원격 접속 시스템이 없거나 제한
파일 시스템 이용에 제한
Site 패키지 설치 제한
로그 수집 제한적 허용 (STDOUT)
![Page 69: [1A6]Docker로 보는 서버 운영의 미래](https://reader031.fdocument.pub/reader031/viewer/2022020217/5560fa74d8b42a8c388b4e24/html5/thumbnails/69.jpg)
상태 변화에 의존한 작업
![Page 70: [1A6]Docker로 보는 서버 운영의 미래](https://reader031.fdocument.pub/reader031/viewer/2022020217/5560fa74d8b42a8c388b4e24/html5/thumbnails/70.jpg)
Immutable(Stateless)
![Page 71: [1A6]Docker로 보는 서버 운영의 미래](https://reader031.fdocument.pub/reader031/viewer/2022020217/5560fa74d8b42a8c388b4e24/html5/thumbnails/71.jpg)
뒤집어보면 컨테이너형 가상화의 특징
![Page 72: [1A6]Docker로 보는 서버 운영의 미래](https://reader031.fdocument.pub/reader031/viewer/2022020217/5560fa74d8b42a8c388b4e24/html5/thumbnails/72.jpg)
Heroku Dyno
LinuX Container (LXC)
Chroot on steroid
![Page 73: [1A6]Docker로 보는 서버 운영의 미래](https://reader031.fdocument.pub/reader031/viewer/2022020217/5560fa74d8b42a8c388b4e24/html5/thumbnails/73.jpg)
Chroot (Change Root)
pivot root 기능
파일, 라이브러리는 직접 준비
사용이 까다로움
프로세스 격리의 초기 버전?
![Page 74: [1A6]Docker로 보는 서버 운영의 미래](https://reader031.fdocument.pub/reader031/viewer/2022020217/5560fa74d8b42a8c388b4e24/html5/thumbnails/74.jpg)
LinuX Container
Kernel Namespaces
Apparmor and SELinux profiles
Seccomp policies
Chroots (using pivot_root)Kernel capabilities
Control groups (cgroups)
![Page 75: [1A6]Docker로 보는 서버 운영의 미래](https://reader031.fdocument.pub/reader031/viewer/2022020217/5560fa74d8b42a8c388b4e24/html5/thumbnails/75.jpg)
예제 1) 가상 머신?
![Page 76: [1A6]Docker로 보는 서버 운영의 미래](https://reader031.fdocument.pub/reader031/viewer/2022020217/5560fa74d8b42a8c388b4e24/html5/thumbnails/76.jpg)
호스트 커널 공유
![Page 77: [1A6]Docker로 보는 서버 운영의 미래](https://reader031.fdocument.pub/reader031/viewer/2022020217/5560fa74d8b42a8c388b4e24/html5/thumbnails/77.jpg)
프로세스 실행 환경 분리
![Page 78: [1A6]Docker로 보는 서버 운영의 미래](https://reader031.fdocument.pub/reader031/viewer/2022020217/5560fa74d8b42a8c388b4e24/html5/thumbnails/78.jpg)
예제 2) 프로세스 격리
격리된 환경에서 특정 프로세스만 실행
# 우분투 환경$ cat /etc/lsb-release DISTRIB_ID=UbuntuDISTRIB_RELEASE=14.04
# CentOS 환경$ lxc-create -t centos -n centos$ lxc-start -n centos -- cat /etc/redhat-releaseCentOS release 6.5 (Final)
![Page 79: [1A6]Docker로 보는 서버 운영의 미래](https://reader031.fdocument.pub/reader031/viewer/2022020217/5560fa74d8b42a8c388b4e24/html5/thumbnails/79.jpg)
Linux Container
격리된 환경, 즉 내부적인 의미의 컨테이너에 집중
![Page 80: [1A6]Docker로 보는 서버 운영의 미래](https://reader031.fdocument.pub/reader031/viewer/2022020217/5560fa74d8b42a8c388b4e24/html5/thumbnails/80.jpg)
![Page 81: [1A6]Docker로 보는 서버 운영의 미래](https://reader031.fdocument.pub/reader031/viewer/2022020217/5560fa74d8b42a8c388b4e24/html5/thumbnails/81.jpg)
Docker (1)
![Page 82: [1A6]Docker로 보는 서버 운영의 미래](https://reader031.fdocument.pub/reader031/viewer/2022020217/5560fa74d8b42a8c388b4e24/html5/thumbnails/82.jpg)
Docker (2)
Linux Container의 확장 도구
![Page 83: [1A6]Docker로 보는 서버 운영의 미래](https://reader031.fdocument.pub/reader031/viewer/2022020217/5560fa74d8b42a8c388b4e24/html5/thumbnails/83.jpg)
Docker Container ≈ Heroku Dyno
![Page 84: [1A6]Docker로 보는 서버 운영의 미래](https://reader031.fdocument.pub/reader031/viewer/2022020217/5560fa74d8b42a8c388b4e24/html5/thumbnails/84.jpg)
Docker는 LXC의 Wrapper?
![Page 85: [1A6]Docker로 보는 서버 운영의 미래](https://reader031.fdocument.pub/reader031/viewer/2022020217/5560fa74d8b42a8c388b4e24/html5/thumbnails/85.jpg)
Docker 구조
![Page 86: [1A6]Docker로 보는 서버 운영의 미래](https://reader031.fdocument.pub/reader031/viewer/2022020217/5560fa74d8b42a8c388b4e24/html5/thumbnails/86.jpg)
Docker의 발전
0.7.0 (20131125)Device Mapper 지원
0.8.0 (20140204)BTRFS 지원MacOSX 공식 지원(boot2docker)
0.9.0 (20140310)LibContainer 도입(기본 드라이버)
1.0.0 (20140609)Docker Hub안정화(문서에서 경고 문구 사라짐)
![Page 87: [1A6]Docker로 보는 서버 운영의 미래](https://reader031.fdocument.pub/reader031/viewer/2022020217/5560fa74d8b42a8c388b4e24/html5/thumbnails/87.jpg)
현재의 Docker
![Page 88: [1A6]Docker로 보는 서버 운영의 미래](https://reader031.fdocument.pub/reader031/viewer/2022020217/5560fa74d8b42a8c388b4e24/html5/thumbnails/88.jpg)
Docker 지원 시스템 (범용성)
Ubuntu, Red Hat Enterprise Linux, Oracle Linux, CentOS, Debian,Gentoo, Google Cloud Platform, Rackspace Cloud, Amazon EC2, IBMSoftlayer, Arch Linux, Fedora, openSUSE, CRUX Linux, Microsoft
Windows, Mac OS X
![Page 89: [1A6]Docker로 보는 서버 운영의 미래](https://reader031.fdocument.pub/reader031/viewer/2022020217/5560fa74d8b42a8c388b4e24/html5/thumbnails/89.jpg)
도커의 차별성
이미지(Image)
![Page 90: [1A6]Docker로 보는 서버 운영의 미래](https://reader031.fdocument.pub/reader031/viewer/2022020217/5560fa74d8b42a8c388b4e24/html5/thumbnails/90.jpg)
이미지 기반의 어플리케이션 가상화
![Page 91: [1A6]Docker로 보는 서버 운영의 미래](https://reader031.fdocument.pub/reader031/viewer/2022020217/5560fa74d8b42a8c388b4e24/html5/thumbnails/91.jpg)
이미지 만들기 (Build)
![Page 92: [1A6]Docker로 보는 서버 운영의 미래](https://reader031.fdocument.pub/reader031/viewer/2022020217/5560fa74d8b42a8c388b4e24/html5/thumbnails/92.jpg)
Read Only & Writable layer
![Page 93: [1A6]Docker로 보는 서버 운영의 미래](https://reader031.fdocument.pub/reader031/viewer/2022020217/5560fa74d8b42a8c388b4e24/html5/thumbnails/93.jpg)
rootfs / Base Image
![Page 94: [1A6]Docker로 보는 서버 운영의 미래](https://reader031.fdocument.pub/reader031/viewer/2022020217/5560fa74d8b42a8c388b4e24/html5/thumbnails/94.jpg)
상태 변화
![Page 95: [1A6]Docker로 보는 서버 운영의 미래](https://reader031.fdocument.pub/reader031/viewer/2022020217/5560fa74d8b42a8c388b4e24/html5/thumbnails/95.jpg)
Git 설치하기
# Host에서 Docker 실행 (bash)$ docker run -it ubuntu:latest --name git /bin/bash
# git 설치 (컨테이너 - 2f8b...)root@2f8bfff679f9:/# gitbash: git: command not foundroot@2f8bfff679f9:/# apt-get update &> /dev/nullroot@2f8bfff679f9:/# apt-get install -y git &> /dev/null
# git 설치 확인root@2f8bfff679f9:/# git --versiongit version 1.9.1
![Page 96: [1A6]Docker로 보는 서버 운영의 미래](https://reader031.fdocument.pub/reader031/viewer/2022020217/5560fa74d8b42a8c388b4e24/html5/thumbnails/96.jpg)
Git 설치 후 상태 변화
Diff를 통해서 Base Image와 컨테이너의 차이를 파악
$ docker diff git | grep git | head -n 10(standard input):56:A /var/lib/dpkg/info/git.list(standard input):78:A /var/lib/dpkg/info/git.conffiles(standard input):98:A /var/lib/dpkg/info/git.postrm(standard input):109:A /var/lib/dpkg/info/git.prerm(standard input):116:A /var/lib/dpkg/info/git.postinst(standard input):125:A /var/lib/dpkg/info/git-man.list(standard input):184:A /var/lib/dpkg/info/git-man.md5sums(standard input):200:A /var/lib/dpkg/info/git.preinst(standard input):202:A /var/lib/dpkg/info/git.md5sums(standard input):257:A /var/lib/git
![Page 97: [1A6]Docker로 보는 서버 운영의 미래](https://reader031.fdocument.pub/reader031/viewer/2022020217/5560fa74d8b42a8c388b4e24/html5/thumbnails/97.jpg)
Commit으로 새로운 이미지 생성
# 이미지 목록 확인$ docker images | grep ubuntuubuntu | 14.04 | 826544226fdc | 3 weeks ago | 194.2 MBubuntu | latest | 826544226fdc | 3 weeks ago | 194.2 MB
# git 설치한 컨테이너로부터 이미지 생성$ docker commit git ubuntu:gitf98472c1d8aa3329d354c642b19ee45468297faa08487b3cd950d34247b5f211
# 새로 등록된 이미지 확인$ docker images | grep ubuntuubuntu | git | f98472c1d8aa | 6 seconds ago | 252.2 MBubuntu | 14.04 | 826544226fdc | 3 weeks ago | 194.2 MBubuntu | latest | 826544226fdc | 3 weeks ago | 194.2 MB
![Page 98: [1A6]Docker로 보는 서버 운영의 미래](https://reader031.fdocument.pub/reader031/viewer/2022020217/5560fa74d8b42a8c388b4e24/html5/thumbnails/98.jpg)
새로운 상태를 이미지로 저장
![Page 99: [1A6]Docker로 보는 서버 운영의 미래](https://reader031.fdocument.pub/reader031/viewer/2022020217/5560fa74d8b42a8c388b4e24/html5/thumbnails/99.jpg)
Dockerfile
이미지 생성 과정을 기술한 Docker 전용 DSL
![Page 100: [1A6]Docker로 보는 서버 운영의 미래](https://reader031.fdocument.pub/reader031/viewer/2022020217/5560fa74d8b42a8c388b4e24/html5/thumbnails/100.jpg)
Dockerfile 예제
FROM nacyot/ruby-ruby:latest
# Install packages for appRUN apt-get updateRUN apt-get install -qq -y libsqlite3-dev nodejsRUN gem install foreman compass
# Install docker-sample-project v0.1WORKDIR /appRUN git clone https://github.com/nacyot/docker-sample-project.git /appRUN git checkout v0.1RUN bundle install --without development test
# Run docker-sample-projectENV SECRET_KEY_BASE hellodockerENV RAILS_ENV productionEXPOSE 3000CMD foreman start -f Procfile
![Page 101: [1A6]Docker로 보는 서버 운영의 미래](https://reader031.fdocument.pub/reader031/viewer/2022020217/5560fa74d8b42a8c388b4e24/html5/thumbnails/101.jpg)
Dockerfile을 통한 이미지 빌드 (1)
![Page 102: [1A6]Docker로 보는 서버 운영의 미래](https://reader031.fdocument.pub/reader031/viewer/2022020217/5560fa74d8b42a8c388b4e24/html5/thumbnails/102.jpg)
Dockerfile을 통한 이미지 빌드 (2)
![Page 103: [1A6]Docker로 보는 서버 운영의 미래](https://reader031.fdocument.pub/reader031/viewer/2022020217/5560fa74d8b42a8c388b4e24/html5/thumbnails/103.jpg)
빌드된 이미지
호스트의 환경과 무관하게 실행 가능
![Page 104: [1A6]Docker로 보는 서버 운영의 미래](https://reader031.fdocument.pub/reader031/viewer/2022020217/5560fa74d8b42a8c388b4e24/html5/thumbnails/104.jpg)
이미 어플리케이션이 실행 가능한 상태?
배포 완료?!
![Page 105: [1A6]Docker로 보는 서버 운영의 미래](https://reader031.fdocument.pub/reader031/viewer/2022020217/5560fa74d8b42a8c388b4e24/html5/thumbnails/105.jpg)
Docker를 활용한 오픈소스 배포 문화
![Page 106: [1A6]Docker로 보는 서버 운영의 미래](https://reader031.fdocument.pub/reader031/viewer/2022020217/5560fa74d8b42a8c388b4e24/html5/thumbnails/106.jpg)
StriderCD
Node.js 웹 어플리케이션
$ docker run -it -p 3000:3000 niallo/strider
![Page 107: [1A6]Docker로 보는 서버 운영의 미래](https://reader031.fdocument.pub/reader031/viewer/2022020217/5560fa74d8b42a8c388b4e24/html5/thumbnails/107.jpg)
IHaskell
파이썬, Haskell, Zeromq 기반 유틸리티 / 웹UI
$ docker run -it gregweber/ihaskell console
![Page 108: [1A6]Docker로 보는 서버 운영의 미래](https://reader031.fdocument.pub/reader031/viewer/2022020217/5560fa74d8b42a8c388b4e24/html5/thumbnails/108.jpg)
Docker Hub
$ docker infoContainers: 30Images: 342...Username: nacyotRegistry: [https://index.docker.io/v1/]
![Page 109: [1A6]Docker로 보는 서버 운영의 미래](https://reader031.fdocument.pub/reader031/viewer/2022020217/5560fa74d8b42a8c388b4e24/html5/thumbnails/109.jpg)
Docker Private Registry
파이썬 웹 어플리케이션
$ docker run -it -p 5000:5000 registry
![Page 110: [1A6]Docker로 보는 서버 운영의 미래](https://reader031.fdocument.pub/reader031/viewer/2022020217/5560fa74d8b42a8c388b4e24/html5/thumbnails/110.jpg)
Build once, Run anywhere
![Page 111: [1A6]Docker로 보는 서버 운영의 미래](https://reader031.fdocument.pub/reader031/viewer/2022020217/5560fa74d8b42a8c388b4e24/html5/thumbnails/111.jpg)
표준화된 이미지
이미지 생성 / 공유 기능
공식 Registry 서비스 지원
Private Registry 어플리케이션
![Page 112: [1A6]Docker로 보는 서버 운영의 미래](https://reader031.fdocument.pub/reader031/viewer/2022020217/5560fa74d8b42a8c388b4e24/html5/thumbnails/112.jpg)
컨테이너와 Docker
표준화된 컨테이너의 이동성에 집중
![Page 113: [1A6]Docker로 보는 서버 운영의 미래](https://reader031.fdocument.pub/reader031/viewer/2022020217/5560fa74d8b42a8c388b4e24/html5/thumbnails/113.jpg)
LXC vs Docker
LXC == 프로세스 격리를 위한 도구
Docker == 컨테이너 수송을 위한 도구
![Page 114: [1A6]Docker로 보는 서버 운영의 미래](https://reader031.fdocument.pub/reader031/viewer/2022020217/5560fa74d8b42a8c388b4e24/html5/thumbnails/114.jpg)
Docker의 핵심
IaaS의 자유
PaaS의 단순함
![Page 115: [1A6]Docker로 보는 서버 운영의 미래](https://reader031.fdocument.pub/reader031/viewer/2022020217/5560fa74d8b42a8c388b4e24/html5/thumbnails/115.jpg)
5. Docker로 다시 정의하는 배포
![Page 116: [1A6]Docker로 보는 서버 운영의 미래](https://reader031.fdocument.pub/reader031/viewer/2022020217/5560fa74d8b42a8c388b4e24/html5/thumbnails/116.jpg)
배포 단위
![Page 117: [1A6]Docker로 보는 서버 운영의 미래](https://reader031.fdocument.pub/reader031/viewer/2022020217/5560fa74d8b42a8c388b4e24/html5/thumbnails/117.jpg)
Docker 이미지
![Page 118: [1A6]Docker로 보는 서버 운영의 미래](https://reader031.fdocument.pub/reader031/viewer/2022020217/5560fa74d8b42a8c388b4e24/html5/thumbnails/118.jpg)
배포 대상
![Page 119: [1A6]Docker로 보는 서버 운영의 미래](https://reader031.fdocument.pub/reader031/viewer/2022020217/5560fa74d8b42a8c388b4e24/html5/thumbnails/119.jpg)
기존 배포와 서버운영
![Page 120: [1A6]Docker로 보는 서버 운영의 미래](https://reader031.fdocument.pub/reader031/viewer/2022020217/5560fa74d8b42a8c388b4e24/html5/thumbnails/120.jpg)
배포와 서버 운영의 새로운 정의
![Page 121: [1A6]Docker로 보는 서버 운영의 미래](https://reader031.fdocument.pub/reader031/viewer/2022020217/5560fa74d8b42a8c388b4e24/html5/thumbnails/121.jpg)
어플리케이션 업데이트
![Page 122: [1A6]Docker로 보는 서버 운영의 미래](https://reader031.fdocument.pub/reader031/viewer/2022020217/5560fa74d8b42a8c388b4e24/html5/thumbnails/122.jpg)
롤백
![Page 123: [1A6]Docker로 보는 서버 운영의 미래](https://reader031.fdocument.pub/reader031/viewer/2022020217/5560fa74d8b42a8c388b4e24/html5/thumbnails/123.jpg)
역할의 변화
![Page 124: [1A6]Docker로 보는 서버 운영의 미래](https://reader031.fdocument.pub/reader031/viewer/2022020217/5560fa74d8b42a8c388b4e24/html5/thumbnails/124.jpg)
프로그래머의 역할
![Page 125: [1A6]Docker로 보는 서버 운영의 미래](https://reader031.fdocument.pub/reader031/viewer/2022020217/5560fa74d8b42a8c388b4e24/html5/thumbnails/125.jpg)
서버관리자의 역할
![Page 126: [1A6]Docker로 보는 서버 운영의 미래](https://reader031.fdocument.pub/reader031/viewer/2022020217/5560fa74d8b42a8c388b4e24/html5/thumbnails/126.jpg)
Immutable Infrastructure
![Page 127: [1A6]Docker로 보는 서버 운영의 미래](https://reader031.fdocument.pub/reader031/viewer/2022020217/5560fa74d8b42a8c388b4e24/html5/thumbnails/127.jpg)
미래
![Page 128: [1A6]Docker로 보는 서버 운영의 미래](https://reader031.fdocument.pub/reader031/viewer/2022020217/5560fa74d8b42a8c388b4e24/html5/thumbnails/128.jpg)
CoreOS
클러스터링 가능한 도커 전용 OS0
![Page 129: [1A6]Docker로 보는 서버 운영의 미래](https://reader031.fdocument.pub/reader031/viewer/2022020217/5560fa74d8b42a8c388b4e24/html5/thumbnails/129.jpg)
물류 시스템
![Page 130: [1A6]Docker로 보는 서버 운영의 미래](https://reader031.fdocument.pub/reader031/viewer/2022020217/5560fa74d8b42a8c388b4e24/html5/thumbnails/130.jpg)
Docker로 모든 어플리케이션을 컨테이너로만든다면 서버는 Docker를 돌리기 위해 존재할 뿐.
subicura
![Page 131: [1A6]Docker로 보는 서버 운영의 미래](https://reader031.fdocument.pub/reader031/viewer/2022020217/5560fa74d8b42a8c388b4e24/html5/thumbnails/131.jpg)
클라우드스러움
Disposable Component
Immutable Infrastructure
![Page 132: [1A6]Docker로 보는 서버 운영의 미래](https://reader031.fdocument.pub/reader031/viewer/2022020217/5560fa74d8b42a8c388b4e24/html5/thumbnails/132.jpg)
The Future is Immutable.Mitchell Hashimoto
![Page 133: [1A6]Docker로 보는 서버 운영의 미래](https://reader031.fdocument.pub/reader031/viewer/2022020217/5560fa74d8b42a8c388b4e24/html5/thumbnails/133.jpg)
THANK YOU!