본문 바로가기

프로그래밍/Docker

Hyper-V에 CoreOS 설치하기(1)

이번 글에서는 Windows에서 Docker를 사용하기 위한 첫번째 작업으로 Hyper-V에 CoreOS를 설치하는 작업을 설명해보고자 한다. Docker를 배포하는 Docker Inc. 에서는 원래 Windows 용으로 Docker for Windows를 배포한다. Docker for Windows 또한 Hyper-V에 MobyLinux를 설치해서 Docker를 운영한다. 근데 왜 CoreOS로 바꾸는가 하면 Docker용 Linux 컨테이너에서 systemctl 같은 서비스 관리 명령어를 사용하기 위해서였다(처음엔 이것을 하기 위해 Docker for Windows에서 해봤으나 기능이 되질 않아 CoreOS로 바꾸어서 결국 기능을 구현하긴 했지만 구현에 성공한 방법을 정작 Docker for Windows에서 해보지 않았기 때문에 Docker for Windows에서도 구현될 수도 있을 가능성이 있음을 미리 밝혀둔다).

 

먼저 Hyper-V를 설치하도록 한다. Docker for Windows의 경우 Windows 10의 빌드번호가 10586 이상이어야 가능하다. 그래서 본인의 Windows 10 빌드번호를 먼저 확인하기 바란다(Windows 10 Anniversary Update가 적용된 버전이면 이 빌드번호가 된다. 검색해보면 기존의 Windows 10 에서 Anniversary Update로 업그레이드할 경우 동작이 되지 않는다는 내용도 있어서 진행해보고 안될 경우 아예 클린방식으로 새로이 업그레이드된 버전으로 설치해보길 바란다) Windows 10의 제어판->프로그램 및 기능에 들어가서 해당 화면의 왼쪽에 있는 Windows 기능 켜기/끄기를 선택하면 아래와 같은 창이 나오는데 여기에서 Hyper-V 항목을 찾아 다음과 같이 체크한뒤 확인 버튼을 클릭하면 Hyper-V 설치를 마치게 된다.

 

 

 

 

 

Hyper-V를 설치하면 Windows 10에 다음과 같이 Windows 관리도구로 Hyper-V가 새로이 추가된다

 

 

 

이제 메뉴에서 Hyper-V 관리자를 클릭하면 다음의 화면이 나타난다.

 

 

 

이 화면에서 이제 CoreOS가 설치될 가상 컴퓨터를 설치해야 한다. 근데 그 전에 해야 할 것이 있다. 바로 가상 스위치를 만들어야 한다. 이것의 역할은 Windows 10과 가상 컴퓨터와의 네트워크를 중간에서 이어주는 역할을 하게 된다. 그래서 이제 이 가상 스위치를 만들어보도록 하자. Hyper-V 관리자 화면의 오른쪽을 보면 가상 스위치 관리자 란 항목이 있는데 이것을 클릭하면 다음의 화면이 나타난다.

 

 

 

이 화면에서 가상 스위치 유형을 내부로 선택한뒤 가상 스위치 만들기 버튼을 클릭하면 다음의 화면이 나타난다

 

 

 

이름 항목은 적당한 이름을 주고(여기서는 NAT로 주었다. 실제 NAT 역할을 하기땜에..) 이전 화면에서 가상 스위치 유형을 내부로 설정했기 때문에 연결형식은 자동으로 내부 네트워크로 설정되어 있다. 이런 상태에서 확인 버튼을 클릭해준다. 그러면 NAT라는 이름의 가상 스위치가 생성이 된다. 이렇게 생성된 가상 스위치는 제어판 -> 네트워크 및 공유 센터 화면에서 화면 왼쪽에 있는 어댑터 설정 변경을 클릭하면 다음과 같이 나타나게 된다.

 

 

 

