-
도커는 컨테이너 기술이다.
컨테이너란 뭔가?
컨테이너는 "코드를 실행하는데 필요한 종속성과 도구가 포함되어있는 패키지"이다.
독립적이고 표준화된 컨터이너는 코드 실행에 필요한 조건을 가지고 있기에 별도의 구성없이 "이미지(Image)"라는 파일을 통해 사용된다.
가령, NodeJS를 통해 개발을 한다고 치자.
15.0.0(있는지 모르겠지만)버전으로 개발을 하고있는데, 문제는 해당 코드 내부에 15버전 이상에서만 작동하는 기능이 들어간 코드가 들어있는 것이다.
현재 자신의 컴퓨터는 상관없다지만 해당 코드가 직접 돌아갈 서버에서는 다르다. 14버전만 설치되어 있다면 실행이 되지 않을 것이고, 또한 한번에 두가지 개발을 하는데 하나는 15 버전을, 다른 하나는 오래된 프로그램이라 12버전을 사용해야 한다면?
서로 다른 버전 두개를 설치할 수 없으니 결과적으로 충돌이 일어나 양자택일을 해야할지도 모른다.
하지만 Docker의 Container는 독립되어 있는 코드 패키지 이기에 문제 없다.
Docker는 특정 버전을 설정 할 수 있으니 모두가 동일한 환경에서 개발이 가능하다.
그런데 도커에는 문제점이 하나 있다.
문제점 이라기보다는 특성인데, VMware는 HV가 HostOS(그러니까... 사용자의 진짜 OS)에 상관없이, 스스로가 "완전한 컴퓨터"를 만들지만 도커는 OS가 없다.
그럼 도커는 어떻게 작동하는가?
바로 HostOS를 사용해서 작동한다. 그럼 HostOS의 커널은 도커가 참여할 수 있는, 오픈소스OS여야 한다는 문제가 생긴다.
그렇기에 Docker는 Window환경에서는 돌아가지 않고 Linux운영체제에서 굴러간다.
윈도우는 기본적으로 OS단으로의 접근을 막아놓기 때문이다.
윈도우에서 사용하기 위해서는 Window위에 VMware처럼 아예 가상의 리눅스 서버를 두는, Hiper-V 혹은 WSL을 사용해야 한다. (두 개의 하이퍼바이저 작동은 다르지만 아무튼 윈도우 위에서 직접적으로 사용은 불가능하다)
뭐, 어쩌겠는가. 꼬우면 사과회사 제품을 사야하는거 아니겠는가....
'클라우드 > Docker' 카테고리의 다른 글
Docker - Docker0 의 정체, Docker localhost 에러 (0) 2023.02.27 댓글