본문으로 바로가기

도커(Docker)란? 사용하는 이유

category Docker 2021. 5. 25. 01:01
반응형

컨테이너 Container

https://www.docker.com/resources/what-container

컨테이너는 오버헤드를 최소화하기 위한 방법입니다. 호스트 OS 상에 독립적인 공간을 만들고 별도의 서버인 것처럼 사용합니다. 따라서 각 컨테이너는 같은 호스트 OS 를 공유하기 때문에 오버헤드가 적고 고속으로 동작합니다. 항구의 컨테이너처럼 안에 필요한 것을 모두 담고 다른 컨테이너와 격리시켜놓은 것이라고 볼 수 있습니다.

컨테이너는 애플리케이션 실행에 필요한 모듈을 하나로 모을 수 있기 때문에 여러 개의 컨테이너를 조합해서 하나의 애플리케이션을 구축하는 마이크로서비스와 잘 맞습니다.

도커 Docker

https://www.docker.com/

도커는 애플리케이션 실행에 필요한 환경을 이미지로 만들고 해당 이미지를 활용해 다양한 환경에서 실행 환경을 구축하기 위한 오픈소스 플랫폼입니다. 도커는 내부에서 컨테이너를 사용합니다.

일반적인 개발 환경에서는 잘 동작하다가 갑자기 스테이징이나 운영 환경으로 가면 동작하지 않는 경우가 있습니다. 이런 인프라 환경을 도커를 이용해 컨테이너로 관리하면 어떨까요? 필요한 것을 모두 컨테이너로 모아서 이미지로 만드는 것입니다.

https://foxutech.com/how-to-build-a-docker-image-using-jenkins/how-to-build-a-docker-image-using-jenkins-2/

좀 더 자세히 보면 개발자가 커밋을 할 때마다 CI 를 통해 도커 이미지로 빌드를 하고 해당 이미지를 관리합니다. 그리고 개발 환경이든 테스트 환경이든, 실제 운영 환경이든 해당 이미지를 배포하면 컨테이너에서 독립적으로 배포된 환경에서 동작하기 때문에 오류 없이 동작할 수 있습니다.(컨테이너 공간안에서 실행이 되기 때문에 실행되는 곳의 환경 조성을 굳이 하지 않아도 된다.) Scale up, Scale out 기능을 활용해 유연하게 대처할 수 있다.

 

도커를 리눅스에서 실행해야 하는 이유 ( 윈도우, mac 에서도 실행이 가능하다.)

 

도커(Docker)는 리눅스 커널의 기능을 써야하고 그 기능의 핵심 3가지는

chroot : 독립된 공간 형성 그리고 이 독립된 공간 안에다가

namespace : 6가지 isolate 기능을 지원해준다.

cgroup : 필요한 만큼 HW를 나눠줄 수 있으며 이 세가지의 핵심적인 기능을 통해 컨테이너를 만들 수 있다.

윈도우, mac에서는 Hiper-v 기능을 활용해 컨테이너를 올린다.

반응형