이제 Windows 10에서 사용중인 네트워크 연결(각자 사용하는 PC에서는 이름이 다르겠지만 여기서는 위의 화면을 기준으로 이더넷으로 하겠다)을 공유해야 한다. 이더넷에서 마우스 우클릭해서 속성을 들어간뒤 공유 탭을 클릭하면 다음의 화면이 나타난다. 여기에서 첫번째 항목인 다른 네트워크 사용자가 이 컴퓨터의 인터넷 연결을 통해 연결할 수 있도록 허용(N) 항목을 체크하고 아래에 있는 다른 네트워크 사용자가 공유 인터넷 연결을 제어하거나 중지시킬 수 있도록 허용(O) 항목은 체크해제 하도록 한다(지금은 네트워크 연결이 2개뿐이 없어서 이렇게 나오지만 노트북에서 진행할 경우 무선 어댑터가 있기 때문에 네트워크 연결이 3개가 된다. 네트워크 연결이 3개 이상이 되면 첫번째 항목에서 공유할 네트워크 연결을 선택할 콤보박스가 나오는데 이때 vEthernet(NAT)를 선택해주면 된다) 확인 버튼을 클릭하면 다음과 같은 대화상자가 나오는데 여기에서 예를 눌러준다. 그러면 vEthernet(NAT)는 IP가 192.168.137.1을 갖게 된다. 

 

 

 

 

 

이쯤에서 이렇게 하는 이유에 대해 간단히 언급하겠다. 위에서 가상 스위치 유형을 만들때 가상 스위치 유형을 내부로 지정해서 만들었다. 이 유형에는 외부, 내부, 개인 이렇게 3가지가 있는데 외부는 Host 컴퓨터(여기서는 Windows 10)의 네트워크 영역대를 그대로 이용하게 된다. 예를 들어 Windows 10의 IP가 192.168.0.17이면 외부는 192.168.0.100 같이 같은 네트워크 영역대를 사용하면서 Host 컴퓨터 뿐만 아니라 Host 컴퓨터와 같은 영역대의 컴퓨터와 위에서 언급한 별도의 공유 절차 없이 통신을 할 수 있게 된다. 내부는 외부와는 달리 다른 네트워크 영역대(위에서 설정하게 된 192.168.137.1 같은 전혀 다른 네트워크 영역대)를 갖게 된다. Host 컴퓨터와는 통신이 되지만 Host 컴퓨터와 같은 네트워크 영역대의 컴퓨터와는 통신이 이루어지지 않는다. 정리하면 192.168.137.X대의 독자적인 네트워크 영역을 구축한다고 보면 된다. 외부로 할 경우엔 가상 컴퓨터가 Host 컴퓨터와 같은 영역대의 IP를 사용하기 때문에 네트워크의 부담이 줄어드는 장점이 있지만 노트북 같이 이동하는 상황이 잦아서 그에 따른 네트워크 IP가 유동적으로 바뀌어야 하는 경우 이에 대한 IP를 일일이 수정해야 하는 불편함이 있다. 내부의 경우는 이 가상 스위치를 통해 이 스위치로 설정된 모든 가상 컴퓨터와 네트워크 자원을 공유해서 네트워크의 퍼포먼스는 떨어지지만 이동하는 상황이 잦은 경우 내부는 독자적인 네트워크 이므로 IP를 수정할 필요가 없다. 그래서 외부 스위치는 운영서버 같이 네트워크 IP가 고정적이고 네트워크 자원을 독점해서 사용해야 하는 환경에서 좋고 내부 스위치는 개발 노트북 같이 네트워크 IP가 유동적이고 네트워크 자원을 공유해야 사용해야 하는 환경에서 좋다.

 

가상 스위치 만드는 작업을 마쳤으면 이제 가상 컴퓨터를 만들어보도록 하자. Hyper-V 관리자 화면에서 오른쪽 메뉴를 보면 새로 만들기 란 항목이 있는데 이것을 클릭하면 조그만 팝업 메뉴가 나타난다. 여기서 가상 컴퓨터를 선택하면 다음과 같은 화면이 나타난다. 이 화면에서 다음을 눌러 진행한다.

 

 

 

이름 및 위치 지정 화면에서 적당한 이름을 준다. 만약 가상 컴퓨터를 다른 위치에 저장하려 할 경우엔 다음 화면과 같이 가상 컴퓨터를 다른 위치에 저장 항목을 체크한뒤 활성화 되는 찾아보기 버튼을 클릭해서 해당 폴더를 지정해주면 된다. 이 화면에서 다음을 눌러 진행한다.

 

 

세대 지정 화면에서는 1세대를 선택한뒤 다음을 눌러 진행한다.

 

 

 

메모리 할당은 자신의 컴퓨터 메모리를 고려해서 적당하게 지정해준다. 여기서는 4기가(4096 MB)를 설정했는데 컴퓨터의 물리 메모리가 32기가라 4기가로 설정한 것이지 모든 환경에서 이렇게 하라는 것이 아니다. 이 화면에서 다음을 눌러 진행한다

 

 

 

