도커(Docker) 란?

OPTIMUS PRIME·2022년 10월 14일
1

가상화

목록 보기
2/2

도커(Docker) 란?

Docker는 애플리케이션을 신속하게 구축, 테스트 및 배포할 수 있는 소프트웨어 플랫폼 입니다. Docker는 소프트웨어를 컨테이너라는 표준화된 유닛으로 패키징하며, 이 컨테이너에는 라이브러리, 시스템 도구, 코드, 런타임 등 소프트웨어를 실행하는 데 필요한 모든 것이 포함되어 있습니다.
Docker를 사용하면 환경에 구애받지 않고 애플리케이션을 신속하게 배포 및 확장할 수 있으며 코드가 문제없이 실행될 것임을 확신할 수 있습니다.

컨테이너 란?

컨테이너란 호스트 OS상에 논리적인 구획(컨테이너)을 만들고, 어플리케이션을 작동시키기 위해 필요한 라이브러리나 어플리케이션 등을 하나로 모아, 마치 별도의 서버인 것처럼 사용할 수 있게 만든 것
컨테이너 개념에 대해 알기 전 가상화에 대해 알 필요가 있다.

가상화 란?

서버 가상화는 소프트웨어 애플리케이션을 통해 물리적 서버를 여러 개로 분리된 고유한 가상 서버로 나누는 과정 으로 각 가상 서버는 자체 운영 체제를 독립적으로 실행할 수 있다.

가상화의 종류

  • 호스트 가상화: 호스트 운영체제 위에 가상화 소프트웨어와 가상머신을 작동시키는 방식이다. 일반적인 가상화 기술로는 VMWare, Virtual Box 등이 있다. 물리적 하드웨어에 호스트OS를 설치하고, 그 위에 게스트OS 전체를 가상화하는 방식

  • 하이퍼바이저: 호스트OS를 필요로 하지 않는 타입의 가상화 방식이다. 호스트OS를 설치하는 게 아니라, 하이퍼바이저라는 소프트웨어를 물리 하드웨어 위에 직접 작동시켜, 하이퍼바이저 위에 각각의 하드웨어에 게스트 운영체제를 설치해서 움직이게 하는 것이다. 호스트OS 형과 다른 점은 가상머신이 마치 독립적인 호스트 시스템처럼 작동한다는 것이다. 복수의 가상화 머신이 서로 간섭하지 않도록 하는 것이 하이퍼바이저형의 역할이기 때문에, 처리 오버헤드가 존재하지 않는다.

  • 컨테이너: 위에 언급된 방식과 달리 하드웨어를 가상화하는 방식이 아니다. 위의 두 방식과는 다르게 OS를 가상화하지 않고 소프트웨어를 바로 가상화하는 기술이다. 프로세스를 격리시키기 때문에 가볍고 빠르게 동작한다. CPU나 메모리는 프로세스가 필요한 만큼만 추가로 사용되기 때문에 성능적으로도 거의 손실이 없다. 하나의 서버에 여러 개의 컨테이너를 실행하면 서로 영향을 주지 않고 독립적으로 실행 되기 때문에, 마치 성능 좋고 가벼운 가상머신을 사용하는 느낌을 줄 수 있다.

도커 이미지와 컨테이너란?

  • 도커 이미지: 컨테이너 생성(실행)에 필요한 모든 파일과 설정값(환경)을 지닌 것 (서버 프로그램, 소스코드 및 라이브러리, 컴파일된 실행 파일)
    예를 들어 Ubuntu이미지는 Ubuntu를 실행하기 위한 모든 파일을 가지고 있으며, Oracle 이미지는 Oracle을 실행하는데 필요한 파일과 실행 명령어, port 정보 등을 모두 가지고 있다.

  • 도커 컨테이너: 이미지(Image)를 실행한 상태로, 응용프로그램의 종속성과 함께 응용프로그램 자체를 패키징 or 캡슐화하여 격리된 공간에서 프로세스를 동작시키는 기술이다.

도커(Docker)의 장점

구성 단순화: 모든 플랫폼에서 실행할 수 있다. Dockerfile에 전체 운영 환경변수를 담아 전달이 가능하다.

  • 빠른 배포: 컨테이너는 별도의 OS를 부팅하지 않고 애플리케이션을 실행 하므로 컨테이너를 빠르게 만들 수 있다.

  • 코드 관리: 도커는 환경 자체를 배포하기 때문에 개발 및 코딩을 편하게 만들어 줍니다.

  • 개발 생산성 향상: CentOS 환경의 도커 컨테이너를 실행하는 경우에도 Shared Volume 기능을 통해 Windows 로컬 환경에서 에디터를 통해 소스코드를 수정이 가능하므로 업무 효율이 향상 된다.

CentOS: The Community ENTerprise Operating System의 약자로서 레드햇(Red Hat) 엔터프라이즈(Enterprise) 리눅스와 완전하게 호환되는 무료 기업용 리눅스 운영체제.

  • 애플리케이션 격리: Web Server와 연결된 API 서버들을 격리해야 하는 경우 다른 컨테이너를 통해 API 서버를 실행 시킬 수 있다.
profile
개발자에서 엔지니어로 쩜푸!

0개의 댓글