본문 바로가기

윈도우 개발환경

윈도우에 만드는 리눅스 개발 환경; 2. 윈도우에 Docker 설치

윈도우에 만드는 리눅스 개발 환경 목차

1. 우분투 리눅스 설치 (윈도우 10)

2. 윈도우에 Docker 설치

3. nvm으로 node.js 설치

4. VSCode 설치

5. Docker로 MySQL시작하기

6. Docker로 MongoDB 시작하기

7. 윈도우 11에 우분투 설치

8. Docker로 PostgreSQL 시작하기

 

윈도우에 만드는 리눅스 개발 환경; 7. 윈도우 11에 우분투 설치

윈도우에 만드는 리눅스 개발 환경 목차 1. 우분투 리눅스 설치 (윈도우 10) 2. 윈도우에 Docker 설치 3. nvm으로 node.js 설치 4. VScode 설치 5. Docker로 MySQL시작하기 6. Docker로 MongoDB 시작하기 7. 윈도우 11

front-it.tistory.com

노트북에서 개발을 좀 더 편리하게 하기 위해, 우분투 리눅스에 이어 docker를 설치한다. 만일, 지난글 "1. 우분투 리눅스 설치"을 따라하지 않았다면, docker를 설치할 수 없으니, 먼저 따라 하시길 바란다.

0. Docker와 Virtual Machine의 차이

지난 글에서 설명한 Virtual Machine환경이 윈도우에서 필요한 이유가

 

  • 윈도우(Host Computer)에 영향을 주지 않고 프로그램을 설치, 삭제, 변경할 수 있다.
  • 현재 사용 중인 OS(운영체제, 윈도우)와 다른 운영체제(GUI 제공환경 포함)를 사용할 수 있다.
  • 하나의 컴퓨터 내에 여러개의 다른 테스트 환경을 만들 수 있다.

가 될 수 있는데, 그럼 왜 추가로 docker를 사용하는 걸까?

이에 대한 해답을 알기 위해서는 docker와 Virtual Machine의 차이에 대해 먼저 알아야 한다.

 

VM과 컨테이너의 차이

Virtual Machine은 윈도우 안에 돌아가는 또 하나의 컴퓨터라고 보면 된다. 따라서, 컴퓨터 처럼 마우스도 있고 비디오카드도 있고 그 위에 다시 OS(예를 들면 우분투)가 있고, 그 위에 내가 만드는 환경이 있다. 완전한 하나의 컴퓨터라고 보면 된다. 그 에 반해 컨테이너(여기서는 docker container만 살펴본다)는 App을 실행하기 위한 최소한의 환경으로 만들어진 OS image를 사용해서 원하는 하나의 실행 환경만을 만드는 실행 환경이다. 다시 말해, 한 Virtual Machine안에는 내 App과 같이 DB도 설치하고, 웹서버도 설치하고, MQ도 설치해도 되지만, 하나의 컨테이너 내에는 App만, DB만, 웹서버만 올린다.

 

Virtual Machine은 Hypervisor가 만들어 놓은 가상의 하드웨어(H/W)를 기반으로 완전한 컴퓨터를 만들기 때문에 어떤 작업을 실행하기 위해서는 컴퓨터를 두 번 거친다고 보면 된다. 반면 docker는 내 노트북의 하드웨어를 내 윈도우의 운영체제를 통해 일부 빌려서 사용한다. 이를 위해 isolation이라는 기술을 사용한다. 쉽게 말해 내가 쓰는 영역을 미리 찜하고 다른 프로그램이 못 쓰게 한 다음 윈도우에서 빌려 쓴다. 예를 들어 내가 docker에 256M크기의  메모리를 할당하면, 이 메모리 영역은 이 docker가 실행되는 동안 다른 프로그램에서 쓰지 못한다. 그래서 docker가 더 가볍고 빠르게 동작한다.

 

하지만 컨테이너가 내 윈도우를 직접 접근하기 때문에 docker에서 권장하지 않는 약간의 변경만으로도 보안에 문제가 생길 수 있다. 물론 상용 docker환경을 사용하면 컨테이너 밖에 또 하나의 벽을 만들고 보다 안전하게 보호할 수 있다.

 

