도커(Docker)에 대해 🤔

yeeun lee·2020년 5월 13일

도커란?

도커(Docker)는 리눅스의 응용 프로그램들을 소프트웨어 컨테이너 안에 배치시키는 일을 자동화하는 오픈 소스 프로젝트이다. 도커 웹 페이지의 기능을 인용하면 다음과 같다.

위코드 게시물

"도커 컨테이너는 소프트웨어를 소프트웨어의 실행에 필요한 모든 것을 포함하는 완전한 파일 시스템 안에 감싸는 것이다. 여기에는 코드, 런타임, 시스템 도구, 시스템 라이브러리 등 서버에 설치되는 무엇이든 아우른다. 이는 실행 중인 환경에 관계 없이 언제나 동일하게 실행될 것을 보증한다."

2016년 자료이긴 하지만 도커가 개발자들에게 많이 쓰인다는 것을 보여주는 자료이다.

The Evolution of the Modern Software Supply Chain - The Docker Survey, 2016

잘 정리해놓은 subicura님 블로그: 초보를 위한 도커 안내서 가 있어서 가져왔다. 개념을 너무 모르겠어서 우선 간단하게만 정리한다. 도커는 컨테이너 기반의 오픈소스 가상화 플랫폼이다. 컨테이너는 격리된 공간에서 프로세스가 동작하는 기술인데, 기존의 가상화 방식은 주로 OS를 가상화했지만 성능 문제를 개선하기 위해 도커는 프로세스를 격리했다.

컨테이너

서버의 컨테이너는 운송업에서 쓰는 의미와 비슷하다. 다양한 프로그램, 실행환경을 컨테이너로 추상화하고 동일한 인터페이스를 제공하여 프로그램의 배포 및 관리를 단순하게 해준다. 백엔드 프로그램, 데이터베이스 서버, 메시지 큐등 어떤 프로그램도 컨테이너로 추상화할 수 있게 되면서 조립PC, AWS, Azure, Google cloud등 어디에서든 실행할 수 있게 됐다.

하나의 서버에 여러개의 컨테이너를 실행하면 서로 영향을 미치지 않고 독립적으로 실행되어 마치 가벼운 VMVirtual Machine을 사용하는 느낌을 준다. 실행중인 컨테이너에 접속하여 명령어를 입력할 수 있고 apt-get이나 yum으로 패키지를 설치할 수 있으며 사용자도 추가하고 여러개의 프로세스를 백그라운드로 실행할 수도 있다. CPU나 메모리 사용량을 제한할 수 있고 호스트의 특정 포트와 연결하거나 호스트의 특정 디렉토리를 내부 디렉토리인 것처럼 사용할 수도 있다.

이미지

이미지는 컨테이너를 실행하기 위한 모든 정보를 가지고 있다. 그래서 의존성 파일을 컴파일하고 이것저것 설치할 필요가 없다. 새로운 서버가 추가되면 미리 만들어 놓은 이미지를 다운받고 컨테이너를 생성만 하면 된다. 한 서버에 여러개의 컨테이너를 실행할 수 있고, 수십, 수백, 수천대의 서버도 문제없다.

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

레이어

도커 이미지는 컨테이너를 실행하기 위한 모든 정보를 가지고 있기 때문에 용량이 크다. 처음 이미지를 다운받을 땐 크게 부담이 안되지만 기존 이미지에 파일 하나 추가했다고 수백메가를 다시 다운받는다면 매우 비효율적일 수 밖에 없다. = 이런 문제를 해결하기 위해 레이어layer라는 개념을 사용하고, 유니온 파일 시스템을 이용하여 여러개의 레이어를 하나의 파일시스템으로 사용할 수 있게 해준다. 다운로드를 버전 기준으로 하게 되는 것이다.

도커파일

도커는 이미지를 만들기 위해 Dockerfile이라는 파일에 자체 DSLDomain-specific language언어를 이용하여 이미지 생성 과정을 적는다. 의존성 패키지를 설치하고 설정파일을 만들 필요 없이 Dockerfile로 관리하면 된다. 이 파일은 소스와 함께 버전 관리 되고 원한다면 누구나 이미지 생성과정을 보고 수정할 수 있다.

profile
이사간 블로그: yenilee.github.io

1개의 댓글

comment-user-thumbnail
2020년 5월 24일

조커 아닌가요??

답글 달기