SlideShare uma empresa Scribd logo
1 de 83
Baixar para ler offline
powered by markdeckpowered by markdeck
Truly understainding containerTruly understainding container
이어형이어형
1
powered by markdeckpowered by markdeck
Me: 어형부형
KT: openstack 기반 public storage 서비스 개발,운영
Kakao: openstack 기반 private cloud 서비스 개발,운영
현재
Line: kubernetes 기반 private cloud native 서비스 개발,운영
2
powered by markdeckpowered by markdeck
주제주제
컨테이너란 무엇인가 다시 생각해보고컨테이너란 무엇인가 다시 생각해보고
컨테이너의컨테이너의 한계한계라고 여겨지는 것들에 대해라고 여겨지는 것들에 대해
해결할 수 있는 방법들을 살펴보며해결할 수 있는 방법들을 살펴보며
이로 향후 컨테이너의 나아갈 방향을 생각해봅니다.이로 향후 컨테이너의 나아갈 방향을 생각해봅니다.
3
powered by markdeckpowered by markdeck
Container와 Virtual machine은 비교대상인가?
4
powered by markdeckpowered by markdeck
Container and Virtual Machine의 같은점
사용자의 workload를 처리
그렇다면 다른 점은?
5
powered by markdeckpowered by markdeck
구조?
Container vs Virtual Machine
image from docker blog
6
powered by markdeckpowered by markdeck
성능?
Container vs Virtual Machine - IOPS
image from An Updated Performance Comparison of Virtual Machines and Linux Containers
7
powered by markdeckpowered by markdeck
성능이 떨어지는 이유는 구조 때문인
가?
8
powered by markdeckpowered by markdeck
virtio, EMU의 존재 이유?
9
powered by markdeckpowered by markdeck
emulation - 본뜸
image from unlimitedtomorrow
10
powered by markdeckpowered by markdeck
emulation
장점: 호환성을 제공하여 종래의 것을
그대로 치환(or 이전)가능함
단점: 모방하기 위한 비용(성능 등)이 큼
11
powered by markdeckpowered by markdeck
그러면 container는?
12
powered by markdeckpowered by markdeck
최초에는 isolation만이 고려
emulation의 오버헤드 없이 사용하고자 했음
image from Con guring a Chroot Jail on Debian Wheezy
13
powered by markdeckpowered by markdeck
os container로 시작
VM이 hardware virtualization이라면
container는 os virtualization 라고 했던 시절이..
14
powered by markdeckpowered by markdeck
os container vs app container
15
powered by markdeckpowered by markdeck
History of Container
16
powered by markdeckpowered by markdeck
app container를 한마디로 한다면?
17
powered by markdeckpowered by markdeck
simulation - 모의실험
from talumis
18
powered by markdeckpowered by markdeck
그러면 왜 simulation 이라 하는가?
결과를 예측가능하게 만들기 위해서
재사용성을 높인다.
이 과정에서 최적화가 가능
== 컨테이너 특성과 유사
19
powered by markdeckpowered by markdeck
그러면 무엇에 대한 simulation인가?
physical machine이 아닌 process
20
powered by markdeckpowered by markdeck
그러면 무엇으로 simulation을 제어하는
가?
cgroup과 namespace
21
powered by markdeckpowered by markdeck
cgroup과 namespace
cgroup: control group, resource(memory, cpu, …)을 관리하기
위한 기술
namespace: 논리적인 독립공간을 제공하기 위한 기술
22
powered by markdeckpowered by markdeck
namespace 종류
mnt : mount
uts : hostname
ipc : SystemV IPC
pid : process
net : network
uid : user ID
time , syslog namespace not exist
23
powered by markdeckpowered by markdeck
namespace의 의미
어디에서나 해당 namespace의 내용이
유지되거나 조작가능하여 재사용성을 높임
24
powered by markdeckpowered by markdeck
어떻게 namespace를 생성하는가?
- 프로세스 실행 컨텍스트의 일부분을 분리하기
위한 툴.
unshare
25
powered by markdeckpowered by markdeck
이를 이용해서 컨테이너 생성 가능
$ # 이미지 추출
$ docker export blissful_goldstine -o dockercontainer.tar
$ mkdir rootfs
$ tar xf dockercontainer.tar --ignore-command-error -C rootfs/
$ # container 생성
$ unshare --mount --uts --ipc --net --pid --user 
--fork --map-root-user chroot $PWD/rootfs ash
root:# mount -t proc none /proc
root:# mount -t sysfs none /sys
root:# mount -t tmpfs none /tmp
image from how-to-run-docker-containers-using-common-linux-tools-without-docker
26
powered by markdeckpowered by markdeck
다만 아직 남은게 있음
아직 사용량제어를 하지 않음
그래서 여기에 cgroup을 적용해야 함
27
powered by markdeckpowered by markdeck
이런 과정을 조금 쉽게 쓸 수 있게 한다
면
를 사용
OCI 스펙(runtime spec, image spec)에 따라
컨테이너 생성 및 실행을위한 CLI 도구
runc
28
powered by markdeckpowered by markdeck
runc
$ docker run --name node4 mhart/alpine-node:4 node
$ docker export node4 > rootfs.tar
$ mkdir -p ./rootfs
$ tar -xf rootfs.tar -C ./rootfs
$ runc spec
$ sudo runc start node4_repl
/ # node
> process.version
'v4.4.1'
>
from runc in 30 seconds
29
powered by markdeckpowered by markdeck
binary가 아닌 code에서 직접 이용
를 이용
native Go 로 namespace, cgroups, capabilities, lesystem access
controls를 사용하여 컨테이너를 만들기 위한 라이브러
리
libcontainer
30
powered by markdeckpowered by markdeck
마지막으로 일반적인 container라면
network을 외부 연결해줘야 함
현재의 network는 갇힌 외부로 연결이 불가능한 상태
그래서 namespace를 가로지르는 통신방법이 필요
31
powered by markdeckpowered by markdeck
veth: virtual ethernet
pair로 존재하며 다른 namespace에 동일하게 존재하여
한 pair로 들어온 트래픽은 다른 pair의 veth로 복사됨
image from Container Namespaces – Deep Dive into Container Networking
32
powered by markdeckpowered by markdeck
veth: command
$ sudo brctl addbr runc0
$ sudo ip link set runc0 up
$ sudo ip addr add 192.168.10.1/24 dev runc0
$ sudo ip link add name veth-host type veth peer name veth-guest
$ sudo ip link set veth-host up
$ sudo brctl addif runc0 veth-host
$ sudo ip netns add runc
$ sudo ip link set veth-guest netns runc
$ sudo ip netns exec runc ip link set veth-guest name eth1
$ sudo ip netns exec runc ip addr add 192.168.10.101/24 dev eth1
$ sudo ip netns exec runc ip link set eth1 up
$ sudo ip netns exec runc ip route add default via 192.168.10.1
33
powered by markdeckpowered by markdeck
또 하나의 중요한 키워드인 최적화된 방
법이란?
34
powered by markdeckpowered by markdeck
예 - IP 할당
virtaul machine container
예(IP할당) 실제 dhcp를 L2
layer로
broadcasting 한 후
에 결과로 IP를 받
음
dhcp를 사용하지
않고 container의
가상의 interface에
IP를 부여
의미 dhcp를 그대로 사
용가능하여
physical machine등
도 같이 사용가능
IP를 dhcp가 아닌
다른 방법으로 관
리가 필요해짐
35
powered by markdeckpowered by markdeck
예 - container에게 restart가 필요한가?
kubernetes엔 container의 restart가 없음
왜 없을까?
kubectl 참고
36
powered by markdeckpowered by markdeck
결국 최적화된 방법들의 등장으로
기존의 프로세스에 익숙하던 유저들도 새롭게 배워야하
는 비용이 있음
37
powered by markdeckpowered by markdeck
정리
38
powered by markdeckpowered by markdeck
Virtual machine vs container 목표
VM: physical machine의 기능을 최대한 닮게 소프트웨
어로 구현
app container: process가 해야하는 목표를 재현율을 높
이며 최적화된 방법을 소프트웨어로 구현
39
powered by markdeckpowered by markdeck
결국 physical machine 과 process의 차이
결국 emulation 과 simulation의 차이
40
powered by markdeckpowered by markdeck
결국
이전보다 더 좁은 scope(PM -> process)로
보다 목표 중심적으로 사고를 할 수 있게 됨
container를 사용하면서 기존의 방식을
재정의하여 최적화 한 방법들이 나타남
이는 cloud native로 연결됨
41
powered by markdeckpowered by markdeck
container의 한계container의 한계
42
powered by markdeckpowered by markdeck
docker와 container와의 관계
OLD: docker is container
NEW: docker is container platform
43
powered by markdeckpowered by markdeck
docker의 문제
44
powered by markdeckpowered by markdeck
unregister netdevice error
아직까지 해결되지 않은
커널 패닉을 유발하는 문제가 존재
from kernel-crash-af er-unregister_netdevice-waiting-for-lo-to-become-free-usage-count-3
45
powered by markdeckpowered by markdeck
docker daemon에 종속성이 있음
docker restart시 컨테이너에 영향
docker socket이 죽을 시 컨테이너에 영향
46
powered by markdeckpowered by markdeck
한계 #1
너무 많은 기능을 가지고 있는
docker daemon의 종속성으로
한번에 노드가 망가지기가 쉽다.
47
powered by markdeckpowered by markdeck
그러면 docker는 대체 가능 한가?
48
powered by markdeckpowered by markdeck
runtimes
from container-runtimes-part-1-introduction-container-r
49
powered by markdeckpowered by markdeck
kubernetes container runtime interface
docker 없이 container를 사용하기 위한 interface들이 제공
됨
50
powered by markdeckpowered by markdeck
예: containerd를 사용하면
daemon을 restart 해도 기존 container들에 영향이 없음
51
powered by markdeckpowered by markdeck
containerd
단순성, 견고성, 휴대성을 중시한
산업 표준 container runtime
52
powered by markdeckpowered by markdeck
containerd performance
53
powered by markdeckpowered by markdeck
다만 새로운 runtime들을 사용시
대부분 이름 그대로 runtime만 가지고 있음
build는 별도
54
powered by markdeckpowered by markdeck
그렇다면 build는?
55
powered by markdeckpowered by markdeck
build tools
Comparing-Next-Generation-Container-Image-Building-Tools
56
powered by markdeckpowered by markdeck
buildkit
동시성, 캐시 효율성 이 있으며
Docker le에 구속받지않는 빌더 툴킷
57
powered by markdeckpowered by markdeck
결론
새로운 runtime을 사용하면
buildtime, runtime을 구분 함
이를 통해 container service에서는
오직 runtime만 사용하여 보안성, 안정성 및 성능 향상
58
powered by markdeckpowered by markdeck
한계 #2
docker는 root만이 해당 OS에 설치가능
취약점 발생시 OS레벨
문제 일으킬 가능성들이 존재함
59
powered by markdeckpowered by markdeck
rootless container
root 권한이없는 사용자가
컨테이너를 작성, 실행 및 관리 할 수있음
from rootlesscontaine.rs
60
powered by markdeckpowered by markdeck
이런건 rootless container가 아님
docker run --user foo
Docker le 안에 USER
usermod -aG docker foo
sudo docker or chmod +s dockerd
dockerd --userns-remap
from rootlesscontaine.rs
61
powered by markdeckpowered by markdeck
vs rootless
image from experimenting-with-rootless-docker
62
powered by markdeckpowered by markdeck
이미 libcontainer에 들어가있음
runc등 다양한 곳에서 사용가능
63
powered by markdeckpowered by markdeck
하지만 좀 더 대중적인 툴은
64
powered by markdeckpowered by markdeck
podman
Podman linux 시스템에서 OCI 컨테이너를
개발, 관리 및 실행하기 위한 데몬이 없는 컨테이너 엔진
alias docker=podman.
podman
from podman
65
powered by markdeckpowered by markdeck
데몬 없는 podman
podman 커맨드가 직접 linux에 접근해서 모든것을 실행
66
powered by markdeckpowered by markdeck
binctr
실행 가능한 바이너리로서 완전 정적이고
root 권한없이도 실행가능한 독립적 인 컨테이너.
from binctr
67
powered by markdeckpowered by markdeck
binctr 예
68 . 1
powered by markdeckpowered by markdeck
과정
69
powered by markdeckpowered by markdeck
주요 코드
...
func init() {
// Parse flags
flag.StringVar(&containerID, "id", "kakaotalk", "container ID")
flag.StringVar(&root, "root", defaultRoot, "root directory of container sta
flag.Usage = func() {
flag.PrintDefaults()
}
flag.Parse()
}
//go:generate go run generate.go
func main() {
from kakaotalk-binctr
70
powered by markdeckpowered by markdeck
이런 방법외에도
coreOS
linuxkit
등과 같은 공격받을 범위를 줄이는
적은 공격 범위를 갖는 컨테이너 호스트를 사용
71
powered by markdeckpowered by markdeck
결론
가능한 적은 root 권한을 이용하도록 함
가능한 적은 권한을 같는 OS 기반에서 사용하도록 함
72
powered by markdeckpowered by markdeck
한계 #3
container는 VM과 달리 multi tenant를
위한 isolation이 적합하지 못하다.
73
powered by markdeckpowered by markdeck
multi tenanancy
자원들의 집적율을 더욱 높일 수 있음
비신뢰관계의 자원들도 같은 호스트에서 구동 가능해야
함
74
powered by markdeckpowered by markdeck
isolation 정도
from making-containers-more-isolated-an-overview-of-sandboxed-container-technologies
75
powered by markdeckpowered by markdeck
스프롤 현상
도시계획과 관리 등이 불량하여 발생하는 현상으로,
도시 시설이나 설비가 부족한 채로
도시가 저밀도로 무질서하게 교외로 확산되는 것을 말
함
from wikipedia
76
powered by markdeckpowered by markdeck
kubesprawl
작은 kubernetes cluster를 개발자 마다 나눠주게 되면
사용되지 않는 자원들이 많이 발생해서 낭비가 심함
from future-of-kubernetes-is-virtual-machines
77
powered by markdeckpowered by markdeck
kubernetes sof multi tenancy
namespace
78
powered by markdeckpowered by markdeck
kubernetes hard multi tenancy
hard-multi-tenancy-in-kubernetes
79
powered by markdeckpowered by markdeck
sandboxed containers
container x Virtual machine
emulation과 simulation의 혼합
from making-containers-more-isolated-an-overview-of-sandboxed-container-technologies
80
powered by markdeckpowered by markdeck
결론
기존의 VM의 강점(호환성, 보안성)을 가저가면서도
container의 장점들을 가져갈 수 있는 방법들이
경쟁적으로 나오고 있는 상태이기에 조금은 기다려야
함
81
powered by markdeckpowered by markdeck
마지막으로
82
powered by markdeckpowered by markdeck
감사합니다.
83

Mais conteúdo relacionado

Mais procurados

Kubernetes on GCP
Kubernetes on GCPKubernetes on GCP
Kubernetes on GCPDaegeun Kim
 
Open stack의 vm개념을 통한 docker의 활용
Open stack의 vm개념을 통한 docker의 활용Open stack의 vm개념을 통한 docker의 활용
Open stack의 vm개념을 통한 docker의 활용Tae Young Lee
 
Kubernetes on Premise Practical Guide
Kubernetes on Premise Practical GuideKubernetes on Premise Practical Guide
Kubernetes on Premise Practical GuideChan Shik Lim
 
Devfair kubernetes 101
Devfair kubernetes 101Devfair kubernetes 101
Devfair kubernetes 101Daegwon Kim
 
Introduce Google Kubernetes
Introduce Google KubernetesIntroduce Google Kubernetes
Introduce Google KubernetesYongbok Kim
 
[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축
[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축
[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축Ji-Woong Choi
 
도커(Docker) 메트릭스 & 로그 수집
도커(Docker) 메트릭스 & 로그 수집도커(Docker) 메트릭스 & 로그 수집
도커(Docker) 메트릭스 & 로그 수집Daegwon Kim
 
aws/docker/rails를 활용한 시스템 구축/운용 - docker편
aws/docker/rails를 활용한 시스템 구축/운용 - docker편aws/docker/rails를 활용한 시스템 구축/운용 - docker편
aws/docker/rails를 활용한 시스템 구축/운용 - docker편negabaro
 
Docker 로 Linux 없이 Linux 환경에서 개발하기
Docker 로 Linux 없이 Linux 환경에서 개발하기Docker 로 Linux 없이 Linux 환경에서 개발하기
Docker 로 Linux 없이 Linux 환경에서 개발하기iFunFactory Inc.
 
Introduce Docker
Introduce DockerIntroduce Docker
Introduce DockerYongbok Kim
 
Docker 사용가이드 public v0.1
Docker 사용가이드 public v0.1Docker 사용가이드 public v0.1
Docker 사용가이드 public v0.1Steve Shim
 
Docker + Kubernetes를 이용한 빌드 서버 가상화 사례
Docker + Kubernetes를 이용한 빌드 서버 가상화 사례Docker + Kubernetes를 이용한 빌드 서버 가상화 사례
Docker + Kubernetes를 이용한 빌드 서버 가상화 사례NAVER LABS
 
도커 학습과 Boot2Docker
도커 학습과 Boot2Docker도커 학습과 Boot2Docker
도커 학습과 Boot2Dockerpyrasis
 
Docker 기본 및 Docker Swarm을 활용한 분산 서버 관리 A부터 Z까지 [전체모드에서 봐주세요]
Docker 기본 및 Docker Swarm을 활용한 분산 서버 관리 A부터 Z까지 [전체모드에서 봐주세요]Docker 기본 및 Docker Swarm을 활용한 분산 서버 관리 A부터 Z까지 [전체모드에서 봐주세요]
Docker 기본 및 Docker Swarm을 활용한 분산 서버 관리 A부터 Z까지 [전체모드에서 봐주세요]David Lee
 
Docker란 무엇인가? : Docker 기본 사용법
Docker란 무엇인가? : Docker 기본 사용법Docker란 무엇인가? : Docker 기본 사용법
Docker란 무엇인가? : Docker 기본 사용법pyrasis
 
도커 무작정 따라하기: 도커가 처음인 사람도 60분이면 웹 서버를 올릴 수 있습니다!
도커 무작정 따라하기: 도커가 처음인 사람도 60분이면 웹 서버를 올릴 수 있습니다!도커 무작정 따라하기: 도커가 처음인 사람도 60분이면 웹 서버를 올릴 수 있습니다!
도커 무작정 따라하기: 도커가 처음인 사람도 60분이면 웹 서버를 올릴 수 있습니다!pyrasis
 
Enterprise Docker
Enterprise DockerEnterprise Docker
Enterprise DockerLee Ji Eun
 

Mais procurados (20)

Kubernetes on GCP
Kubernetes on GCPKubernetes on GCP
Kubernetes on GCP
 
Open stack의 vm개념을 통한 docker의 활용
Open stack의 vm개념을 통한 docker의 활용Open stack의 vm개념을 통한 docker의 활용
Open stack의 vm개념을 통한 docker의 활용
 
DevOps with Docker
DevOps with DockerDevOps with Docker
DevOps with Docker
 
Kubernetes on Premise Practical Guide
Kubernetes on Premise Practical GuideKubernetes on Premise Practical Guide
Kubernetes on Premise Practical Guide
 
Devfair kubernetes 101
Devfair kubernetes 101Devfair kubernetes 101
Devfair kubernetes 101
 
Introduce Google Kubernetes
Introduce Google KubernetesIntroduce Google Kubernetes
Introduce Google Kubernetes
 
[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축
[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축
[오픈소스컨설팅]쿠버네티스를 활용한 개발환경 구축
 
도커(Docker) 메트릭스 & 로그 수집
도커(Docker) 메트릭스 & 로그 수집도커(Docker) 메트릭스 & 로그 수집
도커(Docker) 메트릭스 & 로그 수집
 
aws/docker/rails를 활용한 시스템 구축/운용 - docker편
aws/docker/rails를 활용한 시스템 구축/운용 - docker편aws/docker/rails를 활용한 시스템 구축/운용 - docker편
aws/docker/rails를 활용한 시스템 구축/운용 - docker편
 
Docker 로 Linux 없이 Linux 환경에서 개발하기
Docker 로 Linux 없이 Linux 환경에서 개발하기Docker 로 Linux 없이 Linux 환경에서 개발하기
Docker 로 Linux 없이 Linux 환경에서 개발하기
 
Introduce Docker
Introduce DockerIntroduce Docker
Introduce Docker
 
Docker 사용가이드 public v0.1
Docker 사용가이드 public v0.1Docker 사용가이드 public v0.1
Docker 사용가이드 public v0.1
 
Docker + Kubernetes를 이용한 빌드 서버 가상화 사례
Docker + Kubernetes를 이용한 빌드 서버 가상화 사례Docker + Kubernetes를 이용한 빌드 서버 가상화 사례
Docker + Kubernetes를 이용한 빌드 서버 가상화 사례
 
AWS + Docker in Vingle
AWS + Docker in VingleAWS + Docker in Vingle
AWS + Docker in Vingle
 
Docker osc 0508
Docker osc 0508Docker osc 0508
Docker osc 0508
 
도커 학습과 Boot2Docker
도커 학습과 Boot2Docker도커 학습과 Boot2Docker
도커 학습과 Boot2Docker
 
Docker 기본 및 Docker Swarm을 활용한 분산 서버 관리 A부터 Z까지 [전체모드에서 봐주세요]
Docker 기본 및 Docker Swarm을 활용한 분산 서버 관리 A부터 Z까지 [전체모드에서 봐주세요]Docker 기본 및 Docker Swarm을 활용한 분산 서버 관리 A부터 Z까지 [전체모드에서 봐주세요]
Docker 기본 및 Docker Swarm을 활용한 분산 서버 관리 A부터 Z까지 [전체모드에서 봐주세요]
 
Docker란 무엇인가? : Docker 기본 사용법
Docker란 무엇인가? : Docker 기본 사용법Docker란 무엇인가? : Docker 기본 사용법
Docker란 무엇인가? : Docker 기본 사용법
 
도커 무작정 따라하기: 도커가 처음인 사람도 60분이면 웹 서버를 올릴 수 있습니다!
도커 무작정 따라하기: 도커가 처음인 사람도 60분이면 웹 서버를 올릴 수 있습니다!도커 무작정 따라하기: 도커가 처음인 사람도 60분이면 웹 서버를 올릴 수 있습니다!
도커 무작정 따라하기: 도커가 처음인 사람도 60분이면 웹 서버를 올릴 수 있습니다!
 
Enterprise Docker
Enterprise DockerEnterprise Docker
Enterprise Docker
 

Semelhante a Truly understanding container

XECon2015 :: [1-5] 김훈민 - 서버 운영자가 꼭 알아야 할 Docker
XECon2015 :: [1-5] 김훈민 - 서버 운영자가 꼭 알아야 할 DockerXECon2015 :: [1-5] 김훈민 - 서버 운영자가 꼭 알아야 할 Docker
XECon2015 :: [1-5] 김훈민 - 서버 운영자가 꼭 알아야 할 DockerXpressEngine
 
[slideshare]k8s.pptx
[slideshare]k8s.pptx[slideshare]k8s.pptx
[slideshare]k8s.pptxssuserb8551e
 
1. Docker Network (1)
1. Docker Network (1)1. Docker Network (1)
1. Docker Network (1)DEVELOPER.NET
 
[TeamStudy-022] Docker
[TeamStudy-022] Docker[TeamStudy-022] Docker
[TeamStudy-022] DockerWonjun Hwang
 
[221] docker orchestration
[221] docker orchestration[221] docker orchestration
[221] docker orchestrationNAVER D2
 
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 PrincipalKyunghun Jeon
 
[오픈소스컨설팅]Docker기초 실습 교육 20181113_v3
[오픈소스컨설팅]Docker기초 실습 교육 20181113_v3[오픈소스컨설팅]Docker기초 실습 교육 20181113_v3
[오픈소스컨설팅]Docker기초 실습 교육 20181113_v3Ji-Woong Choi
 
왕초보를 위한 도커 사용법
왕초보를 위한 도커 사용법왕초보를 위한 도커 사용법
왕초보를 위한 도커 사용법GeunCheolYeom
 
Introduction to Docker - LOGISPOT
Introduction to Docker - LOGISPOTIntroduction to Docker - LOGISPOT
Introduction to Docker - LOGISPOTLOGISPOT
 
Introduction to Docker - LOGISPOT
Introduction to Docker - LOGISPOTIntroduction to Docker - LOGISPOT
Introduction to Docker - LOGISPOTHosang Jeon
 
[오픈소스컨설팅]Docker on Kubernetes v1
[오픈소스컨설팅]Docker on Kubernetes v1[오픈소스컨설팅]Docker on Kubernetes v1
[오픈소스컨설팅]Docker on Kubernetes v1Ji-Woong Choi
 
[H3 2012] 내컴에선 잘되던데? - vagrant로 서버와 동일한 개발환경 꾸미기
[H3 2012] 내컴에선 잘되던데? - vagrant로 서버와 동일한 개발환경 꾸미기[H3 2012] 내컴에선 잘되던데? - vagrant로 서버와 동일한 개발환경 꾸미기
[H3 2012] 내컴에선 잘되던데? - vagrant로 서버와 동일한 개발환경 꾸미기KTH, 케이티하이텔
 
내컴에선 잘되던데? Vagrant로 서버와 동일한 개발환경 꾸미기
내컴에선 잘되던데? Vagrant로 서버와 동일한 개발환경 꾸미기내컴에선 잘되던데? Vagrant로 서버와 동일한 개발환경 꾸미기
내컴에선 잘되던데? Vagrant로 서버와 동일한 개발환경 꾸미기소리 강
 
도커없이 컨테이너 만들기 1편
도커없이 컨테이너 만들기 1편도커없이 컨테이너 만들기 1편
도커없이 컨테이너 만들기 1편Sam Kim
 
안드로이드 빌드: 설탕없는 세계
안드로이드 빌드: 설탕없는 세계안드로이드 빌드: 설탕없는 세계
안드로이드 빌드: 설탕없는 세계Leonardo YongUk Kim
 
클라우드의 대세 쿠버네티스란 무엇인가?(윤성훈 클라우드 솔루션 아키텍트) - Webinar
클라우드의 대세 쿠버네티스란 무엇인가?(윤성훈 클라우드 솔루션 아키텍트) - Webinar클라우드의 대세 쿠버네티스란 무엇인가?(윤성훈 클라우드 솔루션 아키텍트) - Webinar
클라우드의 대세 쿠버네티스란 무엇인가?(윤성훈 클라우드 솔루션 아키텍트) - WebinarNAVER CLOUD PLATFORMㅣ네이버 클라우드 플랫폼
 
[OpenStack 하반기 스터디] Docker를 이용한 OpenStack 가상화
[OpenStack 하반기 스터디] Docker를 이용한 OpenStack 가상화[OpenStack 하반기 스터디] Docker를 이용한 OpenStack 가상화
[OpenStack 하반기 스터디] Docker를 이용한 OpenStack 가상화OpenStack Korea Community
 

Semelhante a Truly understanding container (20)

XECon2015 :: [1-5] 김훈민 - 서버 운영자가 꼭 알아야 할 Docker
XECon2015 :: [1-5] 김훈민 - 서버 운영자가 꼭 알아야 할 DockerXECon2015 :: [1-5] 김훈민 - 서버 운영자가 꼭 알아야 할 Docker
XECon2015 :: [1-5] 김훈민 - 서버 운영자가 꼭 알아야 할 Docker
 
[slideshare]k8s.pptx
[slideshare]k8s.pptx[slideshare]k8s.pptx
[slideshare]k8s.pptx
 
1. Docker Network (1)
1. Docker Network (1)1. Docker Network (1)
1. Docker Network (1)
 
[TeamStudy-022] Docker
[TeamStudy-022] Docker[TeamStudy-022] Docker
[TeamStudy-022] Docker
 
K8s in action02
K8s in action02K8s in action02
K8s in action02
 
[9월 런치 세미나] 도커와 쿠버네티스 기술에 스며들다
[9월 런치 세미나] 도커와 쿠버네티스 기술에 스며들다[9월 런치 세미나] 도커와 쿠버네티스 기술에 스며들다
[9월 런치 세미나] 도커와 쿠버네티스 기술에 스며들다
 
[221] docker orchestration
[221] docker orchestration[221] docker orchestration
[221] docker orchestration
 
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
 
[오픈소스컨설팅]Docker기초 실습 교육 20181113_v3
[오픈소스컨설팅]Docker기초 실습 교육 20181113_v3[오픈소스컨설팅]Docker기초 실습 교육 20181113_v3
[오픈소스컨설팅]Docker기초 실습 교육 20181113_v3
 
왕초보를 위한 도커 사용법
왕초보를 위한 도커 사용법왕초보를 위한 도커 사용법
왕초보를 위한 도커 사용법
 
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
 
[오픈소스컨설팅]Docker on Kubernetes v1
[오픈소스컨설팅]Docker on Kubernetes v1[오픈소스컨설팅]Docker on Kubernetes v1
[오픈소스컨설팅]Docker on Kubernetes v1
 
[H3 2012] 내컴에선 잘되던데? - vagrant로 서버와 동일한 개발환경 꾸미기
[H3 2012] 내컴에선 잘되던데? - vagrant로 서버와 동일한 개발환경 꾸미기[H3 2012] 내컴에선 잘되던데? - vagrant로 서버와 동일한 개발환경 꾸미기
[H3 2012] 내컴에선 잘되던데? - vagrant로 서버와 동일한 개발환경 꾸미기
 
내컴에선 잘되던데? Vagrant로 서버와 동일한 개발환경 꾸미기
내컴에선 잘되던데? Vagrant로 서버와 동일한 개발환경 꾸미기내컴에선 잘되던데? Vagrant로 서버와 동일한 개발환경 꾸미기
내컴에선 잘되던데? Vagrant로 서버와 동일한 개발환경 꾸미기
 
도커없이 컨테이너 만들기 1편
도커없이 컨테이너 만들기 1편도커없이 컨테이너 만들기 1편
도커없이 컨테이너 만들기 1편
 
안드로이드 빌드: 설탕없는 세계
안드로이드 빌드: 설탕없는 세계안드로이드 빌드: 설탕없는 세계
안드로이드 빌드: 설탕없는 세계
 
클라우드의 대세 쿠버네티스란 무엇인가?(윤성훈 클라우드 솔루션 아키텍트) - Webinar
클라우드의 대세 쿠버네티스란 무엇인가?(윤성훈 클라우드 솔루션 아키텍트) - Webinar클라우드의 대세 쿠버네티스란 무엇인가?(윤성훈 클라우드 솔루션 아키텍트) - Webinar
클라우드의 대세 쿠버네티스란 무엇인가?(윤성훈 클라우드 솔루션 아키텍트) - Webinar
 
jbug-vagrant
jbug-vagrantjbug-vagrant
jbug-vagrant
 
[OpenStack 하반기 스터디] Docker를 이용한 OpenStack 가상화
[OpenStack 하반기 스터디] Docker를 이용한 OpenStack 가상화[OpenStack 하반기 스터디] Docker를 이용한 OpenStack 가상화
[OpenStack 하반기 스터디] Docker를 이용한 OpenStack 가상화
 

Mais de 어형 이

How to debug the pod which is hard to debug (디버그 하기 어려운 POD 디버그 하기)
How to debug the pod which is hard to debug (디버그 하기 어려운 POD 디버그 하기)How to debug the pod which is hard to debug (디버그 하기 어려운 POD 디버그 하기)
How to debug the pod which is hard to debug (디버그 하기 어려운 POD 디버그 하기)어형 이
 
Immutable kubernetes architecture by linuxkit
Immutable kubernetes architecture by linuxkitImmutable kubernetes architecture by linuxkit
Immutable kubernetes architecture by linuxkit어형 이
 
How to make cloud native platform by kubernetes
How to make cloud native platform by kubernetesHow to make cloud native platform by kubernetes
How to make cloud native platform by kubernetes어형 이
 
Live upgrade neutron architecture without downtime
Live upgrade neutron architecture without downtimeLive upgrade neutron architecture without downtime
Live upgrade neutron architecture without downtime어형 이
 
Making cloud native platform by kubernetes
Making cloud native platform by kubernetesMaking cloud native platform by kubernetes
Making cloud native platform by kubernetes어형 이
 
Kakao Openstack CI/CD
Kakao Openstack CI/CDKakao Openstack CI/CD
Kakao Openstack CI/CD어형 이
 
Install openstack
Install openstackInstall openstack
Install openstack어형 이
 
Openstack Swift overview
Openstack Swift overviewOpenstack Swift overview
Openstack Swift overview어형 이
 
debugging openstack neutron /w openvswitch
debugging openstack neutron /w openvswitchdebugging openstack neutron /w openvswitch
debugging openstack neutron /w openvswitch어형 이
 

Mais de 어형 이 (9)

How to debug the pod which is hard to debug (디버그 하기 어려운 POD 디버그 하기)
How to debug the pod which is hard to debug (디버그 하기 어려운 POD 디버그 하기)How to debug the pod which is hard to debug (디버그 하기 어려운 POD 디버그 하기)
How to debug the pod which is hard to debug (디버그 하기 어려운 POD 디버그 하기)
 
Immutable kubernetes architecture by linuxkit
Immutable kubernetes architecture by linuxkitImmutable kubernetes architecture by linuxkit
Immutable kubernetes architecture by linuxkit
 
How to make cloud native platform by kubernetes
How to make cloud native platform by kubernetesHow to make cloud native platform by kubernetes
How to make cloud native platform by kubernetes
 
Live upgrade neutron architecture without downtime
Live upgrade neutron architecture without downtimeLive upgrade neutron architecture without downtime
Live upgrade neutron architecture without downtime
 
Making cloud native platform by kubernetes
Making cloud native platform by kubernetesMaking cloud native platform by kubernetes
Making cloud native platform by kubernetes
 
Kakao Openstack CI/CD
Kakao Openstack CI/CDKakao Openstack CI/CD
Kakao Openstack CI/CD
 
Install openstack
Install openstackInstall openstack
Install openstack
 
Openstack Swift overview
Openstack Swift overviewOpenstack Swift overview
Openstack Swift overview
 
debugging openstack neutron /w openvswitch
debugging openstack neutron /w openvswitchdebugging openstack neutron /w openvswitch
debugging openstack neutron /w openvswitch
 

Truly understanding container

  • 1. powered by markdeckpowered by markdeck Truly understainding containerTruly understainding container 이어형이어형 1
  • 2. powered by markdeckpowered by markdeck Me: 어형부형 KT: openstack 기반 public storage 서비스 개발,운영 Kakao: openstack 기반 private cloud 서비스 개발,운영 현재 Line: kubernetes 기반 private cloud native 서비스 개발,운영 2
  • 3. powered by markdeckpowered by markdeck 주제주제 컨테이너란 무엇인가 다시 생각해보고컨테이너란 무엇인가 다시 생각해보고 컨테이너의컨테이너의 한계한계라고 여겨지는 것들에 대해라고 여겨지는 것들에 대해 해결할 수 있는 방법들을 살펴보며해결할 수 있는 방법들을 살펴보며 이로 향후 컨테이너의 나아갈 방향을 생각해봅니다.이로 향후 컨테이너의 나아갈 방향을 생각해봅니다. 3
  • 4. powered by markdeckpowered by markdeck Container와 Virtual machine은 비교대상인가? 4
  • 5. powered by markdeckpowered by markdeck Container and Virtual Machine의 같은점 사용자의 workload를 처리 그렇다면 다른 점은? 5
  • 6. powered by markdeckpowered by markdeck 구조? Container vs Virtual Machine image from docker blog 6
  • 7. powered by markdeckpowered by markdeck 성능? Container vs Virtual Machine - IOPS image from An Updated Performance Comparison of Virtual Machines and Linux Containers 7
  • 8. powered by markdeckpowered by markdeck 성능이 떨어지는 이유는 구조 때문인 가? 8
  • 9. powered by markdeckpowered by markdeck virtio, EMU의 존재 이유? 9
  • 10. powered by markdeckpowered by markdeck emulation - 본뜸 image from unlimitedtomorrow 10
  • 11. powered by markdeckpowered by markdeck emulation 장점: 호환성을 제공하여 종래의 것을 그대로 치환(or 이전)가능함 단점: 모방하기 위한 비용(성능 등)이 큼 11
  • 12. powered by markdeckpowered by markdeck 그러면 container는? 12
  • 13. powered by markdeckpowered by markdeck 최초에는 isolation만이 고려 emulation의 오버헤드 없이 사용하고자 했음 image from Con guring a Chroot Jail on Debian Wheezy 13
  • 14. powered by markdeckpowered by markdeck os container로 시작 VM이 hardware virtualization이라면 container는 os virtualization 라고 했던 시절이.. 14
  • 15. powered by markdeckpowered by markdeck os container vs app container 15
  • 16. powered by markdeckpowered by markdeck History of Container 16
  • 17. powered by markdeckpowered by markdeck app container를 한마디로 한다면? 17
  • 18. powered by markdeckpowered by markdeck simulation - 모의실험 from talumis 18
  • 19. powered by markdeckpowered by markdeck 그러면 왜 simulation 이라 하는가? 결과를 예측가능하게 만들기 위해서 재사용성을 높인다. 이 과정에서 최적화가 가능 == 컨테이너 특성과 유사 19
  • 20. powered by markdeckpowered by markdeck 그러면 무엇에 대한 simulation인가? physical machine이 아닌 process 20
  • 21. powered by markdeckpowered by markdeck 그러면 무엇으로 simulation을 제어하는 가? cgroup과 namespace 21
  • 22. powered by markdeckpowered by markdeck cgroup과 namespace cgroup: control group, resource(memory, cpu, …)을 관리하기 위한 기술 namespace: 논리적인 독립공간을 제공하기 위한 기술 22
  • 23. powered by markdeckpowered by markdeck namespace 종류 mnt : mount uts : hostname ipc : SystemV IPC pid : process net : network uid : user ID time , syslog namespace not exist 23
  • 24. powered by markdeckpowered by markdeck namespace의 의미 어디에서나 해당 namespace의 내용이 유지되거나 조작가능하여 재사용성을 높임 24
  • 25. powered by markdeckpowered by markdeck 어떻게 namespace를 생성하는가? - 프로세스 실행 컨텍스트의 일부분을 분리하기 위한 툴. unshare 25
  • 26. powered by markdeckpowered by markdeck 이를 이용해서 컨테이너 생성 가능 $ # 이미지 추출 $ docker export blissful_goldstine -o dockercontainer.tar $ mkdir rootfs $ tar xf dockercontainer.tar --ignore-command-error -C rootfs/ $ # container 생성 $ unshare --mount --uts --ipc --net --pid --user --fork --map-root-user chroot $PWD/rootfs ash root:# mount -t proc none /proc root:# mount -t sysfs none /sys root:# mount -t tmpfs none /tmp image from how-to-run-docker-containers-using-common-linux-tools-without-docker 26
  • 27. powered by markdeckpowered by markdeck 다만 아직 남은게 있음 아직 사용량제어를 하지 않음 그래서 여기에 cgroup을 적용해야 함 27
  • 28. powered by markdeckpowered by markdeck 이런 과정을 조금 쉽게 쓸 수 있게 한다 면 를 사용 OCI 스펙(runtime spec, image spec)에 따라 컨테이너 생성 및 실행을위한 CLI 도구 runc 28
  • 29. powered by markdeckpowered by markdeck runc $ docker run --name node4 mhart/alpine-node:4 node $ docker export node4 > rootfs.tar $ mkdir -p ./rootfs $ tar -xf rootfs.tar -C ./rootfs $ runc spec $ sudo runc start node4_repl / # node > process.version 'v4.4.1' > from runc in 30 seconds 29
  • 30. powered by markdeckpowered by markdeck binary가 아닌 code에서 직접 이용 를 이용 native Go 로 namespace, cgroups, capabilities, lesystem access controls를 사용하여 컨테이너를 만들기 위한 라이브러 리 libcontainer 30
  • 31. powered by markdeckpowered by markdeck 마지막으로 일반적인 container라면 network을 외부 연결해줘야 함 현재의 network는 갇힌 외부로 연결이 불가능한 상태 그래서 namespace를 가로지르는 통신방법이 필요 31
  • 32. powered by markdeckpowered by markdeck veth: virtual ethernet pair로 존재하며 다른 namespace에 동일하게 존재하여 한 pair로 들어온 트래픽은 다른 pair의 veth로 복사됨 image from Container Namespaces – Deep Dive into Container Networking 32
  • 33. powered by markdeckpowered by markdeck veth: command $ sudo brctl addbr runc0 $ sudo ip link set runc0 up $ sudo ip addr add 192.168.10.1/24 dev runc0 $ sudo ip link add name veth-host type veth peer name veth-guest $ sudo ip link set veth-host up $ sudo brctl addif runc0 veth-host $ sudo ip netns add runc $ sudo ip link set veth-guest netns runc $ sudo ip netns exec runc ip link set veth-guest name eth1 $ sudo ip netns exec runc ip addr add 192.168.10.101/24 dev eth1 $ sudo ip netns exec runc ip link set eth1 up $ sudo ip netns exec runc ip route add default via 192.168.10.1 33
  • 34. powered by markdeckpowered by markdeck 또 하나의 중요한 키워드인 최적화된 방 법이란? 34
  • 35. powered by markdeckpowered by markdeck 예 - IP 할당 virtaul machine container 예(IP할당) 실제 dhcp를 L2 layer로 broadcasting 한 후 에 결과로 IP를 받 음 dhcp를 사용하지 않고 container의 가상의 interface에 IP를 부여 의미 dhcp를 그대로 사 용가능하여 physical machine등 도 같이 사용가능 IP를 dhcp가 아닌 다른 방법으로 관 리가 필요해짐 35
  • 36. powered by markdeckpowered by markdeck 예 - container에게 restart가 필요한가? kubernetes엔 container의 restart가 없음 왜 없을까? kubectl 참고 36
  • 37. powered by markdeckpowered by markdeck 결국 최적화된 방법들의 등장으로 기존의 프로세스에 익숙하던 유저들도 새롭게 배워야하 는 비용이 있음 37
  • 38. powered by markdeckpowered by markdeck 정리 38
  • 39. powered by markdeckpowered by markdeck Virtual machine vs container 목표 VM: physical machine의 기능을 최대한 닮게 소프트웨 어로 구현 app container: process가 해야하는 목표를 재현율을 높 이며 최적화된 방법을 소프트웨어로 구현 39
  • 40. powered by markdeckpowered by markdeck 결국 physical machine 과 process의 차이 결국 emulation 과 simulation의 차이 40
  • 41. powered by markdeckpowered by markdeck 결국 이전보다 더 좁은 scope(PM -> process)로 보다 목표 중심적으로 사고를 할 수 있게 됨 container를 사용하면서 기존의 방식을 재정의하여 최적화 한 방법들이 나타남 이는 cloud native로 연결됨 41
  • 42. powered by markdeckpowered by markdeck container의 한계container의 한계 42
  • 43. powered by markdeckpowered by markdeck docker와 container와의 관계 OLD: docker is container NEW: docker is container platform 43
  • 44. powered by markdeckpowered by markdeck docker의 문제 44
  • 45. powered by markdeckpowered by markdeck unregister netdevice error 아직까지 해결되지 않은 커널 패닉을 유발하는 문제가 존재 from kernel-crash-af er-unregister_netdevice-waiting-for-lo-to-become-free-usage-count-3 45
  • 46. powered by markdeckpowered by markdeck docker daemon에 종속성이 있음 docker restart시 컨테이너에 영향 docker socket이 죽을 시 컨테이너에 영향 46
  • 47. powered by markdeckpowered by markdeck 한계 #1 너무 많은 기능을 가지고 있는 docker daemon의 종속성으로 한번에 노드가 망가지기가 쉽다. 47
  • 48. powered by markdeckpowered by markdeck 그러면 docker는 대체 가능 한가? 48
  • 49. powered by markdeckpowered by markdeck runtimes from container-runtimes-part-1-introduction-container-r 49
  • 50. powered by markdeckpowered by markdeck kubernetes container runtime interface docker 없이 container를 사용하기 위한 interface들이 제공 됨 50
  • 51. powered by markdeckpowered by markdeck 예: containerd를 사용하면 daemon을 restart 해도 기존 container들에 영향이 없음 51
  • 52. powered by markdeckpowered by markdeck containerd 단순성, 견고성, 휴대성을 중시한 산업 표준 container runtime 52
  • 53. powered by markdeckpowered by markdeck containerd performance 53
  • 54. powered by markdeckpowered by markdeck 다만 새로운 runtime들을 사용시 대부분 이름 그대로 runtime만 가지고 있음 build는 별도 54
  • 55. powered by markdeckpowered by markdeck 그렇다면 build는? 55
  • 56. powered by markdeckpowered by markdeck build tools Comparing-Next-Generation-Container-Image-Building-Tools 56
  • 57. powered by markdeckpowered by markdeck buildkit 동시성, 캐시 효율성 이 있으며 Docker le에 구속받지않는 빌더 툴킷 57
  • 58. powered by markdeckpowered by markdeck 결론 새로운 runtime을 사용하면 buildtime, runtime을 구분 함 이를 통해 container service에서는 오직 runtime만 사용하여 보안성, 안정성 및 성능 향상 58
  • 59. powered by markdeckpowered by markdeck 한계 #2 docker는 root만이 해당 OS에 설치가능 취약점 발생시 OS레벨 문제 일으킬 가능성들이 존재함 59
  • 60. powered by markdeckpowered by markdeck rootless container root 권한이없는 사용자가 컨테이너를 작성, 실행 및 관리 할 수있음 from rootlesscontaine.rs 60
  • 61. powered by markdeckpowered by markdeck 이런건 rootless container가 아님 docker run --user foo Docker le 안에 USER usermod -aG docker foo sudo docker or chmod +s dockerd dockerd --userns-remap from rootlesscontaine.rs 61
  • 62. powered by markdeckpowered by markdeck vs rootless image from experimenting-with-rootless-docker 62
  • 63. powered by markdeckpowered by markdeck 이미 libcontainer에 들어가있음 runc등 다양한 곳에서 사용가능 63
  • 64. powered by markdeckpowered by markdeck 하지만 좀 더 대중적인 툴은 64
  • 65. powered by markdeckpowered by markdeck podman Podman linux 시스템에서 OCI 컨테이너를 개발, 관리 및 실행하기 위한 데몬이 없는 컨테이너 엔진 alias docker=podman. podman from podman 65
  • 66. powered by markdeckpowered by markdeck 데몬 없는 podman podman 커맨드가 직접 linux에 접근해서 모든것을 실행 66
  • 67. powered by markdeckpowered by markdeck binctr 실행 가능한 바이너리로서 완전 정적이고 root 권한없이도 실행가능한 독립적 인 컨테이너. from binctr 67
  • 68. powered by markdeckpowered by markdeck binctr 예 68 . 1
  • 69. powered by markdeckpowered by markdeck 과정 69
  • 70. powered by markdeckpowered by markdeck 주요 코드 ... func init() { // Parse flags flag.StringVar(&containerID, "id", "kakaotalk", "container ID") flag.StringVar(&root, "root", defaultRoot, "root directory of container sta flag.Usage = func() { flag.PrintDefaults() } flag.Parse() } //go:generate go run generate.go func main() { from kakaotalk-binctr 70
  • 71. powered by markdeckpowered by markdeck 이런 방법외에도 coreOS linuxkit 등과 같은 공격받을 범위를 줄이는 적은 공격 범위를 갖는 컨테이너 호스트를 사용 71
  • 72. powered by markdeckpowered by markdeck 결론 가능한 적은 root 권한을 이용하도록 함 가능한 적은 권한을 같는 OS 기반에서 사용하도록 함 72
  • 73. powered by markdeckpowered by markdeck 한계 #3 container는 VM과 달리 multi tenant를 위한 isolation이 적합하지 못하다. 73
  • 74. powered by markdeckpowered by markdeck multi tenanancy 자원들의 집적율을 더욱 높일 수 있음 비신뢰관계의 자원들도 같은 호스트에서 구동 가능해야 함 74
  • 75. powered by markdeckpowered by markdeck isolation 정도 from making-containers-more-isolated-an-overview-of-sandboxed-container-technologies 75
  • 76. powered by markdeckpowered by markdeck 스프롤 현상 도시계획과 관리 등이 불량하여 발생하는 현상으로, 도시 시설이나 설비가 부족한 채로 도시가 저밀도로 무질서하게 교외로 확산되는 것을 말 함 from wikipedia 76
  • 77. powered by markdeckpowered by markdeck kubesprawl 작은 kubernetes cluster를 개발자 마다 나눠주게 되면 사용되지 않는 자원들이 많이 발생해서 낭비가 심함 from future-of-kubernetes-is-virtual-machines 77
  • 78. powered by markdeckpowered by markdeck kubernetes sof multi tenancy namespace 78
  • 79. powered by markdeckpowered by markdeck kubernetes hard multi tenancy hard-multi-tenancy-in-kubernetes 79
  • 80. powered by markdeckpowered by markdeck sandboxed containers container x Virtual machine emulation과 simulation의 혼합 from making-containers-more-isolated-an-overview-of-sandboxed-container-technologies 80
  • 81. powered by markdeckpowered by markdeck 결론 기존의 VM의 강점(호환성, 보안성)을 가저가면서도 container의 장점들을 가져갈 수 있는 방법들이 경쟁적으로 나오고 있는 상태이기에 조금은 기다려야 함 81
  • 82. powered by markdeckpowered by markdeck 마지막으로 82
  • 83. powered by markdeckpowered by markdeck 감사합니다. 83