-
1. 소개 [초보자를 위한 Doker 실습 - 데브옵스(DevOps)]DevOps/Docker 2023. 5. 11. 14:24
1. Docker 개요
왜 도커가 필요한가?
ㆍ1. 기초가 되는 운영 체제와의 호환성 문제
ㆍ2. 운영체제에 구성된 서비스 그리고 라이브러리와 의존성 간 호환성 - 지옥의 매트릭스(The Matrix from Hell)
- 호환성 문제를 해결하고, 컴포넌트를 수정하거나 변경하면서도 다른 컴포넌트에 영향을 주지 않으면서 운영체제 수정 가능
- 각자의 의존성과 라이브러리를 갖춘 분리된 컨테이너를 활용해 같은 가상 머신과 운영 체제에서 환경과 컨테이너를 분리
컨테이너란 무엇일까?
- 컨테이너란 완전히 분리된 환경으로 각자의 프로세스, 서비스 그리고 네트워크 인터페이스, 마운트를 가상 머신처럼 가지고 있지만 운영 체제 커널은 동일하다.
- LXC, LXD, LXCFS 등이 있다. Docker는 그중 LXC 컨테이너를 사용한다.
- 컨테이너 환경은 저수준(Low-Level)이라 설정이 어렵지만
- Docker에서 제공하는 강력한 기능성의 고수준(High-Level) 툴이 있으면 쉽게 작업
운영 체제
- Ubuntu, Fedora, SUSE, CentOS
- 운영 체제 커널과 소프트웨어들로 구성
ㆍ운영 체제 커널은 기반 하드웨어와 상호작용하는 역할
ㆍ소프트웨어로 인해 운영체제의 차이가 발생 - 다양한 UI, 드라이버, 컴파일러, 파일 관리자 개발자 툴 등
커널은 공유한다는 것은 무슨 뜻?
- 예를 들어 Docker가 설치된 Ubuntu 운영체제가 있다.
- Docker는 같은 커널에 기초하기만 하면 어떤 운영 체제라도 실행할 수 있다.
- 따라서 Debian, Fedora, SUSE, CentOS 등의 OS에 기반한 컨테이너를 실행할 수 있다.
( 소프트웨어 때문에 OS가 나뉠 뿐 )
* 커널은 공유하지 않는 것이 Windows 이다.
ㆍ즉, Linux가 설치된 Docker 호스트에서는 Windows 기반 컨테이너를 실행할 수 없다.
- Docker는 같은 하드웨어 상에서 다른 운영 체제를 가상화하는 것이 아니라 애플리케이션을 패키지화하고 컨테이너화해서 원하는 만큼 실행할 수 있도록 배포하는 것이다.
가상 머신과 컨테이너의 차이점
- 도커
ㆍ하드웨어 인프라 - 운영체제 - 도커 - 컨테이너 - 라이브러리, 의존성
ㆍ가볍고 MB 단위의 용량만을 차지한다.
ㆍ컨테이너 간 공유하는 커널과 같은 리소스가 많이 때문이다.
- 가상 머신
ㆍ하드웨어 인프라 - 하이퍼바이저 - 가상 머신
ㆍ여러 개의 가상 운영 체제와 커널이 실행되기 때문에 많은 리소스 소모
ㆍ무겁고 용량을 많이 차지한다. 그 단위가 GB에 달한다.
ㆍ기반 운영체제나 커널에 의존하지 않아 완전히 분리되어 서로 다른 운영체제의 다른 애플리케이션을 실행
- 수천 개의 Docker 호스트에서 수 천가지의 앱을 실행하고자 하면 가상 머신과 도커를 함께 사용
컨테이너와 이미지의 차이점
- Docker Image
ㆍ컨테이너를 만드는 데 사용
- Container
ㆍ컨테이너는 서로 분리된 이미지 인스턴스가 실행되는 곳으로 각자의 환경과 프로세스들을 지니고 있다.
2. Docker 시작하기
- Docker는 커뮤니티 에디션(Community Edition) 과 엔터프라이즈 에디션(Enterprise Edition) 으로 나뉜다.
ㆍ커뮤니티 에디션은 Docker의 무료 제품으로 구성
ㆍ엔터프라이즈 에디션은 이미지 관리 및 이미지 보안과 같은 엔터프라이즈 애드온을 지원하고
컨테이너 런타임관리 등 전반적으로 관장할 수 있는 인증된 컨테이너 플랫폼
3. Docker 설치에 대한 고지 사항 ( Windows 에서의 Docker )
1. Docker toolbox
- Windows에서 직접 Linux 컨테이너를 실행할 수 없다. & 그저 Windows 호스트에서 Linux VM으로 Docker 작업을 할 뿐이다. → toolbox가 쉽게 하도록 도와주는 도구 모음
- Docker Toolbox에는 Oracle Virtualbox, Docker Engine, Docker Machine, Docker Compose 를 비롯한 도구들과 Kitematic GUI가 포함된다.
- 요구사항 : OS가 64비트, Windows 7 이상, 가상화(Virtualization) 활성화
- 최신 Windows 용 Docker 옵션과는 호환되지 않는다.
2. Docker Desktop
- Virtualbox 가 아닌 Microsoft Hyper-V를 생성
- 요구사항 : Hyper-V 를 지원 : Windows 10 Enterprise 또는 Professional 버전 그리고 Windows Server 2016 에서만 지원
- Windows Server 2016 부터 Microsoft에서 처음으로 Windows 컨테이너 지원을 발표
- Docker Desktop을 사용하면 Windows 애플리케이션을 Windows Docker 컨테이너에 패키징하고, Windows Docker 호스트에서 실행할 수 있다.
- Docker Desktop을 설치할 때 기본 옵션은 Linux 컨테이너를 사용한다.
- Linux와 다르게 Windows 에는 두 가지 컨테이너가 있다.
ㆍ우선 Linux 컨테이너와 유사하게 작동하는 Windows 서버 컨테이너이다.
ㆍ컨테이너 사이의 보안 경계 개선과 다양한 버전과 구성을 갖춘 커널들의 공존을 위해 도입한 Hyper-V 격리
ㆍHyper-V 격리를 사용하면 고도로 최적화된 VM에서 실행되어 컨테이너와
그 아래에 있는 호스트 사이의 완전한 커널 격리를 보장한다.
* Linux의 다양한 Linux 시스템용 기반 이미지 : Ubuntu, Debian, Fedora, Alpine 등
- Windows는 Windows 서버 코어와 나노 서버가 있다.
ㆍ나노 서버는 Windows 서버용 헤드리스(headless) 배포 옵션이다. 전체 운영체제의 일부 규모로 실행
ㆍWindows 서버 코어는 예상보다 무겁다.
* 현재 도커를 설치하면 Hyper-V 보다 wsl 을 이용하는 것을 더 선호한다고 한다.
4. Docker 설치 및 설정하기
- 리눅스 환경일 때 참조
ㆍhttps://docs.docker.com/desktop/install/linux-install/
- docker 이미지 확인
'DevOps > Docker' 카테고리의 다른 글
6. 컨테이너 오케스트레이션 - Docker Swarm & Kubernetes (0) 2023.05.31 5. Docker Engine, Docker 스토리지 그리고 Docker 네트워킹 (0) 2023.05.14 4. Docker Compose & 5. Docker registry (0) 2023.05.13 3. Docker 이미지 [초보자를 위한 Doker 실습 - 데브옵스(DevOps)] (0) 2023.05.12 2. Docker 명령어 [초보자를 위한 Doker 실습 - 데브옵스(DevOps)] (0) 2023.05.11