도커에 대해 알아보자

cdwde·2022년 10월 1일
0

Docker

목록 보기
1/8
post-thumbnail

✅ 도커란?

컨테이너를 사용하여 응용 프로그램을 더 쉽게 만들고 배포하고 실행할 수 있도록 설계된 도구이며 컨테이너 기반의 오픈소스 가상화 플랫폼이며 생태계이다.

컨테이너

컨테이너는 코드와 모든 종속성을 패키지화하여 응용 프로그램이 한 컴퓨팅 환경에서 다른 컴퓨팅 환경으로 빠르고 안정적으로 실행되도록 하는 소프트웨어의 표준 단위이다.

컨테이너 안에 다양한 프로그램, 실행환경을 컨테이너로 추상화하고, 동일한 인터페이스를 제공하여 프로그램의 배포 및 관리를 단순하게 해준다. 일반 컨테이너의 개념에서 물건을 손쉽게 운송해주는 것처럼, 프로그램을 손쉽게 이동 배포 관리를 할 수 있게 해준다.

도커 이미지

코드, 런타임, 시스템 도구, 시스템 라이브러리 및 설정과 같은 응용 프로그램을 실행하는데 필요한 모든 것을 포함하는 소프트웨어 패키지이다.

도커 컨테이너는 이미지의 인스턴스이며 이를 이용해서 프로그램을 실행한다.

✅ 도커를 쓰는 이유

자원적, 성능적으로 뛰어남


도커는 다른 가상 환경 기술에 비해 가볍고 빠른 실행 속도를 가진다.

하이퍼바이저 기반의 가상화 방식은 각 가상 환경마다 독립된 커널 OS가 존재해 매우 무겁고 느릴 수 밖에 없다. 또한 각 환경마다 쓸 수 있는 자원이 고정적으로 정해져 있어 컴퓨터의 성능과 환경이 제한된다.
또한 어플리케이션을 실행하기 위해 VM을 띄우고 자원 할당 후, 게스트 OS를 부팅하여 어플리케이션을 실행해 복잡하다.

BUT!
도커의 가상화 방식은 새롭게 커널 OS를 생성하지 않고 기존의 커널 OS 자원을 계승해서 사용하고, 각 환경마다 사용할 수 있는 자원이 고정으로 정해져 있지 않아 유동적으로 변할 수 있다.
또한 어플리케이션을 실행할 때는 호스트 OS 위에 어플리케이션의 실행 패키지인 이미지를 배포만 하면 되니 얼마나 편리한가.

하이퍼바이저 기반의 가상화?
하이퍼 바이저는 호스트 시스템에서 다수의 게스트 OS를 구동할 수 있게 해주는 소프트웨어, 그리고 하드웨어를 가상화하면서 하드웨어와 각각의 VM을 모니터링해주는 중간 관리자이다.
하이퍼 바이저 기반의 가상화를 통해 논리적으로 공간을 분할해 VM이라는 독립적인 가상 환경의 서버 이용이 가능해졌다.

개발환경 쉽게 동기화

  1. 도커 이미지에 언어나 프레임워크 버전을 미리 모두 정해좋을 수 있고, 해당 이미지를 컨테이너화 시키면 그 컨테이너는 로컬 환경의 간섭 없이 독립적으로 구동하기 때문에 버전이 달라 생기는 이슈가 없다고 한다.

  2. 도커 파일을 사용하면 설치할 언어, 프레임워크, 패키지 등을 미리 코드 형태로 명시하고 어느 컴퓨터에서든 쉽게 자동으로 설치할 수 있다.

  3. 서버를 옮길 때 편하다. 새로운 서버에 하나씩 전 서버에서 쓰던 언어와 프레임워크를 설치하게 되면 굉장히 귀찮은데, 도커 사용 시에 이미지를 가져와 새로운 서버에 컨테이너를 만들어 쉽게 동일한 환경을 구축할 수 있다.

  4. 하나의 물리 서버에 여러 도커 컨테이너를 돌려 여러 서비스를 배포하는 것이 가능하다. 각 서비스마다 같은 언어와 프레임워크를 사용해도 필요한 버전이 다를 수 있는데 도커 컨테이너는 독립적으로 구동되기 때문에 버전 차이에서 오는 이슈를 걱정할 필요가 없다.

✅ 도커를 사용할 때 흐름

도커를 설치한 후 커맨드에 입력해보자!

docker run hello-world


그럼 먼저 나오는 문구는 보이는 것처럼 Unable to find image 'hello-world:latest' locally이다. 로컬에 hello-world 이미지가 없다는 뜻이다. (당연히 로컬에 저장을 안시켜뒀으니까!)
그 다음 latest: Pulling from library/hello-world는 이미지를 가져온다는 뜻이다.
이후에 나온건 이미지를 가져온 후 실행한 모습을 보여준다.

정리를 해보자면 도커 클라이언트에 명령어를 입력하면 도커 서버로 전해지고, 이미지 Cache 보관 장소에 그 이미지가 있는지 확인한다. 만일 캐시 보관 장소에 이미지가 없다면 도커 허브에서 이미지를 가져오는 것이다!

✅ 이미지로 컨테이너 만드는 순서

  1. Docker 클라이언트에 docker run 이미지 입력
  2. 도커 이미지에 있는 파일 스냅샷을 컨테이너 하드 디스크에 옮김
  3. 이미지에서 가지고 있는 명령어(=컨테이너가 실행될 때 사용될 명령어)를 이용해 실행

참고
도커(Docker)를 사용하는 이유는 무엇일까?
따라하며 배우는 도커와 CI환경

0개의 댓글