네트워크 구성 화면에서는 연결을 선택해줘야 하는데 이때 위에서 만들었던 내부 가상스위치(여기서는 NAT로 만들었기 때문에 NAT를 선택한다)를 선택해주도록 한다. 이 화면에서 다음을 눌러 진행한다.

 

 

 

가상 하드 디스크 연결 화면에서는 현재 만들고자 하는 가상 컴퓨터의 가상 하드 디스크를 만들게 되는데 이름과 위치는 건드릴 필요는 없고 크기를 지정해야 한다. 이때 10 GB 이상은 되어야 한다. 이렇게 한 이유가 있는데 밑에서 바로 언급하겠지만 CoreOS의 설치 용량을 몰라서 CoreOS의 인스톨 ISO를 보고 판단하게 되었다. CoreOS의 Install ISO 파일이 300 MB도 안되어서 4GB로 주어서 진행했었는데 가상 컴퓨터를 만드는데는 문제가 없었으나 CoreOS Install에는 실패했었다. 그래서 다시 가상 컴퓨터를 만들어서 이 용량을 10 GB로 주니 문제없이 해결이 되었다. 나는 여유가 있어서 40 GB로 주었다. 40 GB로 주어도 처음에 이 용량을 40 GB로 만들고 시작하진 않는다. Docker Hub를 통해 배포되는 이미지가 일반적으로 500 MB가 넘는것이 드물지만 이런 이미지를 여러개 갖고 있게 되며 이 이미지가 컨테이너로 올라갈 경우 필요에 따라 파일을 CoreOS에서 관리해야 할 필요성도 있어서 40 GB로 좀 여유있게 주었다. 이 화면에서 다음을 눌러 진행한다.

 

 

설치옵션 화면에서는 부팅 가능 CD/DVD-ROM에서 운영 체제 설치(C) 항목을 선택한 뒤 이미지 파일(.iso)(I) 항목을 선택하고 CoreOS Install ISO 파일을 지정해주면 된다. CoreOS Install ISO 파일은 https://coreos.com/os/docs/latest/booting-with-iso.html 에서 Stable Channel 탭에서 Download Stable ISO 버튼을 클릭하면 다운로드 받을 수 있다. 이 화면에서 다음을 눌러 진행한다.

 

 

 

요약 화면에서는 지금까지 설정한 항목들에 대한 내용들을 최종적으로 보여주게 된다. 여기서 마침 버튼을 누르면 가상 컴퓨터를 만들게 되며 Hyper-V 관리자 화면에서 방금 만들어진 가상 컴퓨터가 보이게 된다.

 

 

 

이렇게 보이는 가상 컴퓨터(여기서는 CoreOS) 항목을 마우스 우클릭을 하면 팝업 메뉴가 나타나는데 여기서 연결을 선택한다. 연결을 선택하면 다음 화면과 같이 별도의 새 창이 나타난다. 이것은 비유하면 아직 전원이 들어오지 않은 컴퓨터라 여기면 된다. 

 

 

이 화면에서 녹색으로 된 동그란 모양의 시작 버튼을 누르거나 화면에서 안내해주듯이 시작을 선택하면 가상 컴퓨터를 만들면서 설정했던 CoreOS Install ISO 파일로 부팅을 하면서 가상 컴퓨터기 기동을 하게 되어 다음과 같이 보이게 된다.

 

 

 

오해를 할까봐 하는 말인데 이 화면은 CoreOS 가 설치가 마쳐진 뒤에 나오는 화면이 아니다. Windows 설치 과정으로 비유하면 우리가 Windows Install USB 디스크를 컴퓨터에 꽃은뒤 전원을 켜서 USB로 부팅하면 Windows 설치 화면을 보여주는데 이런 Windows 설치 화면과 같은 개념의 화면이 이 화면이라고 보면 된다. CoreOS는 명령어를 이용해서 설치하는 작업을 거치기 때문에 이런 Text 기반의 Prompt 화면으로 보여지게 되는 것이다. 이 화면에서 중간중간에 이상한 문구들이 나타나지만 이런것들은 무시하면 된다.

 

이번 글에서는 Hyper-V 설치 및 CoreOS를 설치하기 위한 가상 컴퓨터 생성에 대해 알아보았다. 다음 글에서는 이렇게 나온 CoreOS 설치 화면에서 진행해야 하는 CoreOS 설치에 대해 알아보도록 하겠다.