도커란
도커의 생성 배경
- 서버 관리는 매우 복잡하다.
- 하나의 개발 환경 관리도 복잡한데, 여러 대의 서버의 환경을 관리해야 한다.
- 자꾸 바뀌는 개발 환경은 복잡도를 n배 더한다.
서버 관리의 발전 과정
- 문서 작성
- 버전 관리나 서버 관리에 대한 문서를 작성해두는 것이다.
- 단점
- 수작업이기 때문에 퀄리티에 대한 문제
- 환경 변화에 따른 예외적인 결과
- 업데이트가 안되는 등의 버전 관리 문제
- 상태 관리 도구
- 설정 파일을 작성하면, 프로그램이 스크립트를 짜주는 편리한 도구
- 장점
- 코드로 다룰 수 있다는 이점
- 코드이기 때문에 버전 관리가 용이하다는 점 - 단점
- 러닝 커브
- 가상 머신
- 호스트 os에 1개 이상의 게스트 os를 설치하는 방식
- 장점
- 한 서버에 여러 개를 설치 가능
- 상대적으로 익숙하고 쉽다.
- 단점
- 너무 무겁다.
- 서버 이미지에 대한 공유가 어렵다.
- 단점
- 자원 격리
- 각각의 프로세스를 가상으로 분리하고
- 프로세스들이 각자 사용하는 파일, 디렉토리도 가상으로 분리
- 프로세스들이 각자 사용하는 리소스도 가상으로 분리
- 리눅스의 컨테이너 기술이다.
- 장점
- 가볍고 빠르다.
- 단점
- 기술이 너무 어렵다.
- 이것을 쉽게 사용할 수 있게 만든 것이 도커이다.
- 각각의 프로세스를 가상으로 분리하고
도커란
- 가상 머신은
- 하이퍼바이저를 이용해 리소스를 나누고
- 그 위에 게스트 os들을 설치하여 사용한다.
- 실제 리소스를 나눠 받고 실제 컴퓨터처럼 동작하기 때문에 큰 오버헤드가 발생한다.
- 도커는
- 도커 엔진 위에서 컨테이너들을 격리만 시켜준다.
- 컨테이너들은 그저 하나의 프로세스이지만
- 디렉토리나 파일들이 서로 격리되어 보이지 않기 때문에 각자 하나의 컴퓨터를 사용하는 것 같이 보인다.
도커의 특징
- 확장성과 이식성
- 도커 엔진이 설치된 곳이라면 어느 환경이든 컨테이너를 띄울 수 있다.
- 오픈 소스이기 때문에 특정 회사나 서비스에 종속적이지 않다.
- 표준성
- 개발 환경에 따라 배포하는 방식이 각각 다르다.
- 그러나 도커를 사용하면 배포 과정이 동일해진다.
- 이미지
- 이미지를 통해 컨테이너를 생성할 수 있다.
- 빌드 서버에서 이미지를 만들어 이미지 리포지토리에 올리고,
- 운영 서버에서 이미지를 당겨와 띄울 수 있다.
- 훨씬 간단하고 가볍게 공유가 가능하다.
- 설정 관리
- 보통 환경변수를 통해 설정을 제어할 수 있다.
- 이미지를 만들 때 환경변수에 의해 동적으로 설정 파일을 만들 수 있도록 해야한다.
- 자원 관리
- 컨테이너는 삭제 후 다시 만들면 모든 데이터가 초기화 된다.
- 별도의 저장소에 관리가 필요하다.
This post is licensed under CC BY 4.0 by the author.