다른 서비스
NEW
기획
디자인
개발
프로덕트
아웃소싱
프리랜싱
비즈니스
최근 검색어
전체 삭제
최근 검색어가 없습니다.

개발

WSL2보다 더 간단하게 구축하는 멀티패스와 도커 개발 환경


국내 유명 IT 기업은 한국을 넘어 세계를 무대로 할 정도로 뛰어난 기술과 아이디어를 자랑합니다. 이들은 기업 블로그를 통해 이러한 정보를 공개하고 있습니다. 요즘IT는 각 기업들의 특색 있고 유익한 콘텐츠를 소개하는 시리즈를 준비했습니다. 이들은 어떻게 사고하고, 어떤 방식으로 일하는 걸까요?

 

이번 글은 ‘전 세계 사람들에게 즐거움을 선사하자’는 비전을 바탕으로 게임을 만들고 있는 ‘넷마블’의 기술전략실 이야기입니다. 멀티패스에서 도커 개발 환경을 구축하는 방법에 대해 설명합니다.

 

안녕하세요, 넷마블 기술전략실 조병승입니다.

 

지난번 멀티패스(Multipass) 활용 글이었던 멀티패스 우분투 VM에도 고정 IP를 붙여보자 이후로 거의 반년 넘게 지났네요. 제 직군이 엔지니어가 아니다 보니, 멀티패스를 쓰면서 누적되는 변칙 상황이 많이 생기지 않아서 전해드릴 팁이 많지 않았던 것 같습니다.

 

얼마 전, 넷마블 기술분석팀 박정욱님이 올려주신 도커 데스크톱 없이 구축하는 WSL2와 도커 개발 환경글을 보다가, 멀티패스에서도 이 같은 방법으로 도커를 쓸 수 있으리라는 생각이 들었습니다. 아니나 다를까, 멀티패스에는 모든 것이 이미 준비돼 있었습니다.

 

 

멀티패스가 어색하신 분들도 계시므로, 간략한 해설을 추가해서 도커 개발 환경 구축 방법을 공유합니다. 이하 내용은 WSL2에 대칭되는 부분에 멀티패스를 넣는 만큼, 윈도우 환경을 기준으로 하겠습니다. (맥이나 리눅스에서도 초기 설정 방법은 크게 다르지 않습니다.)

 

도커가 기본 탑재된 우분투 이미지

먼저, 멀티패스에서 설치할 수 있는 우분투 이미지 종류를 살펴보겠습니다. 단순히 버전별 이미지뿐 아니라, 꽤 다양한 프리셋 이미지가 있음을 알 수 있습니다.

 

$ multipass find

 

멀티패스 도커 개발 환경
멀티패스에서 설치할 수 있는 우분투 프리셋 이미지

 

일반 우분투 버전을 설치하고 그 안에 도커 설치를 하나하나씩 하는 방법도 있습니다만, 멀티패스에는 도커 프리셋이 이미 있으므로 이를 활용하면 됩니다. 도커 프리셋 이미지로 VM을 생성합니다.

 

// multipass launch [프리셋 이미지 이름] -n [생성할 VM 이름]
$ multipass launch docker -n dockermtps

Creating dockermtps /
…
Launched: dockermtps

 

멀티패스 도커 개발 환경
멀티패스에서 생성한 VM 확인

 

사실상 도커를 사용하기 위한 코어 기능은 이것만으로 모두 끝났습니다. 윈도우 터미널에서 멀티패스 내부 VM을 직접 실행해서 확인해보면 바로 확인할 수 있습니다.

 

// multipass exec [멀티패스 VM 이름] [실행할 명령어]
$ multipass exec dockermtps docker run hello-world

 

멀티패스 도커 개발 환경
멀티패스 VM 외부에서 도커 실행 확인

 

Alias 설정

이제부터는 더 간편하게 사용하기 위해 필요한 간단 Alias 설정입니다. 윈도우에서 멀티패스 VM 안에 있는 도커를 바로 실행하려면 시스템 환경 변수를 추가해야 합니다. 추가할 변수를 멀티패스에서 받아야 합니다.

 

// multipass alias [멀티패스 VM 이름]:[윈도우에서 실행할 명령어] 
$ multipass alias dockermtps:docker

You'll need to add the script alias folder to your path for aliases to work
without prefixing with `multipass`. For now, you can just do:

In PowerShell:
$ENV:PATH="$ENV:PATH;C:/Users[사용자 이름]/AppData/local/multipass/bin"

Or in Command Prompt:
PATH=%PATH%;C:/Users/[사용자 이름]/AppData/local/multipass/bin

 

바로 복사 붙여넣기로 쓸 수 있는 Alias 설정값을 얻었습니다. 얻은 Alias 설정값을 윈도우 터미널에서 파워셸이나 커맨드 명령에 입력하면 즉시 적용됩니다. 하지만 윈도우 터미널을 종료하고 재실행하거나 재부팅 할 때 Alias 설정값을 잃어버리기 때문에, 매번 다시 설정해야 합니다. 멀티패스 기준에서는 이미 발급한 Alias라서 다시 ‘docker’로는 설정값을 넣을 수 없기 때문에, 한번 발급받았을 때 별도로 Alias 설정값을 보관해야 하는 번거로움이 생깁니다.

 

