[배포] Docker 의미
DevOps

[배포] Docker 의미

반응형

도커(Docker)는 리눅스 컨테이너(Linux Container) 기술을 기반으로 하는 오픈 소스 서비스입니다. 도커를 통해 애플리케이션 실행 환경을 코드로 작성할 수 있으며, OS를 격리화하여 관리합니다.

 

Linux Container

Linux Container는 Linux 기반의 기술 중 하나로, 필요한 라이브러리와 애플리케이션을 모아서 마치 별도의 서버처럼 구성한 것을 말합니다. 컨테이너를 이루는 네트워크 설정, 환경 변수 등의 시스템 자원은 각 컨테이너가 독립적으로 소유하고 있습니다.

(프로세스, 네트워크, 파일시스템의 구획화)

 

Docker 의 문제 해결

1.  환경 표준화

대표적인 운영 체제(OS)는 Linux, Windows, MacOS로 구분할 수 있습니다. 그리고 엔지니어는 자신이 개발하는 애플리케이션이 어떤 환경에서 구동될지 생각하고 개발해야 합니다. 그리고 개발하려고 하는 여러 애플리케이션을 구동하는 운영체제가 서로 다르다면 환경에 따라 조금씩 변경할 부분이 발생합니다. 

예를 들어, 윈도우에서 개발한 애플리케이션에서의 경로는 백슬래시(\)를 폴더로 표현하고, Mac 이나 Linux에서 경로는 슬래시(/)를 폴더로 표현합니다. 환경이 다르다면 개발자들이 조정할 문제가 수도 없이 생기며, 수작업으로 환경을 맞추는 일은 쉬운 일이 아닙니다.

2.  수작업으로 일치시키는 환경 구성

/Users/mac이 홈 디렉토리로 지정되어 있습니다. 모든 컴퓨터가 동일하게 설정되어 있지는 않습니다. 만약 애플리케이션을 설치하거나 실행할 때 홈 디렉토리에 저장하는 경우를 예로 들어 보겠습니다. 로컬 PC에 설정된 값이 모두 동일할 수 없기때문에, 모든 사용자와 개발자가 같은 홈 디렉토리를 사용할 확률은 절대 그리 높지 않을 겁니다. 그리고 설치하다 보면 누군가는 실수할 수도 있습니다.

홈 디렉토리가 다르듯 애플리케이션을 설치할 때, 컴퓨터의 환경에 맞게 변경해야 하는 부분이 있습니다. 방화벽 설정, 사용자 권한 설정, Port 설정 등이 이런 부분에 해당합니다. 그리고 컴퓨터에 다양한 설정 작업을 수작업으로 하게 된다면, 많은 시간이 걸릴 뿐만 아니라 설정 간에 간섭이 일어나 프로그램이 멈출 수도 있습니다.

3.  리소스 격리성

하나의 컴퓨터를 사용하지만, 여러 개의 컴퓨터를 이용하는 것처럼 사용하는 방법을 '리소스 격리성'이라고 합니다. 리소스 격리성을 제공하는 기술로는 가상 머신(Virtual Machine), 도커 등이 있습니다.

왼쪽은 도커, 오른쪽은 가상 머신

도커와 가상 머신의 차이?

  • 도커는 가상 머신만큼 견고한 격리성을 제공하지는 않습니다.
  • 도커는 리눅스의 컨테이너(Linux Container)를 이용한 기술로, OS 위에 다른 OS를 실행하는 것이 아니므로 가상 머신보다 좋은 성능을 낼 수 있습니다.
  • 애플리케이션에 대한 환경 격리성을 중심으로 한 VM과는 달리, 도커는 Container의 관점에서 개발자와 사용자 커뮤니티를 중심으로 혜택을 제공하는 데 있습니다.

 

Docker Container Lifecycle

Docker Container Lifecycle의 간단한 도식화

 

 

 

반응형

'DevOps' 카테고리의 다른 글

[AWS] RDS  (0) 2022.01.18
[AWS] S3 배포  (0) 2022.01.18
[AWS] EC2 배포 및 생성  (0) 2021.11.22
[AWS] EC2 ubuntu 시간 변경  (0) 2021.11.22
[배포] 자동화  (0) 2021.08.17