1 minute read

도커란 무엇인가?

도커란 일종의 컨테이너와 같다.

소프트웨어 개발에서 컨테이너란 무엇인가?

  • 일종의 표준화된 소프트웨어 유닛이다.
    • 컨테이너 내에 다양한 상품(software unit, code package)을 넣을 수 있으나, 넣은 뒤에는 자체적으로 보관 및 격리된다. (Standalone)
    • 코드를 실행하는데 필요한 종속성과 도구가 포함되어 있다.
    • 어디에서/누가 실행하더라도 동일한 환경에서 동일한 어플리케이션을 실행할 수 있다.
      • 동일하지 않을 경우, 버전, 툴과 라이브러리 등의 환경 차이가 발생할 때 동일한 실행 결과를 보장할 수 없다.
      • 여러가지 프로젝트를 관리할 때 프로젝트를 변경함에 따라 설정해 주는 것이 상당히 번거롭다
  • 컨테이너의 생성 및 관리 프로세스를 단순화하는 도구이다.

vs Virtual Machine

  • VM은 가상으로 만들수 있는 컴퓨터 내부의 환경이 다른 컴퓨터
    • 캡슐화된 VM은 도커 혹은 컨테이너와 같은 결과를 가진다.
    • 한 컴퓨터에 여러개의 VM 을 설정할 수 있다.
    • 이를 동료와 공유해 동일한 환경에서 작업하는지도 확인 가능.

Docker는 컨테이너의 빌드 및 관리를 돕는다.

  • 컨테이너는 OS와 빌드 도구 등을 요구하지 않는다.
    • 내부에 작은 운영체제 레이어가 존재할 수 있으나, VM에 비해 훨씬 가볍다.
  VM 컨테이너 (도커)
환경 분리 하나 이상의 완전한 운영 체제 호스트 운영 체제와 동일한 환경
가볍기 무겁다 가볍다
성능 느리다 빠르다
운영 체제 모든 운영 체제 지원 가능 호스트 운영 체제에 종속적
네트워크 세팅 VM 자체적으로 설정 호스트 운영 체제와 공유
캡슐화 완전한 캡슐화 가능 애플리케이션 수준 캡슐화
배포 무겁고 느리다 가볍고 빠르게 배포 가능
관리 가상화된 환경의 전체 관리 애플리케이션 수준 관리

Pros & Cons Of VMs

Pros

  • 독립된 환경 구성 가능
  • 다른 구성의 환경을 VM 내부에 구현할 수 있다.
  • 안정적 공유 및 재생산이 가능하다

Cons

  • 낭비되는 공간이 발생한다.
  • 성능이 낮아질 수 있다.
  • 원하는 모든 시스템 내에 이런 VM을 구성해야 한다. (공유하는 것이 까다롭다.)

이러한 단점들이 존재하기 때문에, VM을 사용하지 않고 도커, 컨테이너를 사용하고자 한다.

Docker 설정

운영체제에 맞는 Docker를 설치하면 된다.

  • 현재 OS X에서는 Docker Desktop을 권장하므로 이를 다운로드 및 설치하였다.

시작하기

로컬에서 어떤 프로그램을 실행하기 위해서는, 빌드를 위해 JS(언어마다 다를 수 있다) 패키지 및 이에 나열된 모든 dependency를 설치해야 한다.

docker는 컨테이너에서 이미지를 기반으로 실행하므로, 이미지가 필요하다.

Dockerfile은 Docker의 설정을 정의한다 (자세한 것은 Section 2에서 다룹니다.)

docker build . 를 터미널에 입력해 Dockerfile에 정의된 이미지 빌드를 시작한다.

docker build -p 3000:3000 (image ID) 명령어를 통해 컨테이너를 실행한다.

  • localhost:3000에서 도커가 실행됨을 알 수 있다.

현재 실행중인 docker 이미지를 확인하기 위해 docker ps 명령어를 사용한다. 현재 실행중인 docker를 중지시키기 위해서 docker stop 명령어를 사용한다.

  • localhost:3000에서 도커가 중지됨을 알 수 있다.

Leave a comment