도커는 컨테이너를 가상화하여 어플리케이션을 신속하게 배포할 수 있도록 하는 기능이다. 많은 사용량으로 컨테이너 가상화 기술의 대명사처럼 사용되고 있으나, 최근에는 다른 오픈소스 컨테이너 가상화 기술도 성장하고 있다. 컨테이너 하나가 작은 서버라고 볼 수 있다.
리눅스는 다양한 형태의 리눅스 패키지가 있고, 업데이트에 따라 다양한 버전이 있어서 프로그램 설정이 다 다르다. 그 설정 중에 하나만 달라도 프로그램이 제대로 동작하지 않는다. 서버를 이전하려고 할 때 이 설정을 환경에 맞춰 일일이 설정하기는 힘든 일이다.
하지만 도커로 서버 환경을 만들어서 그 안에 서버 설정을 해주면 다른 환경에서도 동작한다. 도커로 설정해놓은 웹 서버는 이전한 서버에 스크립트를 실행만 하면 매번 서버 설정을 해야 하는 번거로움에서 벗어날 수 있다.
윈도우 유저가 아니더라도 윈도우를 작게 띄워놓거나, 윈도우에 리눅스를 띄워놓는 등 새로운 os를 띄우는 것을 예로 들 수 있다. 하나의 컴퓨터에 여러 가상화 os를 띄워서, 여러가지 일을 시키기 위해서 가상화 기술이 발전했다.
\ | Hypervisor | Container |
---|---|---|
구조 | 물리적 서버의 OS위에 다른 독립적인 OS가 실행된다 (독립적인 OS를 가상화) | OS의 커널 위의 유저 공간에서 실행된다 (독립적인 유저 공간을 가상화) |
장점 | 물리적 서버의 리소스를 더 효율적으로 사용할수 있다 (쉬고 있는 CPU가 idle 상태로 낭비되는 현상 방지) | 가볍고 빨라 쉽게 독립적인 가상 환경을 실행시킬수 있다 CI/CD 기술과도 잘 어울린다. |
단점 | 무거워서 부팅 시간이 길고 리소스(CPU)를 많이 차지한다 | 운영체제가 다른 호스트에서는 실행을 시킬수가 없다 (예: Windows 를 linux 호스트에서 실행시킬수 없다) 완전히 독립적인 운영체제 가상화가 아니므로 보안성이 떨어진다 |
특징 | 하이퍼바이저라는 중간 관리자의 간섭이 크다 | 간섭이 적다 |
<참고 사이트>
docker 홈페이지
docker 기본 사용법