::: IT인터넷 :::

VirtualBox로 우분투 가상 환경 만들기

곰탱이푸우 2022. 1. 17. 08:20
Docker 이미지를 빌드할 수 있는 환경을 만들기에 앞서, VirtualBox를 이용하여 우분투 가상 환경을 만드는 방법을 정리한다.
 
Docker 컨테이너 내부에서 docker를 설치해도 호스트 PC의 Docker 이미지를 공유해서 사용한다.
Docker는 반가상화 기술을 사용하기 때문으로, 전가상화 방식을 사용하는 VirtualBox나 VMware를 사용하면 해결  가능하다.
물론 시놀로지 NAS에서는 VMM를 사용하면 된다.
 
VMware는 상용 프로그램이라서, 아래 내용은 무료인 VirtualBox에 우분투 20.04 LTS를 설치하여 사용한다.
VMM의 경우 브릿지(Bridge) 모드로 네트워크를 사용하기 때문에, 네트워크 설정 부분은 패스하고 진행하면 된다.

 

 

가상머신 생성 준비

먼저 우분투 운영체제 설치 파일을 다운로드하고, VirtualBox를 설치한다.
 

Ubuntu 다운로드

우분투 공식 홈페이지의 다운로드 페이지에 접속한다.
운영체제는 Ubuntu Desktop을 사용할 것이므로 우측의 다운로드 버튼을 클릭한다.
2021-12-02 현재 20.04.3 LTS 버전이 LTS 중에서는 최신 버전이다.
 
 
화면 우측의 64-bit PC (AMD64) desktop image를 클릭하면 iso 파일이 다운로드 된다.
 
 
 

VirtualBox 설치

가상 환경 사용을 위해 VirtualBox를 설치한다.
VirtualBox에서 최신 버전을 다운로드해서 설치해도 되지만, Ubuntu 20.04인 경우 apt install로도 6.1 버전 설치가 가능하다.
오히려 apt install이 관리하기 편한 만큼, 그냥 apt install로 설치한다.
$ sudo apt update
$ sudo apt install virtualbox

 

아래와 같이 설치가 진행된다.
 

 

설치가 완료되면 virtualbox 명령으로 VirtualBox를 실행한다.
$ virtualbox

 

다음과 같이 실행된 것을 확인할 수 있다.
 
 

가상환경 생성

빌드 이미지 생성을 위한 가상 환경을 생성한다.
 

네트워크 추가

VirtualBox에서 생성하는 가상 환경의 네트워크는 기본적으로 NAT를 사용한다.
가상 머신에서 외부 네트워크에 접근하는 것은 가능하지만, 호스트 PC에서 ssh나 RDP로 접근하는 것이 어렵다.
 
따라서 VirtualBox에 호스트 전용 어댑터 추가를 먼저 진행한다.
 
관련 내용은 아래 포스팅을 참고한다.
VirtualBox의 메뉴에서 파일 - 호스트 네트워크 관리자를 선택한다.
 
아래와 같이 아무것도 없는 것을 확인할 수 있는데, 만들기 버튼을 클릭한다.

 

자동으로 vboxnet0이라는 이름과 함께 호스트 전용 어댑터가 추가 되고, IP는 192.168.56.1이 자동으로 부여된다.
DHCP 서버는 사용하지 않는다. 만약 사용함에 체크가 되어 있다면 체크를 해제한다.
 

가상 이미지 생성

이제 Docker 빌드를 위한 가상 환경 생성을 진행한다.
 
