프로필사진

Go, Vantage point

가까운 곳을 걷지 않고 서는 먼 곳을 갈 수 없다.


Github | https://github.com/overnew/

Blog | https://everenew.tistory.com/





티스토리 뷰

반응형

 

 

 

Docker를 사용하다 보면, Ubuntu Image위에 세팅을 하여 container Image를 빌드하고는 한다.

그렇다면 이 Image는 하나의 VM처럼 Ubuntu OS를  가상화해 제공해 주는 것일까?

Host OS의 커널을 공유하기 때문에 경량화와 최적화가 가능했는데, 이런 것이 가능할까?

또는 CentOS에 Docker를 설치하고 Ubnutu Image를 실행하면, 동작이 가능한 것일까? (미리 언급하면 가능하다.)

 

이번에는 이 주제에 대해서 알아보자.

 

 

 

 

 

 

핵심은 Host OS의 커널 공유

 

출처: https://www.cherryservers.com/blog/a-complete-overview-of-docker-architecture

 

 

왼쪽에서 확인할 수 있듯이, Docker는 Host OS위에 Docker engine이 동작하여 Container 들이 이 커널을 공유하는 형태이다.

따라서 container는 일종의 프로세스처럼 취급될 수 있다. 즉 별도의 OS는 없다.

 

반면 VM은 Hypervisor(타입 1)위에 각각의 VM들의 OS가 동작하는 모습으로, 하드웨어는 공유할지라도 OS Level을 공유하지 않기 때문에 각각의 OS가 필요하고 오버헤드가 심하다.

반면 공유 자원이 Docker비해 적기 때문에 보안적으로는 우수하다.

 

 

 

 

 

 

Host OS와 Container OS가 다른 경우

 

Container가 OS를 포함하지 않는데, CentOS Host에서 동작하는 Ubuntu Image의 컨테이너들은 도대체 무엇일까?

 

 

Docker는 Linux의 LXC(LinuX Containers)라는 격리 기술을 기반으로 만들어졌다. (현재는 자체 기술인 libcontainer로 변경)

 

태생이 그렇기도 하고, Docker는 기본적 Linux 커널의 격리 기술을 활용하도록 개발되었다.

따라서 대부분의 Linux 파생 OS에서 Docker를 사용할 수 있다.

경우에 따라서는 linux 커널의 버전이 달라 특정 CentOS 버전에서는 docker가 실행이 안되기도 하는 듯하다.

따라서 Window와 같은  타 OS를 사용한다면, Linux 계열 VM을 통해 Docker를 실행해야 한다.

 

 

결론적으로 Host OS가 CentOS라도 Linux 커널을 Base로 만들었기 때문에, 또 다른 Linux 계열인 Ubuntu 컨테이너를 동작시키 더라도 Linux 커널을 정상적으로 사용하기 때문에 문제없이 실행이 된다.

 

 

 

 

이러한 이유로 Window OS Image 같은 것은 존재하지 않을 것이라 생각했는데...

존재한다???

 

 

 

 

https://hub.docker.com/r/dockurr/windows

 

https://hub.docker.com/r/dockurr/windows

 

hub.docker.com

 

 

 

 

제작자의 영상을 확인해본 결과, 이런 마법 같은 일이 가능한 것은 정말로 Window container를 실행한 것이 아니라,

Window VM(KVM 활용)을 실행하는 Linux Contianer를 실행한 것이라고 한다. (이게 무슨??)

 

 

 

 

 

영상 중에서

 

 

하지만 정말 window의 기능을 활용하고 싶다면 실제 VM을 사용하길 권장하고 있다.

동일한 원리로 MacOS Image도 존재는 한다.

 

 

 

 

 

 

 

Windows Conatiner

 

윈도우에서 컨테이너를 지원하기 위해, 리눅스의 containerd 기반과 다르게 HCS버전의 Docker Engine을 실행할 수 있다고 한다.

이를 활용하면 Window OS Container도 실행시킬 수 있을까 싶지만, Window OS Image는 Microsoft에서만 제작을 독점하고 있기 때문에 라이선스 보유 필요하고 한다.

 

https://tech.devsisters.com/posts/start-windows-container-dev

 

[Windows 컨테이너] 2: Windows 컨테이너 개발 환경 구축하고 테스트하기

Windows 컨테이너를 실제로 개발하기 위하여 개발 환경을 구축하는 방법을 살펴봅니다. 그리고 첫 Windows 컨테이너를 만들어봅니다.

tech.devsisters.com

 

 

 

 

 

 

참조

 

https://forums.docker.com/t/how-is-this-possible-centos-container-on-ubuntu-newbie-question/21558

 

How is this possible? CentOS container on Ubuntu (newbie question)

Hi, I’m a newbie to Docker and Linux. Following this training and many others I see that you can run a “centos” container on a Ubuntu Linux OS. How is this possible? The way I am seeing containers would contain applications and its dependencies. Plea

forums.docker.com

 

https://www.docker.com/blog/lxc-vs-docker/

 

Linux Containers vs. Docker: Which One Should You Use? | Docker

Explore the key differences between Docker and LXC to determine which containerization technology best suits your project needs.

www.docker.com

 

 

 

반응형
댓글
반응형
인기글
Total
Today
Yesterday
«   2024/10   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
글 보관함