Docker란 무엇일까? 기본적인 내용 정리

yunyoung·2021년 1월 8일
0

도커

목록 보기
1/2

Docker

Docker는 애플리케이션 배포를 자동화하기 위한 컨테이너 기반 오픈 소스 프로젝트이다.

다양한 프로그램과 실행환경을 컨테이너로 추상화하고 동일한 인터페이스를 제공해 프로그램의 배포와 관리를 단순하게 해주는 역할이다. 어떤 프로그램도 컨테이너로 추상화하는 것이 가능하고, 어디에서든 실행할 수 있다.

Container

컨테이너는 격리된 공간에서 프로세스가 동작하는 기술로, 가상화 기술 중 하나이다.

기존에는 주로 VMware나 VirtualBox와 같은 가상머신을 사용해 OS를 가상화했다. 호스트 OS 위에 게스트 OS 전체를 가상화하는 방식으로 여러 OS를 한 PC에서 돌릴 수 있으며 사용법이 간단하지만 무겁고 느려서 운영환경에서는 사용할 수 없다.

그래서 프로세스를 격리하는 방식이 컨테이너이다. 하나의 서버에 여러 개의 컨테이너를 실행하면 서로 영향을 미치지 않고 독립적으로 실행된다. 실행 중인 컨테이너에 접속해서 명령어를 입력하는 것이 가능하며, apt-get이나 yum으로 패키지도 설치할 수 있고 사용자를 추가하고 여러 개의 프로세스를 실행할 수도 있다.

Image

이미지는 컨테이너 실행에 필요한 파일과 설정값 등을 포함하고 있는 것으로 상태값을 가지지 않고 변하지 않는 Immutable이다. 컨테이너는 이미지를 실행한 상태라고 볼 수 있으며, 변경된 값은 컨테이너에 저장된다. 같은 이미지로 여러 개의 컨테이너를 생성할 수 있으며, 컨테이너가 변경되더라도 이미지는 바뀌지 않고 그대로 남아있다.

이미지는 컨테이너를 실행하기 위한 모든 정보를 가지고 있기 때문에 의존성 파일을 컴파일하고 이것저것 설치할 필요가 없다. 새로운 서버를 구축하거나 협업할 때 만들어진 이미지를 다운받고 컨테이너를 생성하기만 하면 된다. 한 서버에 여러 개의 컨테이너를 실행할 수 있다.

도커 이미지는 Docker Hub에 등록할 수 있다.

Dockerfile

도커는 이미지를 만들기 위해 Dockerfile이라는 파일에 자체 문법을 이용해 이미지 생성 과정을 적는다.

FROM ubuntu:16.04

RUN apt-get update && apt-get install -y vim apache2

COPY index.html /var/www/html/

CMD ["/usr/sbin/apachectl", "-D", "FOREGROUND"]

위 내용은 ubuntu:16.04라는 공식 이미지를 기반으로 이미지를 제작하고, 컨테이너가 생성될 때 apt-get update && apt-get install -y vim apache2 명령을 수행하며, 컨테이너 내부 /var/www/html/ 위치에 index.html 파일을 복사하고, 컨테이너가 실행될 때마다 ["/usr/sbin/apachectl", "-D", "FOREGROUND"] 명령을 실행하도록 하는 Dockerfile이다.

profile
🌈TIL과 개발 노트

0개의 댓글