시뻘건 개발 도전기

[docker] 다중 운영체제 지원 본문

기타/DevOps

[docker] 다중 운영체제 지원

시뻘건볼때기 2023. 3. 30. 19:46
반응형

[그림 1] Docker에 다중 운영체제 사용

이번 포스팅에서 하는 이야기는 Docker의 다중 운영체제이다.

[그림 1]과 같이  Docker에서 다중 운영체제 사용이 가능할까?

백문이 불여일견이라고, 한 번 해보면 평생 기억할 것 같아 직접 해본다.

 

Docker Hub에 접속하면 다양한 OS의 이미지를(배포판) 다운받을 수 있다!

혹은 아래와 같이 command로도 가능하다.

cat /etc/os-release	# Host OS 확인
docker pull fedora	# fedora 이미지 다운
docker run --rm fedora cat /etc/os-release	# 실행

실행을 해본다면 [그림 1]의 그림이 가능한 이야기인지 알 수 있을 것이다. (정답은 가능하다.)

그 이유는 무엇일까?

 

docker는 OS레벨 가상화 기술이라고 한다. 그럼 OS레벨 가상화 기술은 뭘까?

커널이 격리된 여러 사용자 공간 인스턴스의 존재를 허용하는 운영체제 패러다임으로, 대표적으로 Containers가 있고 zones, virtual private servers, virtual kernels, jails가 있다.

이 말을 다시 해석한다면, Host OS를 공유하는 것이 아닌, Host OS의 커널을 공유한다고 할 수 있다.

더보기
uname -a	# 커널 정보 확인
docker run --rm fedora uname -a		# 컨테이너 안에서 커널 정보 확인

 

커널 정보를 확인해보면 공유되고 있는 것을 눈으로 직접 확인 할 수 있다.

 

여기서 중요한 포인트.

그렇다면 리눅스와 리눅스 배포판/리눅스 커널과의 차이가 궁금할 수 있을 것이다.

 

[그림 2] 리눅스 데스크톱 스택

[그림 2]를 보면 알 수 있듯이 우리가 흔히 이야기하는 ubuntu, Redhat, CentOS 등은 정확히 리눅스 배포판이다.

배포판은 커널을 비롯해 애플리케이션, 패키지 매니저 등 컴포넌트들을 포함하고 있다.

 

더보기

리눅스 커널은 하드웨어의 리소스를 관리하고 추상화해서 프로세스에게 할당하여 관리하는 역할을 한다.

 

자! 그럼 이제 우리는 [그림 2]를 보고 컨테이너 환경에서 어떤 배포판을 실행시킬 수 있고 어떻게 동작되는지 알수 있게 되었다.

 

 

 

Question1. ubuntu 호스트에서 windows 컨테이너는 동작할까?

더보기

동작하지 않는다.

컨테이너는 커널을 공유한다고 했다. 그러나 리눅스의 커널과 다르기 때문이다.

windows 이미지는 애초에 없다.ㅎㅎㅎ

 

Question2. windows/macOS 호스트에서 ubuntu 컨테이너는 동작할까?

더보기

동작한다.

OS 위에 Hypervisor/hyperKit layer 위에 LinuxKit 위에 docker engine이 올라가기 때문에 가능은 하지만...

가상화 환경과 LinuxKit과 같은 레이어가 추가 구성됨으로써 오버헤드가 있을 수 있다.

그래서 docker는 linux환경에서 사용하는 것이 적합하다고 볼 수 있다.

[그림 3] windows/macOS에서 Ubuntu 컨테이너 실행

 

반응형

'기타 > DevOps' 카테고리의 다른 글

[linux] 커널  (0) 2023.03.31
[docker] alpine linux 이미지 만들고 실행하기  (0) 2023.03.31
[docker] 컨테이너 기술  (0) 2023.03.14
Comments