야 Docker 이리나와!! [1] - 개념 및 용어

김진성·2021년 9월 27일
1

Docker

목록 보기
1/6

Docker

DevOps를 정복하기 위해 제일 먼저, 선정한 툴은 Docker이다. Docker는 오픈 소스 컨테이너화 플랫폼으로 애플리케이션을 컨테이너로 패키징할 수 있는 툴이다. 다양한 프로그램 및 실행환경을 컨테이너로 추상화하고 동일한 Interface를 제공하여 프로그램의 배포 및 관리를 단순하게 해준다.

컨테이너

컨테이너란 애플리케이션 소스 코드를 임의의 환경에서 해당 코드의 실행에 필요한 운영체제 라이브러리 및 종속 항목과 결합하는 실행 가능한 표준 컴포넌트를 말한다.

언뜻 듣기로 컨테이너는 이해하기가 어렵다. 이를 이해하기 위해 예시를 들자면, 내가 로컬에서 Node.js 기반 백엔드 코드를 작성했을 때 express와 같은 다양한 Library를 npm install로 설치해 적용한 적이 있다. 이 코드를 만약 aws 서버에 올리면? 서버에는 node.js 환경이 설치가 되어 있지 않기 때문에 새로 설치하고 지워주고 해야한다. 그러나 Docker를 사용하면 내가 서버에 코드를 올릴때 또 npm install 해서 실행시킬 필요가 없다.

아직도 이해가 안된다면 상단의 일반 Virtual Machine과 Container를 비교해보면 알 수 있다. 우리는 개발을 하면 다양한 OS를 지닌 서버를 관리할 때가 있다. 또한, 나 뿐만 아니라 다양한 사람들과 협업을 할 때가 존재한다. 그 때 중요한 것이 모든 서버에는 코드와 버전의 통일성을 갖추는 것이다. 내가 쓰는 Node의 버전과 다른 사람이 쓰는 Node의 버전이 다른 경우 오류가 발생하게 된다. 그래서 Docker는 다양한 서버에서 버전 통일성을 갖추기 위해 코드와 환경 모두 하나의 컨테이너로 묶는 역할을 한다고 볼 수 있다.

이미지

Docker에서 사용되는 용어 중 이미지라는 용어가 있다. 이미지컨테이너 실행에 필요한 파일과 설정 값들을 포함하고 있는 것으로 볼 수 있다. Docker Image는 두가지의 방법을 사용해서 만들 수 있다.

  • Interactive : 이미 존재하고 있는 도커 이미지를 활용해 컨테이너를 실행하고 그 환경 위에 다가 새로운 것을 추가하고 이를 새로운 이미지로 바꾸는 것이다. 즉, 결합이다.
  • Dockerfile : Dockerfile이라는 새로운 형태의 텍스트 파일을 작성함으로써 Docker Image를 만드는 것이다.

이렇게 생성된 Docker Image는 컨테이너가 하나만 있을 수도 있고 아니면 여러 개가 존재할 수도 있다. 그래서 이미지 용량이 수백MB에 이를 수 있기 때문에 비효율성을 해결하기 위해 Layer라는 개념을 도입해 여러 개의 Layer들이 있을때 기존 A라는 Layer 위에 단순히 B를 추가하는 방식으로 관리할 수 있게 하였다. 이러한 이미지들은 Docker Hub에 올라가게 되고 Docker Hub는 기본적인 Library들을 제공해줘서 우리가 Docker 이미지를 만들 때 손쉽게 관리할 수 있다.

profile
https://medium.com/@jinsung1048 미디엄으로 이전하였습니다.

0개의 댓글