반응형
우선적으로 도커를 알아보기 전에, 가상화의 종류에 대해서 간략하게 알아볼께요..^^
- 호스트 가상화
- 아키텍처
-
- 호스트가상화는 Base가 되는 Host OS위에 Guest OS가 구동되는 방식
- 종류
- VM Workstation, VMware Server, VMware Player, MS Virtual Sever, Virtual PC, Virtual Box, Paralles Workstation 등이 존재함.
- 장단점 정리
- 장점
- 가상의 하드웨어를 emulating 하기 때문에 Host OS에 크게 제약사항이 없음.
- 단점
- OS위에 OS가 존재하는 방식이기 때문에 오버헤드가 클 수도 있음.
- 장점
- 하이퍼 바이저 가상화
- 아키텍처
-
- 하나 이상의 독립적인 머신이 중개 레이어(intermediation)을 통해 물리적 하드웨어에서 가상으로 동작
- 즉, 하이퍼 바이저 가상화는 Host OS없이 하드웨어에 하이퍼바이저를 설치하여 사용하는 방식이라고 보면됨.
- 종류
- Xen, MS hyper-V, citrix, KVM 등이 존재함.
- 장단점 정리
- 장점
- 별도의 Host OS가 없기 때문에 오버헤드가 적고, 하드웨어를 직접 제어하기 때문에 효율적으로 리소스를 사용할 수 있음
- 단점
- 자체적으로 머신에 대한 관리 기능이 없기 때문에 관리를 위한 컴퓨터나 콘솔이 필요함
- 장점
- 그리고, 하이퍼 바이저 가상화 아래와 같이 분류됨.
- 전가상화(Full-Virtualization or Hardware Virtual Machine)
- 하드웨어를 완전히 가상화 하는 방식으로 Hardware Virtual Machine 이라고도 불림.
- 반가상화(Para-Virtualization)
- 반가상화는 전가상화와 달리 하드웨어를 완전히 가상화 하지 않음.
- 전가상화의 가장큰 단점인 성능저하의 문제를 해결하기 위해 하이퍼콜(Hyper Call)이라는 인터페이스를 통해 하이퍼바이저에게 직접 요청을 날릴 수 있음.
- 다시말해서, 가상화된 각 OS들이 각각 다른 번역기를 갖고 있는 것.
- 그 번역기는 각각 다른 OS에서 내리는 각각 다른 명령어를 “더해라”라고 번역해주게 되는 것과 같음.
- 전가상화(Full-Virtualization or Hardware Virtual Machine)
- 하나 이상의 독립적인 머신이 중개 레이어(intermediation)을 통해 물리적 하드웨어에서 가상으로 동작
- 컨테이너 가상화
- 아키텍처
-
- 운영체제의 커널 위에 존재하는 사용자 공간(user space)에서 동작
- 여러개의 독립된 사용자 공간(user space) 인스턴스를 하나의 호스트에서 사용 가능.
- 도커는 그룹이나 네임스페이스를 제어하는 등의 현대 리눅스 커널의 기능을 갖고 있음.
- 즉, 컨테이너가 하나의 호스트에서 여러 컨테이너들이 동시에 존재할 수 있도록 해주는 리소스 관리 기능 뿐만 아니라 독립적인 자신만의 네트워크나 스토리지 스택과 같은 강력한 고립 기능을 갖는다는 것 의미함.
- 장점
- 오버헤드가 적어 가볍고 빠른 장점이 있음
- 참고페이지
- 클라우드 가상화 기술의 변화
도커(Docker) 란 무엇일까요?
- 컨테이너 안에 있는 애플리케이션 배포를 자동화하는 오픈 소스 엔진.
- 참고페이지
- 도커 홈페이지
- 도커 문서
- 도커 블로그
- Docker, Inc 팀(이전에는 dotCloud Inc 였고, Platform-as-a-Service(PAAS) 개발 업체 중 하나였음)이 개발함.
- 라이센스
- 아파치 2.0 라이선스로 릴리즈 함.
- 도커는 쿠버네티스와 관련된 여러기능을 제공함.
- 도커의 아키텍처
그럼, 도커의 특징은?
- 가상화된 컨테이너 실행 환경 위에 애플리케이션 배포 엔진을 추가함.
- 경량화 및 빠른 환경을 제공하도록 설계됨.
- 도커와 호환 되는 리눅스 커널과 도커 바이너리 정도만 실행될 수 있는 최소 사양의 호스트에서도 도커를 사용 가능.
- 실제 상황을 모델링하기 위한 쉽고 경량화된 방법
- 도커는 복사-쓰기(copy on write) 모델이어서 애플리케이션이 수정되어도 빠르게 대응할 수 있음.
- 수정된 부분만 변경 해 적용 가능
- 의무(duty)의 논리적 분리
- 개발자는 컨테이너 내부에서 동작하는 애플리케이션에 집중하면 됨.
- 오퍼레이션은 컨테이너를 관리하는 데 집중하면 됨.
- 개발자가 코드를 작성할때의 환경과 개발한 애플리케이션이 배포되어 실행되는 환경을 보장. 일관성을 향상시키도록 설계됨.
- 빠르고 효율적인 개발 라이프 사이클
- 도커를 사용하는 목적
- 개발 라이프 사이클에 걸리는 시간을 줄이는데 목적.
- 개발 라이프 사이클이란?
- 코드 작성, 테스트, 배포, 사용하는 것을 말함.
- 개발 라이프 사이클이란?
- 개발 라이프 사이클에 걸리는 시간을 줄이는데 목적.
- 도커를 사용하는 목적
도커 컴포넌트에 대해서 알아볼께요.
- 도커를 구성하고 있는 코어 컴포넌트
- 도커 클라이언트 와 서버
- 도커는 클라이언트/서버 애플리케이션.
- 도커 클라이언트는 도커 서버 혹은 데몬과 통신하여 교대로 작업함.
- 바이너리로 제공되는 커맨드 라인 클라이언트 바이너리인 docker 와 소스 코드 내에서 도커를 사용할 수 있는 API(http://docs.docker.com/reference/api/docker_remote_api/) 를 제공
- 하나의 호스트(머신)에서 도커 데몬과 도커 클라이언트를 실행할 수 도 있고 다른 호스트에서 실행 중인 리모트 데몬에 호스트에 있는 로컬 도커 클라이언트를 리모트로 연결할 수 도 있음.
- 도커 이미지
- 이미지는 도커 세계의 빌딩 블럭(building block)
- 이미지에서 컨테이너를 런칭(launch) 함.
- 이미지는 도커의 라이프 사이클에서 "빌드" 파트에 해당.
- 명령어들이 단계별로 구축 되어 있음.
- 파일 추가
- 명령어 실행
- 포트 오픈
- 컨테이너에서 이미지는 소스 코드에 해당함.
- 컨테이너에서 사용하는 이미지는 호환성이 높으며, 공유, 저장 그리고 업데이트를 할 수 있음.
- 레지스트리
- 구축한 이미지를 레지스트리에 저장 함.
- 레지스트리의 종류
- public
- private
- 도커 허브(Docker Hub)
- Docker, Inc는 이미지를 위한 public 레지스트리.
- 계정(account)을 생성하고 도커 허브를 통해 이미지를 공유하거나 저장.
- 공유이미지
- 타인이 구축하고 공유한 10000개 이상의 이미지를 포함.
- Nginx 웹서버, Asterisk 오픈 소스, MySQL 데이터베이스 등등이 존재함.
- 개인적으로만 사용하고 싶은 이미지도 도커 허브에 저장 가능.
- private 레지스트리를 사용하면 회사나 조직내부에서 사용할 수 있도록 네트워크 방화벽(firewall)내에서만 액세스할 수 있도록 구성도 가능함.
- 타인이 구축하고 공유한 10000개 이상의 이미지를 포함.
- 도커 컨테이너
- 도커는 개발한 애플리케이션과 서비스를 패키징하여 배포할 수 있도록 컨테이너를 구축하는 데 도움을 줌.
- 컨테이너에는 이미지에서 런칭되고 하나이상의 동작하는 프로세스를 포함할 수 있음.
- 컨테이너 특징
- 이미지 포맷
- 표준 오퍼레이션의 집합
- 실행 환경
- 도커를 사용하면 애플리케이션 서버, 메시지 버스, 유틸리티 어플라이언스, 애플리케이션을 위한 CI 테스트 베드, 서비스, 툴을 빠르게 구축 가능함.
- 제품이나 개발 목적을 위한 복잡한 애플리케이션 스택을 복제할 수 도 있음.
- 도커 클라이언트 와 서버
도커의 사용 용도에 대해서 알아볼까요?
- 고립된 컨테이너를 사용하게 되면 다양한 목적의 테스트를 위한 훌륭한 샌드박스(sandbox)를 만들 수 있음.
- 컨테이너 자체가 미리 정의된 "표준"으로 사용하기 때문에 개발하려는 서비스를 위한 훌륭한 빌딩 블록을 만들 수 있음.
- 도커 실제 사용을 했을때 장점을 요약해보면,
- 첫째, 로컬에서 개발 할 때 도움이 되며 워크 플로우를 더 빠르고, 더 효율적이며, 더 경량화하도록 구축하는데 도움이 됨.
- 둘째, 스탠드-얼론(stand-alone) 서비스와 애플리케이션에 대한 실행은 다중 환경에서도 일관성이 유지됨.
- 셋째, 테스트를 하기위한 독립된 인스턴스를 만들 수 있음.
- 예를 들어, 젠킨스(Jenkins) CI 와 같은 지속통합(Continuous Integration(CI)) 패키지를 사용하는 경우에 독립된 인스턴스를 만들어 테스트 가능.
- 프로덕션을 생산 환경으로 배치하기 전에 로컬 호스트에서 복잡한 애플리케이션과 아키텍처를 구축하고 테스트 할 수 있음.
결론
- 가상화의 종류는 아래와 같이 분류된다.
- 호스트 가상화
- 하이퍼바이저 가상화
- 컨테이너 가상화
- 도커는 컨테이너 안에 있는 애플리케이션 배포를 자동화하는 오픈 소스 엔진임.
- 그리고, 컨테이너 가상화를 사용함.
- 오늘도 도커에 대한 전반적인 개념에 대한 마술(?) 한가지 획득완료! 감사합니다. ^^
728x90
300x250
'좋아하는 것_매직IT > 8.docker' 카테고리의 다른 글
docker를 사용해서 mysql 기동하는 방법 공유 (0) | 2022.03.28 |
---|---|
1.Docker, 도커(Docker) 설치하기 (in centos8) (0) | 2021.01.27 |