새로 만들기 버튼을 클릭한다.
 
 
가상 머신 만들기 화면이 간단하게 출력되는데, 하단의 전문가 모드를 클릭하면 상세 설정이 가능한 화면으로 전환된다.
가상 환경의 이름과 OS 종류는 Linux, 버전은 Ubuntu (64-bit)로 선택한다.
Docker 이미지 빌드만 진행하고 컨테이너 생성은 하지 않을 것이므로 메모리 공간은 2GB로 지정한다.
메모리가 부족할 경우 나중에 4GB로 변경하면 된다.
 
 
가상 하드 디스크 만들기에서 하드디스크 크기는 50GB로 지정한다.
나머지 옵션은 그대로 두고 만들기를 클릭한다.
 
 
참고로 HDP Sandbox의 Docker 이미지는 3.0 버전은 약 22G, 2.65 버전은 약 20G를 차지한다.
HDP Sandbox 관련 내용은 아래 포스팅을 참고한다.
또한 Python 빌드 에이전트 Docker 이미지는 약 5~6GB 정도 된다.
Python 빌드 에이전트 Docker 이미지 생성은 아래 포스팅을 참고한다.
공식 배포로 제공되는 Docker 이미지들은 대부분 최적화 되어 있어 크기가 1GB 이내로 작은 편이다.
그러나 로컬에서 생성하는 Docker 이미지들은 최적화가 덜 된 상태이기 때문에 크기가 큰 편이다.
특히 Docker 이미지가 10GB가 넘어가면 사용하기 아주 불편하다.
 
이러한 점을 고려하면 50GB는 충분할 것으로 판단된다.
 
만들기 버튼을 클릭하면 가상 머신이 생성된다.
 

네트워크 설정

VirtualBox 환경 설정에서 호스트 전용 어댑터인 vboxnet0를 추가했으므로, 해당 어댑터에 연결하기 위한 네트워크 어댑터를 추가한다.
 
생성한 가상 머신을 선택하고 우측 상단의 설정 버튼을 클릭한다.
 
 
네트워크 메뉴를 클릭하고 상단의 어댑터 2 탭을 선택한다.
네트워크 어댑터 사용하기에 체크하고, 다음에 연결됨 항목에서 호스트 전용 어댑터를 선택한다.
이름 항목에서는 생성한 vboxnet0 를 선택한다.
 

 

 

Docker 빌드 이미지 생성

VirtualBox 설정 변경과 가상 머신 설정을 마쳤으므로, 우분투 데스크톱 운영체제를 설치한다.
 

OS 설치

가상 머신의 설정 화면 좌측의 저장소 메뉴를 선택한다.
컨트롤러 IDE 항목의 비어 있음 부분을 클릭하고, 우측의 디스크 모양을 클릭한다.
 
 
아래와 같은 펼침 메뉴가 나타난다.
디스크 파일 선택을 클릭하고 다운로드한 우분투 iso 파일을 선택한다.
 
 
컨트롤러 IDE 항목의 비어 있음 항목이 선택한 iso 파일명으로 변경 된 것을 확인할 수 있다.
확인 버튼을 눌러 변경한 설정을 저장한다.
 
 
 
가상 머신 설정 버튼의 우측에 있는 시작 버튼을 클릭하여 가상 머신을 시작한다.
 
 
설치 화면이 나타나는데 한국어를 선택하고 다음으로 진행한다.
 
 
Docker 이미지를 빌드 하기 위한 에이전트 생성하는 것이 목적이므로, 최소 설치를 선택한다.
일반적인 사용을 위해 오피스 및 미디어 플레이어가 필요한 경우 일반 설치를 선택한다.
업데이트 다운로드를 체크하면 운영체제를 설치하면서 기본적인 업데이트 적용이 가능하므로 체크한다.
 
 
가상 환경에 설치하는 것이므로 별도의 파티션 설정은 하지 않는다.
디스크를 지우고 Ubuntu 설치 항목에 체크하고 지금 설치를 클릭한다.

 

 

네트워크 설정

가상 환경에서 호스트 전용 어댑터에 연결하여 추가한 네트워크 어댑터 2에 대한 네트워크 설정을 진행한다.

 

IP를 동적으로 할당하는 DHCP를 적용하지 않았기 때문에 아래와 같이 네트워크 연결 실패 메시지가 발생한다.
 
 
우측 상단의 전원 버튼 또는 배터리 버튼을 클릭한다.
유선 연결하는 중을 클릭하여 메뉴를 펼치고, 유선 네트워크 설정 부분을 선택한다.
 

 