멀티패스 도커 개발 환경
윈도우 터미널 재실행 시, Alias 설정값을 잃어버림

 

 

시스템 환경 변수 추가

Alias 설정값 자체를 시스템 환경 변수에 등록하면, 위에서 겪은 번거로움조차 없애버릴 수 있습니다. ‘Path’에 디렉터리 값을 추가하면, 모든 설정이 끝납니다.

 

멀티패스 도커 개발 환경
멀티패스 Alias 설정값을 시스템 환경 변수에 추가

 

멀티패스가 준 Alias 설정값에서는 디렉터리 구분자가 ‘/’로 돼 있습니다. 시스템 환경 변수에 복사 붙여넣기 할 때, 윈도우 환경이므로 디렉터리 구분자를 ‘\’로 바꿔야 합니다.

 

// 멀티패스 기본 제공 Alias 설정값
C:/Users/[사용자 이름]/AppData/local/multipass/bin

// 시스템 환경 변수에 넣는 설정값
C:\Users\[사용자 이름]\AppData\local\multipass\bin

 

변경한 설정은 재부팅 없이 바로 적용되므로, 윈도우 터미널만 재실행하면 됩니다. 이제 멀티패스 명령어(multipass exec)를 쓰지 않고 도커 명령어를 바로 쓸 수 있습니다.

 

멀티패스 도커 개발 환경
시스템 환경 변수 추가 후 직접 실행한 결과

 

세팅 끝!

멀티패스에 미리 준비된 도커 프리셋 이미지로 VM을 설치하고, Alias 설정값을 시스템 환경 변수에 추가한 것으로 모든 세팅이 끝났습니다.

 

 

포테이너(Portainer)

도커 데스크톱 애플리케이션과 대칭되는 기능은 포테이너(Portainer.io)로 대처해서 쓸 수 있습니다. 마침 도커 프리셋 이미지에 기본 탑재돼 있으므로, 9000번 포트로 접속해서 사용하시면 됩니다.

 

만약 9000번 포트로 포테이너에 접속해서 만나는 최초 화면에서 “Your Portainer instance timed out for security purposes. To re-enable your Portainer instance, you will need to restart Portainer.”라는 에러 메시지를 만난다면, 안내 문구 그대로 포테이너 컨테이너를 재실행하면 최초 관리자 계정 설정 페이지를 볼 수 있습니다. (멀티패스 공식 문서에서는 IP 주소가 10으로 시작해야 한다고 돼 있지만, 10으로 시작하지 않고 172로 시작하는 사설 IP 주소를 쓰셔도 무방합니다.)

 

$ docker ps

CONTAINER ID   IMAGE                    COMMAND        CREATED       STATUS          PORTS
                             NAMES
a2549c1bc6ea   portainer/portainer-ce   "/portainer"   4 hours ago   Up 57 seconds   8000/tcp, 9443/tcp, 0.0.0.0:9000->9000/tcp, :::9000->9000/tcp   portainer


$ docker restart portainer

portainer

 

멀티패스 도커 개발 환경
포테이너 최초 접속 화면

 

물론, 필요 없으신 분들은 바로 삭제하시면 됩니다.

 

$ docker rm -f portainer

 

 

정말 끝!

이게 정말 끝인지 Nginx를 설치해서 한번 확인해 보겠습니다.

 

$ docker run --name mtpsnginx -p 80:80 -d nginx

 

멀티패스 도커 개발 환경
Nginx 설치 후 접속 확인

 

WSL2에서 겪었던 과정 대비 정말 간단히 끝나지 않았나요? 개인적으로 WSL2에서 멀티패스 환경으로 넘어온 이후, 가장 만족감이 높았던 순간이 떠올라서 이렇게 간단히 정리해 봤습니다.

 

멀티패스와 WSL2는 아직은 완벽히 동급 성능을 내는 VM이 아닙니다. 기반 엔진으로 Hyper-v를 쓰는 것은 같지만, 윈도우 안에서 동작하는 방법에 차이가 있기 때문에 멀티패스가 모든 상황에서 WSL2에 대칭되긴 어려울 수 있습니다. 간편하게 쓰려고 하나둘 살펴보면서 대칭되는 기능을 찾다 보니, 몇 가지 비교할 부분이 보였을 뿐입니다.

 

WSL2에서 도커 환경을 구축하기 위해 필요했던 다소 긴 설정 과정이 귀찮은 분들이 계신다면, 멀티패스가 새로운 대안이 될 수 있기를 바랍니다.

 

<원문>

WSL2보다 더 간단하게 구축하는 Multipass와 도커 개발 환경

댓글 0

넷마블 기술 블로그

넷마블 기술 블로그(https://netmarble.engineering)는 ‘넷마블’이라는 엔진을 기술로 다듬고 개선하는 과정과 그 과정을 이끌어 가는 엔지니어의 이야기를 전하는 넷마블 엔지니어의 플레이 그라운드입니다.

같은 분야를 다룬 글들을 권해드려요.

요즘 인기있는 이야기들을 권해드려요.

일주일에 한 번!
전문가들의 IT 이야기를 전달해드려요.

[구독하기] 버튼을 누르면 개인정보 처리방침에 동의됩니다.

일주일에 한 번! 전문가들의 요즘IT 이야기를 전달해드려요.

[구독하기] 버튼을 누르면 개인정보 처리방침에 동의됩니다.