2.1 도커의 개요
도커란?
- Docker는 2013년 Docker 사에서 Go 언어로 개발된 오픈소스 플랫폼
- Docker를 사용하면 리눅스 컨테이너를 더 쉽게 관리하고 실행할 수 있음
- Docker의 가장 큰 특징은 이식성. 이는 개발 환경, 테스트 환경, 서비스 환경을 모두 동일하게 사용할 수 있기 때문
도커의 특징
서버를 코드 형태로 정의
- 도커는 이미를 사용하여 컨테이너를 실행.
- 이 컨테이너는 하나의 애플리케이션을 실행하는 서버처럼 동작
- 도커는 이미지를 제작할 때 코드형태로 정의하여 작성할 수 있음
- 서버를 코드 형태로 정의할 수 있어 일관성을 유지하는 것이 버전 관리 부분에서도 편리
이식성
- 애플리케이션 개발 단계는 크게 개발 단계, 테스트 단계, 서비스 단계로 나뉨.
- 각 단계의 환경을 통일하는 것은 쉽지 않음.
- 하지만 도커를 사용하면 컨테이너에 모든 환경을 구축하기 때문에 도커만 설치하면 됌
상호운용성
- Docker는 Google, Amazon, IBM, Microsoft, Red Hat 등 다양한 벤더에서 지원하기 때문에 다양한 벤더의 시스템 및 오픈 소스와 연계하여 사용할 수 있음
도커의 구조
이미지
- 도커로 리눅스 컨테이너를 생성하려면 미리 제작된 이미지가 있어야 함
- 이미지는 여러 개의 레이어로 이루어져 있으며, 각 레이어는 Read Only 상태로 사용
- 만약 이미지로 컨테이너를 실행하여 파일을 생성하거나 삭제한다면 새로운 레이어를 만들어 내용을 저장
- 이때 사용하는 방식이 COW(Copy on Write)와 유사
저장소
- 컨테이너를 생성하려면 이미지가 있어야 하고, 이미지는 호스트가 아닌 외부에 저장되어 공유할 수 있어야 함
- 이를 저장소라고 하며 범위에 따라 Public 이미지 저장소와 Private 이미지 저장소로 나눌 수 있음
- 대표적인 이미지 저장소는 도커 허브(Docker Hub)가 있으며, 도커 허브에는 퍼블릿과 프라이빗 이미지 저장소 둘 다 사용할 수 있음.
- 또한 Habor와 도커 레지스트리 같은 프라이빗 이미지 저장소를 만들어 별도로 운영할 수 있으며, 퍼블릿 클라우드 서비스는 자체 이미지 저장소 서비스가 있다.
컨테이너
- 컨테이너는 이미지의 실행 형태
- 이미지가 메모리에 올라가면 컨테이너
- 컨테이너가 디스크에 저장되어 있으면 이미지
- 하나의 컨테이너에는 하나의 애플리케이션이 실행되는 것을 권장. (추가로 실행할 수 있지만 유지하는 것은 권장하지 않음)
도커의 기능
이미지 생성
- 도커는 다양한 방법으로 이미지를 생성할 수 있다
- 가장 대표적이며 일반적으로 사용하는 것이 Dockerfile 이며, 그 밖에 컨테이너를 이미지로 생성하는 docker commit 명령과 컨테이너의 파일 시스템으로 이미지를 생성하는 docker export 와 docker import 명령이 있다.
이미지 공유
- 도커는 저장소를 사용하여 이미지를 공유
- 저장소에는 도커 허브뿐만 아니라 다른 프라이빗 이미지 저장소도 시용힐 수 있음
컨테이너 생성
- 도커는 컨테이너를 생성하고 관리를 할 수 있는 컨테이너 런타임
- 컨테이너를 생성하고 네트워크 또는 볼륨과 같은 도커 오브젝트를 생성한 뒤 컨테이너에 연결하여 사용할 수 있음
도커 설치
사전 패키지 설치
install Docker Engine 페이지를 살펴보면 운영체제 별로 다양하게 설치할 수 있는 방법이 나와있다.
아래 설치는 centOS8 버전 기준으로 기술하겠다.
(1) 이전 버전 삭제
$ sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
(2) 레포지토리 설정하기
$ sudo yum install -y yum-utils
$ sudo yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
(3) 도커 엔진 설치하기
$ sudo yum -y install docker-ce docker-ce-cli containerd.io
(4) 설치된 도커 버전 확인하기
$ docker version
(5) 도커 서비스 실행하기
$ systemctl status docker.service
$ systemctl start docker.service
$ systemctl enable docker.service
or
$ systemctl status docker.service --now
(6) 컨테이너 실행해보기
$ docker run hello-world
'도커 > 개념 및 실습' 카테고리의 다른 글
1, 2, 3장 연습문제 (0) | 2021.06.02 |
---|---|
03장-3, 컨테이너 관리 (0) | 2021.06.02 |
03장-2, 컨테이너 실행 (0) | 2021.06.01 |
03장-1, docker 명령 - 이미지 다운로드 (0) | 2021.05.31 |
01장, 가상화 (0) | 2021.05.31 |