Docker

진성·2022년 5월 10일
0
post-thumbnail

도커(Docker)는 리눅스 컨테이너 기술을 기반으로 하는 오픈 소스 서비스이다.
이를 통해 애플리케이션 실행 환경을 코드로 작성할 수 있으며, OS를 공유, 격리화 하여 관리할 수 있다.

리눅스 컨테이너(Linux Containe)?

  • 리눅스 컨테이너는 리눅스 기반의 기술 중 하나이다.
  • 필요한 라이브러리와 애플리케이션을 모아서 마치 별도의 서버처럼 구성한 것을 말한다.
  • 컨테이너를 이루는 네트워크 설정, 환경 변수 등의 시스템 자원은 각 컨테이너가 독립적으로 소유하고 있다.

도커의 사용이유

도커 허브에 올라온 이미지와 docker-compose.yml의 설정으로 원하는 프로그램을 편하게 설치가 가능하며, 컨테이너를 생성하여 분리된 환경에 설치하므로 제거도 쉽다.

하나의 서버(로컬 호스트)에 포트만 변경하여 동일한 프로그램을 실행하기 쉬우며, 도커를 사용하지 않았을 때 환경변수나 경로 등의 충돌이 잦다.

도커가 등장한 이후로 어떠한 프로그램도 컨테이너로 만들 수 있으며, 서로 다른 프로그램이더라도 컨테이너로 규격화 되었다.

AWS, Azuer, GCP 등 어떤 환경에서도 돌아간다.

도커와 가상머신

가상머신과 비슷하게 생각할 수 있지만 비슷한점과 다른점이 있다.
가상머신처럼 독립적으로 실행되지만, 가상머신보다 빠르고 쉽고 효율적이다.
도커는 컴퓨터 자원을 그대로 사용한다.

도커의 특징

도커는 가상머신이 아니고 격리만 해주기 때문에 성능상 하락이 없다.

확장성과 이식성

  • 도커가 설치되어 있다면 어디서든 컨테이너를 실행할 수 있다.
  • 오픈 소스이기에 특정 회사나 서비스에 종속적이지 않다.
  • 쉽게 개발서버를 만들 수 있고 테스트 서버 생성도 가능하다.

표준성

  • 도커를 사용하지 않는 경우, 각각의 언어로 만든 서비스틀의 배포 방식은 모두 다르다.
  • 도커는 컨테이너라는 표준으로 서버를 배포하므로 모든 서비스틀의 배포 과정이 동일해진다.

이미지

  • 컨테이너를 실행하기 위한 압축파일과 같은 개념이다.
  • 이미지에서 컨테이너를 생성하기 때문에 반드시 이미지를 만드는 과정이 필요하다.
  • Dockerfile을 이용하여 이미지를 만들고 처음부터 재현 가능하다.
  • 빌드 서버에서 이미지를 만들면 해당 이미지를 이미지 저장소(허브)에 저장하고 운영서버에서 이미지를 불러와 사용한다.

설정관리

  • 도커에서 설정은 보통 환경변수로 제어한다.
  • 하나의 이미지가 환경변수에 따라 동적으로 설정파일을 생성하도록 만들어져야 한다.

자원관리

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

도커의 의한 변화

클라우드 이미지보다 관리하기 쉬우며, 다른 프로세스와 격리되어 가상머신처럼 사용하지만 성능 저하가 거의 없다.

코드와 설정으로 관리하여 재현 및 수정이 가능하며, 오픈소스이므로 특정 회사 기술에 종속적이지 않다.

출처 - wooody92's blog, 하나몬

profile
풀스택 진행중...

0개의 댓글