[Docker] 컨테이너

2020. 11. 16. 14:53Docker

1. 컨테이너

1) 컨테이너

호스트 OS상에 논리적인 구획을 만들고, 애플리케이션을 작동시키기 위해 필요한 라이브러리나 애플리케이션 등을 하나로 모아, 별도의 서버인 것처럼 사용할 수 있게 만든것이다. 컨테이너를 사용할 경우 OS, 디렉토리, IP주소 등 같은 시스템 자원을 마치 각 애플리케이션이 점유하고 있는 것처럼 보이게 할 수 있다. 컨테이너는 애플리케이션의 실행에 필요한 모듈을 컨테이너로 모을 수 있기 때문에 여러 개의 컨테이너를 조합하여 하나의 애플리케이션을 구축하는 마이크로 서비스형 애플리케이션과 친환성이 높다.

컨테이너

※ 컨테이너 기술과 서버 가상화 기술은 비슷하지만 목적이 다르다. 컨테이너 기술은 애플리케이션의 실행 환경을 모아 이식성을 높이고 확장성이 좋은 환경에서 작동하는 것을 지향하는데 반해, 가상화 기술은 대부분은 서로 다른 환경을 효율적으로 에뮬레이트할지라는 점을 지향하고 있다.

2) FreeBSD Jail

FreeBSD Jail은 오픈소스 Unix인 FreeBSD의 기술이다. '감옥에 투옥하다'라는 뜻으로 독립된 작은 구획에 가둬 시스템을 분할한다.

  • 프로세스 구획화 : 동일한 Jail에서 동작하는 프로세스만 액세스 할 수 있도록 한다.
  • 네트워크 구획화 : Jail 하나하나에 IP 주소가 할당되어 있으며, Jail 외부에는 네트워크를 경유해야 액세스할 수 있다.
  • 파일 시스템의 구획화 : Jail에서 사용하는 파일 시스템을 구획화하여 조작할 수 있는 명령이나 파일 등을 제한한다.

3) Solaris Containers

Solaris Containers는 오라클 상용 Unix인 Solaris에서 사용하는 컨테이너 기술이다. (도커와 구조가 매우 비슷)

  • Solaris 존 기능 : 하나의 OS 공간을 가상적으로 분할하여 여러 OS가 동작하고 있는 것처럼 보여주는 소프트웨어 파티셔닝 기능이다. 베이스가 되는 OS 영역을 '글로벌 존', 구획화된 가상 존을 '비 글로벌 존'이라 지칭한다.
  • Solaris 리소스 매니저 기능 : 각 비 글로벌 존에서 CPU나 메모리 같은 하드웨어 리소스를 배분하는 리소스 관리 기능이다.

Solaris 존

 

 

 

 

2. 프로그래머로서의 도커

일반적으로 애플리케이션 개발 시에는 개발 환경이나 테스트 환경에서는 올바르게 작동해도 지속적 딜리버리가 일어나는 시스템 개발에서의 테스트 환경에서는 작동하지 않을 수 있다. 이러한 모든 인프라 환경을 도커에서 컨테이너로 관리할 수 있다. 즉, 애플리케이션에 필요한 모든 파일들을 컨테이너로서 모아 관리할 수 있다. 이러한 컨테이너의 바탕이 되는 도커 이미지를는 Docker Hub에서 공유되며, 프로그래머는 도커 이미지를 작성한다.

 

결국 프로그래머가 도커를 사용할 경우, 개발/테스트 환경에서는 움직이지만 제품 환경에서는 움직이지 않는 리스크를 줄일 수 있다.


[참고] tech.osci.kr/2020/03/03/91690167/

[참고] 완벽한 IT 인프라 구축을 위한 Docker (2판)

728x90