따라서, VM의 이미지는 컴퓨터 전체를 표현하는 이미지이기 때문에, 압축이나 공간 저장 기술을 사용하지 않고 저장하면 크기가 매우 크다. 이에 반해 컨테이너는 App실행을 위한 최소한의 OS기능만을 가지고 있으니, 이미지의 크기가 매우 작다. 당연히 작은 이미지로 최소한의 기능만 실행하니 docker가 더 빠르게 시작한다.

 

또한, Docker가 App실행 환경으로 주로 쓰이기 때문에, App개발사들이 사용자가 쉽게 App을 사용할 수 있는 수단으로 docker이미지를 제공하는 경우가 많아, VM을 사용하는 경우보다 docker를 사용하는 경우 개발에 필요한 프로그램을 쉽게 실행할 수 있는 장점도 얻을 수 있다.

 

이제 화면을 포함해서 컴퓨터 전체 기능이 필요하면 VM을 만들면 되고, App실행환경만을 구성하고 싶다면 docker 컨테이너로 만들면 된다는 것을 알았다.

 

이제 docker에 대해 알았으니, 개발 환경을 만들기 위해 docker desktop을 설치해 보자.

 

1. Docker Desktop 설치

먼저, docker desktop 다운로드 페이지에서 프로그램을 다운로드 받고 실행한다.

 

Download Docker Desktop | Docker

Docker Desktop is available to download for free on Mac, Windows, or Linux operating systems. Get started with Docker today!

www.docker.com

설치는 복잡지 않아 쉽게 설치되는데, "1. 우분투 리눅스 설치"에서 docker를 설치하기 위한 최소한의 단계까지 따라했는데도 docker설치가 되지 않는다면, WSL 2서비스로 다시 시작되지 않은 것이기 때문에 윈도우를 다시 시작해 보자.

 

설치가 완료되면 docker의 실행을 위해 "Close and log out"버튼을 눌러 다시 로그인 하도록 한다.

 

다시 윈도우로 돌아오면, 250명 이상의 회사나 천만불이상의 매출을 가진 회사는 무료로 사용할 수 없다는 법적 고지와 함께 사용자의 동의를 얻는다. 만일 이에 해당된다면 사용을 중지하고 회사 관리자의 승인을 얻기 바란다.

 

Docker desktop이 실행되면 위 화면 캡쳐에서 보이듯이 오른쪽 위에 있는 톱니바퀴 버튼(setup)을 누른다.

 

Setup화면이 뜨면 General섹션이 보이는데, WSL 2 based engine을 기본으로 사용하도록 이미 지정되어 있는 것을 확인할 수 있다. 혹시 지정되어 있지 않는 경우가 있다면 선택하면 된다.

 

이제, 그 아래 Resource섹션을 선택하고 WSL Integration하위 섹션을 선택하면 1단계에서 설치한 WSL distro(우분투 리눅스)에서 docker을 사용할 수 있다. 여기를 선택해야 우분투에서 docker를 사용할 수 있다.

 

이제 윈도우 개발 환경에 필요한 우분투 리눅스과 docker의 설치가 끝났다. docker가 제대로 동작하는지 우분투 리눅스를 실행하고 간단하게 테스트 해보자.

 

Docker desktop화면을 보면 tutorial에 나오는 docker 명령어가 아래와 같이 표시되어 있다.

 

이 명령어를 복사하고 우분투 리눅스에 붙여넣어 실행한다.

 

화면과 같이 실행이 잘 된다면 우분투 리눅스에서 docker가 잘 동작한다는 것이다. 다시 docker desktop으로 돌아가 왼쪽의 Containers섹션을 선택하면,

 

방금 만든 컨테이너가 실행되고 있는 것을 확인할 수 있고, 브라우저 주소창에 localhost를 넣으면 아래와 같은 화면이 나타날 것이다.

 

이제 윈도우에 이것 저것 설치하지 않고도 프론트 엔드, 백 엔드 개발에 사용할 수 있는 환경을 서버와 유사하게 만들 준비가 되었다.

 

다음 글에서는 프론트엔드 개발에 꼭 필요한 node.js를 설치하는 방법을 설명하겠다.