[Docker] Section 1 - 시작하기
도커란 무엇인가?
도커란 일종의 컨테이너와 같다.
소프트웨어 개발에서 컨테이너란 무엇인가?
- 일종의 표준화된 소프트웨어 유닛이다.
- 컨테이너 내에 다양한 상품(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