DevOps/Docker

2. Docker란 무엇인가?

pancakemaker 2024. 3. 1. 08:38

1. VM vs Docker                                                                                                                                                              

출처: https://k21academy.com/docker-kubernetes/docker-vs-virtual-machine

 

2. 도커의 특징 - 확장성/이식성

- 서버에 도커만 설치되어 있다면 다른 서버에서 만든 도커 이미지를 가지고 컨테이너 실행 가능

- 오픈 소스이기 때문에 특정 회사/서비스에 종속적이지 않음

- 단순 서버 배포뿐만 아니라 개발 서버, 테스트 서버를 만들 때에도 활용 가능

 

3. 도커의 특징 - 표준성

- 도커를 사용하지 않을 때에는 ruby, nodejs, go, php로 만든 서비스들의 배포 방식이 제각각

- 컨테이너라는 표준으로 서버를 배포하므로 모든 서비스들의 배포 과정 동일 (docker-compose-up 명령어)

 

4. 도커의 특징 - 이미지

- 이미지: 컨테이너를 실행하기 위한 압축 파일

- Dockerfile 스크립트를 이용하여 이미지 생성

- 빌드 서버에서 이미지를 만들면 해당 이미지를 이미지 저장소에 저장하고 운영 서버에서 이미지를 불러옴 (VM을 압축해서 전달하려면 표준이 존재하지 않아서 어려움)

 

5. 도커의 특징 - 설정관리

- 설정은 보통 환경변수로 제어함

- 컨테이너를 띄울 때 환경변수를 같이 지정 (ex: MYSQL_PASS=password)

- 하나의 이미지가 환경변수에 따라 동적으로 설정 파일을 생성하도록 만들어져야 함

 

6. 도커의 특징 - 자원관리

- 컨테이너는 삭제 후 새로 생성하면 모든 데이터가 초기화 됨 (ex: 로컬에 다운로드 받아놨는데 원본이 사라지면 같이 사라짐)

- 컨테이너 파일들을 아마존 웹서비스 S3 같은 별도의 저장소에 저장 필요

- 세션이나 캐시도 memcached나 redis와 같은 외부로의 분리 필요

 

7. 도커가 가져온 변화

- 클라우드 이미지보다 관리가 용이

- 다른 프로세스와 격리되어 가상머신처럼 사용하지만 성능저하 거의 없음

- 리눅스의 복잡한 기술(namespace, cgroups, network, ...)을 몰라도 사용 가능

- 이미지 빌드 기록이 남음 (ex: git으로 관리)

- 코드와 설정으로 관리 - 재현 및 수정 가능

- 오픈소스 - 특정 회사 기술에 종속적이지 않음