본문 바로가기

Docker

[Docker] Docker 란?

도커 등장 배경

서버를 관리한다는 것? → 매우 복잡하다 !

전통적인 서버관리 방식

: 업데이트 할 때, 각 단계 어느 곳에서 문제가 생길지 모두 고려해야함

도커 등장 - 서버관리/개발 방식의 변화

: 어떠한 프로그램도 컨테이너로 만들 수 있고 어디서든 돌아갈 수 있음

※ 가상머신 vs 컨테이너

가상머신은 하드웨어 수준 가상화 기술을 사용하며, 호스트 운영체제 위에 게스트 운영체제를 실행하는 방식으로 동작한다.

이 때, 게이트 운영 체제는 완전한 운영체제이며, 하드웨어 자원을 할당받아 직접 사용하며,
가상머신마다 필요한 디스크 용량과 메모리를 할당받아 사용함

 

도커는 운영체제 수준에서 가상화 기술을 사용한다.

컨테이너라는 단위로 애플리케이션과 그 의존성을 패키징하며, 이 컨테이너는 호스트 운영체제의 리소스를 공유하여 실행된다.

따라서, 가상머신처럼 독립적으로 실행되지만, 게스트 운영체제를 실행할 필요가 없으며 빠르고 가볍고 배포 및 관리가 쉽다.

 

※ 컨테이너 기술

- 격리된 환경에서 작동하는 프로세스

- 애플리케이션과 그 애플리케이션의 의존성들을 패키징하여 특정 환경에서 실행 가능하도록 하는 기술입니다.

도커란 ?

도커는 컨테이너 기반의 오픈소스 가상화 플랫폼

도커의 특징

확장성/이식성

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

표준성

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

이미지

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

설정관리

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

자원관리

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

 

[참고 강의]

[인프런] 초보를 위한 도커 안내서

'Docker' 카테고리의 다른 글

[Docker] 도커 기본 명령어 및 도커 컴포즈  (0) 2023.03.24