본문 바로가기
Study notes

Docker에 대하여 - (1)

by AI미남홀란드 2024. 6. 13.
728x90

docker

도커란?

도커(Docker)는 리눅스 컨테이너에 여러 기능을 추가함으로써 애플리케이션을 컨테이너로서 더 쉽게 사용할 수 있게 만들어진 오픈 소스 프로젝트입니다.

 

가상머신의 장점과 단점

가상머신은 완벽한 운영체제를 생성할 수 있다는 장점은 있지만 일반 호스트에 비해 성능 손실이 있으며, 수 기가바이트에 달하는 가상머신을 이미지를 애플리케이션으로 배포하기에는 부담스러운 단점이 있다.

도커의 장점

리눅스의 자체 기능인 chroot, 네임스페이스, cgroup을 사용하여 프로세스 단위의 격리 환경을 만들기 때문에 손실이 거의 없습니다. 컨테이너에 필요한 커널은 호스트의 커널을 공유하여 사용하고, 컨테이너 안에는 애플리케이션을 구동하는 데 필요한 라이브러리 및 실행 파일만 존재하기 때문에 컨테이너를 이미지로 만들었을 때 이미지의 용량도 가상 머신에 비해 대폭 줄어듭니다. 따라서 컨테이너를 이미지로 만들어 배포하는 시간이 가상 머신에 비해 빠르며, 가상화된 공간을 사용할 때의 성능 손실도 거의 없다는 장점이 있습니다.

모놀리션 애플리케이션

소프트웨어의 여러 모듈이 상호작용하는 로직을 하나의 프로그램 내에서 구동시키는 방식을 모놀리스(Monolith) 애플리케이션으로 정의합니다. 소규모 서비스에서는 이 방식이 어울릴지도 모르지만, 서비스의 기능이 복잡해지고 거대해질수록 소프트웨어 자체의 확장성과 유연성이 줄어든다는 단점이 있습니다. 이러한 모놀리스 방식을 대체하기 위해 최근 새롭게 떠오른 개념이 바로 마이크로 서비스(Microservices) 구조입니다.

 

마이크로서비스 구조의 장점

마이크로서비스 구조는 여러 모듈을 독립된 형태로 구성하기 때문에 언어에 종속되지 않고 변화에 빠르게 대응할 수 있으며, 각 모듈의 관리가 쉬워진다는 장점이 있습니다. 컨테이너는 수초 내로 생성, 시작이 가능할 뿐만 아니라 여러 모듈에게 독립된 환경을 동시에 제공할 수 있기 때문에 마이크로서비스 구조에서 가장 많이 사용되고 있는 가상화 기술입니다.

도커의 특징

1. 개발 환경과 서비스 환경을 동일하게 하여 예기치 못한 장애 예방 (개발환경에서 running 이 잘 되면 어느 정도 성공)

2. 배포 형상을 Docker image라고 부르는 형태로 단순화하여 관리하여 운영에 운영

3. 호스트의 OS 자원을 효율적으로 관리해 준다. 

4. 장애가 발생하더라도 신속한 Rollback , Re-deployment 대응 가능, 다양한 배포기념(컨테이너화)

5. 특정 OS의 가상화 가능. (vmware, virtual box 를 썼엇지만, 순수 가상화와는 다르다. 경량가상화)

 

도커의 구조

docker 구조

Mac 은 리눅스키트를 활용해서 

windows 는 WSL 또는 hyperV 를 활용해서

 

도커 실습

- M1 Mac pro 기준으로 설치 함

 

Install Docker Desktop on Mac

Install Docker for Mac to get started. This guide covers system requirements, where to download, and instructions on how to install and update.

docs.docker.com

 

 

 

docker images # 도커이미지 확인

docker pull 이미지이름 # 컨테이너를 가져옴

docker run [hello-world] # pull 받은 이미지를 start -dit 옵션(백그라운드실행) --name 이름설정

docker ps -a # 도커 현재 상태 확인

docker rmi 이름 # 도커 이미지 삭제

docker rm # 도커 삭제 실행중일땐 -f 옵션 doker rm -f 이름

docker logs 이름 # 컨테이너의 출력값들을 볼 수 있다.

docker system prune -all # 전체 삭제(주의)

 

728x90