도커 - 개요

.·2021년 9월 13일
1
post-custom-banner

도커 등장 전 서버 관리

서버를 관리기 위해선 굉장히 귀찮은 환경을 세팅을 해야한다.
유저도 생성하고, 환경 변수도 설정하고, 네트워크 ... 등등 많은 세팅을 해야했었다.

서버를 운영하다가 만약 파이썬 버전을 업데이트 한다면, 또는 사용하고 있는 패키지가 업데이트 된다면 어떤 버그가 생길지도 모르고, 굉장히 신경 써야한 부분이 많을 것이다.

그리고 os 와 os 버전마다 세팅을 다르게 해야하기 때문에 서버 세팅은 굉장히 까다로운 작업이다.

하지만 도커가 등장하고 서버관리/개발 방식이 완전히 바뀌게 된다.


도커의 등장

도커가 등장하고 어플리케이션을 환경(os 버전, 패키지 업데이트, 버전 업데이트 ... )에 구애 받지 않고 실행할 수 있다.

도커는 어떤 프로그램이든 추정적인 컨테이너로 만들 수 있고, 그리고 이 컨테이너를 만들게 되면 어디서든 프로그램이 돌아간다. (ex aws, naver cloud, google, 로컬서버 .. 등)

그러면 도커는 가상 머신 같은 것인가 ?
답은 반은 틀리고 반은 맞다.

가상머신처럼 독립적으로 실행되지만
가상머신보다 빠르고
가상머신보다 쉽고
가상머신보다 효율적이다.

도커란 ?

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

  • 도커가 설치되어 있다면 어디서든 컨테이너를 실행할 수 잇음
  • 특정 회사나 서비스에 종속적이지 않음
  • 쉽게 개발 서버를 만들 수 있고 테스트 서버 생성도 간편함

도커의 특징 - 표준성

  • 도커를 사용하지 않는 경우 ruby, node, go, php, python ... 등으로 만든 서비스들의 배포 방식은 제 각각 다름
  • 컨테이너라는 표준으로 서버를 배포하므로 모든 서비스들의 배포과정이 동일해 짐

도커의 특징 - 이미지

  • 이미지에서 컨테이너를 생성하기 때문에 반드시 이미지를 만드는 과정이 필요
  • Dockerfile 을 이용하여 이미지를 만들고 처음부터 재현 가능
  • 빌드 서버에서 이미지를 만들면 해당 이미지를 이미지 저장소에 저장하고 운영 서버에서 이미지를 불러옴
  • 빌드 서버에서 이미지를 만들면 해당 이미지를 이미지 저장소에 저장하고 운영서버에서 이미지를 불러옴

도커의 특징 - 설정 관리

  • 설정은 보통 환경변수로 제어함
  • MYSQL_PASSWORD = password 와 같이 컨테이너를 띄울 때 환경변수를 같이 지정
  • 하나의 이미지가 환경변수에 따라 동적으로 설정파일을 생성하도록 만들어져야 함

도커의 특징 - 자원 관리

  • 컨테이너는 삭제 후 새로 만들면 모든 데이터가 초기화 됨
  • 업로드 파일을 외부 스토리지와 링크하여 사용하거나 S3 같은 별도의 저장소가 필요
  • 세션이나 캐시를 memcached 나 redis와 같은 외부로 분리

도커가 가져온 변화

  • 클라우드 이미지보다 관리하기 쉬움
  • 다른 프로세스와 격리되어 가상머신처럼 사용하지만 성능저하 (거의) 없음
  • 복잡한 기술을 몰라도 사용할 수 있음
  • 이미지 빌드 기록이 남음
  • 코드와 설정으로 관리 > 재현 및 수정 가능
  • 오픈 소스 > 특정 회사 기술에 종속적이지 않음

도커와 가상 머신의 비교

도커는 보통 virtual machine 가 비교가 많이 되는데,
Hypervisor 와 guest OS 가 가상머신에 있어서 이것이 overhead 되어서 굉장히 속도를 느리게 한다.
도커는 가상머신이 아니라, 격리만 해주는 역할이므로 성능면에서 전혀 차이가 없지만, 훨씬 빠른 속도를 가졌다.

profile
.
post-custom-banner

0개의 댓글