도커란?

1 minute read

도커 (Docker)

컨테이너 기반 오픈소스 가상화 플랫폼인 도커는 이전 OS를 가상화하던 VMware, VirtuaBox와는 달리 프로세스를 격리하는 방식을 채택하였습니다. 리눅스에서는 해당 방식을 리눅스 컨테이너라고 하며 단순히 프로세스를 격리시키기 때문에 가볍고 빠르게 동작하는 것이 가장 큰 특징입니다. CPU나 메모리를 필요한 만큼 추가로 적절히 사용하므로 자원의 손실 또한 적은 편이라 더욱 각광 받고 있습니다. 하나의 서버에서 여러 컨테이너를 실행한다면 서로 영향을 미치지 않고 독립적으로 실행되기 때문에 아주 가벼운 가상머신(VM)을 사용하는 것처럼 느껴집니다.

이미지 (Image)

도커에서 이미지는 컨테이너 실행에 필요한 정보를 모두 담고 있는 파일이라 볼 수 있습니다. 이 때문에 컨테이너는 다른 복잡한 설치나 부가적인 요소를 고려하지 않더라도 이미지만 있다면 컨테이너를 생성할 수 있습니다. 이미지는 Immutable합니다. 그렇기 때문에 이미지로 생성된 컨테이너를 삭제하거나 변경하더라도 이미지는 변하지 않고 그대로 남아 있습니다. 또한 하나의 이미지에서 여러 개의 컨테이너를 생성하는 것도 가능합니다. 컨테이너에서 변경된 사항은 컨테이너 내부에 저장됩니다.

도커의 이런 특징 때문에 서버 환경을 꾸릴 때 단순히 이미지를 다운 받고 컨테이너를 생성하기만 하면 됩니다.

레이어 (Layer)

도커는 단순히 이미지에 파일을 저장하는 것이 아니라, 레이어를 통해 데이터를 관리합니다. 쉽게 말해 이미지는 여러개의 레이어로 이루어져 있다고 할 수 있습니다. 그리고 이 여러 개의 레이어를 유니온 파일 시스템을 사용해 하나의 파일 시스템처럼 사용할 수 있게 해줍니다. 이미지는 Read-only 레이어로 구성되며, 이미지를 통해 컨테이너를 생성하면 기존의 이미지 레이어 위에 Read-write 레이어를 추가하여 해당 레이어에서만 데이터를 읽고 씁니다. 위의 이미지에서 처럼 Ubuntu이미지가 Layer 1, 2, 3으로 구성되어 있을 경우 nginx 이미지를 사용하려면 nginx 레이어만 다운 받으면 되기 때문에 레이어를 효율적으로 다운받고 관리할 수 있습니다.

이미지 경로

이미지는 이미지에 해당하는 URL을 통해 관리하며 태그를 붙일 수도 있습니다.

참고 자료

documents.docker.co.kr jwyeom63님 블로그 subicura님 블로그