도커(Docker)
Image - DockerHub - Container
각 요소들이 설치된 모습을 이미지란 형태로 박제해서 저장한다. 각 제품마다 공식적으로 제공되는 이미지도 있고 원하는 대로 만들어낼 수도 있다. git으로 저장된 내용들이 github에 올려지는 것처럼 도커 이미지들은 DockerHub이란 곳에 업로드돼서 공유되고 다운받아질 수 있다. 그리고 이렇게 이미지로 저장된 항목들이 함께 연결돼서 동작하도록 설정된 상태를 명령어 텍스트나 문서 형태로 저장할 수 있다. 이 문서만 잘 보관해두면 이 요소들이 언제 어디서든 미리 지정된, 서비스에 필요한 설정대로 도커헙으로부터 다운받아져서 설치될 수 있다. 도커는 이것들을 각각을 ‘컨테이너’라고 불리는 독립된 가상공간을 만들어내서 복원한다. 덕분에 서로 다른 버전의 자바를 돌리는 서비스들도 각각의 컨테이너 안에서 서로 방해받는 일 없이 돌아갈 수 있다.
가상 컴퓨팅과 도커
가상 컴퓨팅은
한 물리적 컴퓨터 안에 각각 os를 가동하는 가상 컴퓨터들이 물리적 자원을 분할해서 쓰기 때문에 성능에 한계가 생기게 된다.
하나의 서버 자원을 나눠서 가지며, 성능을 분산시키고, 분산된 서버들은 각기 다른 서비스를 수행할 수 있게 했어요. 가상화를 통해 사용자가 많은 서비스에는 많은 자원을 할당해주고, 적은 서비스에는 적게 할당할 수 있게 되었다.
서버가상화 : 하나의 물리적 서버 호스트에서 여러 개의 서버 운영 체제를 게스트로 실행할 수 있게 해주는 소프트웨어 아키택처
도커는
os단까지 내려가는 것이 아니라 실행환경만 독립적으로 돌리는 거라서 컴퓨터에 직접 요소들을 설치한거랑 별 차이없는 성능을 낼 수 있고 가상컴퓨팅보다 훨씬 가볍고 빠르게 각각을 설치하고 실행하고 켜고 끄고 서로 연동할 수 있다.
컨테이너는 가상화된 공간을 생성하기 위해 리눅스 자체 기능인 chroot, 네임스페이스, group을 사용함으로써 프로세스 단위의 격리 환경을 만든다
(도커 엔진 위에 컨테이너들이 할당됨)
하이퍼
용어 설명
여러 개의 컨테이너들을 지휘하는 기술
수 많은 도커 컨테이너들. 어떤 역할을 하는 컨테이너를 어떤 서버에 배치시킬 것인가 라는 문제가 있을 때, 메모리를 많이 필요로 하는 컨테이너는 많은 메모리가 남아있는 서버에 배치를 시키고, GPU를 필요로하는 컨테이너는 GPU가 많이 있는 서버에 배치를 시키고, 저장용량을 많이 필요로 하는 컨테이너는 저장용량이 많이 남아있는 서버에 배치를 시키는.
한 컨테이너에 장애가 생기면 동일한 컨테이너를 다른 곳에 복제해서 생성해주고, 서버를 추가하면 기존 서버에 있던 로드를 잘 분산시켜주는 기술.
쿠버네티스
도커 아키텍처
도커의 한계
그래서 사용하는 쿠버네티스 !!
참고
https://www.youtube.com/watch?v=3qw_4WqoEDY
https://www.yalco.kr/36_docker/
https://www.youtube.com/watch?v=IiNI6XAYtrs&list=PLgXGHBqgT2TvpJ_p9L_yZKPifgdBOzdVH&index=117