좌측의 네트워크 메뉴를 선택하고 이더넷 (enp0s8) 항목을 확인해보면 연결 중으로 표시 된다.
우측에 있는 톱니바퀴 버튼을 클릭한다.
 

 

상단의 IPv4 탭을 선택하고, IPv4 방식은 수동에 체크한다.
그리고 하단의 주소 항목에 IP 주소는 192.168.56.101, 서브넷 마스크는 255.255.255.0, 게이트웨이는 192.168.56.1을 입력한다.
 
 
 
성공적으로 연결되면 연결됨으로 변경 된다.
 

 

터미널에서 ip addr 명령어를 실행해서 실제 IP가 할당되었는지 확인한다.
$ ip addr
 
enp0s8 어댑터에 IP가 192.168.56.101로 되어 있다. 정상적으로 IP가 할당 되었다.
 
 
호스트 PC에서 동일하게 ip addr 명령을 입력하면, VirtualBox 환경 설정에서 새로 생성한 vboxnet0 어댑터가 추가되어 있는 것을 확인할 수 있다.
 
 

hostname 확인

가상 머신의 hostname을 확인한다.
현재는 dockerbuild-VirtualBox로 되어 있다. 향후 Jenkins와 연동할때 변경할 것이므로 현재는 그대로 둔다.
 
 

확장 툴 설치

운영체제 설치 마지막 단계는 VirtualBox에서 제공하는 확장 툴을 설치하는 것이다.
가상 환경에 설치 된 OS에 맞는 기본 드라이버를 설치하여, 해상도 확장과 가상 환경에 필요한 드라이버 설치를 지원한다.
 
상단의 메뉴에서 장치 - 게스트 확장 CD 이미지 삽입 버튼을 클릭한다.
 

 

예전에는 확장 툴 설치 파일을 터미널이나 탐색기를 통해 복사해서 직접 명령어를 입력하여 실행했지만, 최근 버전에서는 윈도우 운영체제처럼 오토런 (Autorun) 기능을 지원한다.
아래와 같은 메시지가 출력되면 실행 버튼을 클릭한다.
 
 
확장 툴 설치를 위해서는 sudo 권한이 필요하다. 
비밀번호를 입력하고 인증 버튼을 클릭한다.
 
 
아래와 같이 터미널이 생성되면서 설치 과정이 진행된다.
설치 과정이 완료되면 엔터 버튼을 입력한다. 창이 자동으로 닫힌다.
 

 

확장 툴 설치가 끝나면 재부팅을 진행한다.
우측 상단의 전원 버튼을 클릭하고 컴퓨터 끄기/로그아웃 → 컴퓨터 끄기 → 다시 시작을 선택하거나, 터미널에서 아래 명령을 실행한다.
$ sudo reboot
 
 

스냅샷 생성

여기까지 완료되면 현재까지 적용 된 항목을 저장하기 위해 스냅샷을 생성한다.
 
혹시라도 이후 설정 과정에서 오류가 발생하거나 잘못 설치하더라도, 스냅샷을 이용하면 빠르게 이전 상태로 되돌릴 수 있다.
바로 이러한 점이 VirtualBox와 같은 전가상화 기반의 가상 환경을 사용하는 이유이기도 하다.
 
상단 메뉴에서 머신 - 스냅샷 찍기 버튼을 클릭한다.
 
 
생성하고자 하는 스냅샷 이름을 입력하고 확인 버튼을 입력한다.
스냅샷 설명에는 현재까지 적용한 내용을 간단하게 적어 놓으면, 나중에 사용할 때 참고하기 좋다.
 

 

가상 머신의 전원이 켜진 상태라면 현재 상태를 저장하기 위해 시간이 더 걸릴 수 있다.
전원을 끈 상태에서 스냅샷을 생성하면 속도도 빠르고 저장 공간도 적게 차지한다.
가급적 전원을 끄고 스냅샷 생성하는 것을 추천한다.
 
이후 포스팅에서는 생성한 가상 환경을 이용하여  Docker 빌드 이미지를 생성하는 방법을 다룬다.
 
아래 포스팅을 참고한다.