Docker와 CI 환경 #2

최민석·2021년 2월 1일
1

Docker

목록 보기
2/5
post-thumbnail

Docker 흐름 살피기

도커의 흐름의 기본 작도이다.
1. 사용자가 도커Client에 명령어를 작성한다.
2. 받은 명령어를 클라이언트는 서버에 전송한다.

라는 매우 크고 간단하게 보면 이렇게 나타낼 수 있고,
이미지를 다운받는 과정을 살펴보자.

도커 이미지 PULL

도커 이미지는,
패키지 및 여러 개발 환경들을 사용 할 수 있게 모아둔 모음집 이라고 표현했다.

이러한 도커 이미지는 어디서 가져올까 ?

바로 도커 허브(Hub) 라는 곳에서 가져오게 된다.

도커 허브란?

도커에서 제공하는 이미지 호스팅 서비스이다.
도커 허브로부터 이미지를 로컬에 다운받아서, 이를 가지고 컨테이너를 생성한다.

도커 허브에 존재하는 Official 이미지들...
위와 같은 이미지가 있으면 node, nginx, mongodb 등
기본 환경 제공이 되어서 개발하기 아주 수월하다.

도커 이미지 PULL 과정 살피기

  1. docker run <이미지 이름>
    ( 지정한 이미지를 가지고 컨테이너 만들기,
    없으면 이미지를 PUll 동시에, 컨테이너를 생성함.)
  2. 명령어(Docker CLI)가 도커 서버에 전달되게 됨.
  3. 도커 서버에서 입력한 "이미지"를 가졌는지 확인함.
  4. 없을 시 DockerHub로 부터 PULL 받게 됨.
  5. 이미지가 로컬 서버에 다운로드 됨.
  6. 컨테이너도 run 명령어로 생성 됨.

여기까지 기초적인 도커 이미지 PULL 및 컨테이너 생성이다.

VM과 Docker 차이

먼저 차이점을 설명 전, 도커의 장점을 나열해보도록 하겠다.

  1. 쉽고 빠른 실행 환경 구축 (초기 개발환경 배포로 개발환경/실행환경 강제화)
  2. 가볍고 빠른 실행 속도(vm의 경우, OS를 재구동)
  3. 하드웨어 자원 절감(하나의 물리적 서버에 다수 컨테이너)
  4. 공유환경 제공 (Docker Hub)
  5. 너무 쉬운 배포 (엄청난! 장점)

위와 같은 도커의 장점들이 있다.
이 중에서 VM과의 차이를 보이면서 나온 장점들이 있다.

가장 큰 차이점으로 볼 수 있는 가상컨테이너 안에
OS 유무를 알 수 있다.

  • 도커의 컨테이너는 없이 운용되어서 가볍고 빠르게 된다는 것을 알 수 있음.

이와 같은 차이점은 도커의 큰 장점이기도 하다.

이렇게 한 컴퓨터에 대해서 여러 개의 컨테이너를 작동하게 되는데,

충돌이 나지 않고 사용 할 수 있는 이유는 컨테이너 격리라는 개념이 들어가서 가능하다.

격리를 시킬 수 있는 이유는 Cgroup, 네임스페이스가 존재하기 때문인데,
이는 리눅스 환경에서만 실행 할 수 있다.

그렇지만 우리가 사용하는 환경은 맥OS/Windows의 경우다. 그런데 어떻게 사용할 수 있던걸까?


Cgroup 및 네임스페이스 사용

위의 실행 작도를 이해하면 좋다.

실제로 도커 컨테이너가 실행되는 방식이다.

우리가 사용하고 있는 OS와 별개로,
리눅스 환경에서 컨테이너 작동 되고 있다.

이를 보면 위의 의문점이 풀리게 된다.

다음으로는 이미지를 통해 컨테이너 생성 과정을 자세히 살펴보자.


이미지를 통한 컨테이너 생성 과정

먼저 이미지안에 들어있는 값들을 살펴봅시다.

현 예시의 경우,
카카오톡을 실행한다는 가정하에 들어있는 이미지 파일 구성이다.

이 이미지를 가지고, 컨테이너를 생성해보자.

  1. 스냅샷의 든 여러 설치 파일들을
    컨테이너 하드 디스크에 전송하여 저장

  1. 실행 명령어를 전송하여, 컨테이너 실행 시 카카오톡이 실행되도록 설정.
    그렇게 컨테이너가 생성되게 된다.

여기까지가 도커 컨테이너를 만드는 과정이다.


다음 포스트는 도커에 사용 명령어와 도커 이미지를 커스텀해서 직접 만들어보도록 하겠다.

profile
되돌아보며 성장합니다🔨

0개의 댓글