MS는 윈도우 OS 환경에서 리눅스를 구동 시킬 수 있도록 WSL2 라는 가상화 서비스를 제공해주고 있습니다. 불편하게 리눅스를 또 다른 PC에 설치하거나 듀얼 부팅 구조를 만들거나 하지 않아도 된다는 것입니다. 개발 환경과 운영 환경 구축을 위해 docker 를 써보려 했는데 wsl2를 통해 쉽게 이 문제를 해결 할 수 있었습니다.
WSL2 설치
WSL2 란?
WSL 2는 Linux용 Windows 하위 시스템 아키텍처의 새로운 버전으로, Linux용 Windows 하위 시스템이 Windows에서 ELF64 Linux 이진 파일을 실행할 수 있게 해줍니다. WSL 2의 주 목표는 파일 시스템 성능을 높이고전체 시스템 호출 호환성을 추가하는 것입니다.
이렇게 WSL2 에 대해서 설명을 해주고 있으며 윈도우10이나 윈도우11 등의 윈도우OS 환경에서 추가적인 OS 설치과정없이 WSL 을 이용해 리눅스 환경을 구동시킬 수 있게 해줍니다.
WSL 설치 방법은 MS에서 제공해주는 문서를 참고해보시기 바랍니다.
https://learn.microsoft.com/ko-kr/windows/wsl/install
위 문서를 통해 윈도우11 환경에서 WSL 설치를 마무리했습니다.
Linux 설치
이제 Linux를 설치하고 docker 를 추가로 설치해보겠습니다.
먼저 아래 명령어를 통해 WSL로 설치 가능한 리눅스 종류를 확인해봅니다.
wsl --list --online
설치 가능한 이미지가 제공되는 리눅스 os 종류가 나열됩니다. 전 최상단에 있는 Ubuntu 를 설치해봅니다.
Ubuntu Ubuntu
Debian Debian GNU/Linux
kali-linux Kali Linux Rolling
Ubuntu-18.04 Ubuntu 18.04 LTS
Ubuntu-20.04 Ubuntu 20.04 LTS
Ubuntu-22.04 Ubuntu 22.04 LTS
OracleLinux_7_9 Oracle Linux 7.9
OracleLinux_8_7 Oracle Linux 8.7
OracleLinux_9_1 Oracle Linux 9.1
SUSE-Linux-Enterprise-Server-15-SP4 SUSE Linux Enterprise Server 15 SP4
openSUSE-Leap-15.4 openSUSE Leap 15.4
openSUSE-Tumbleweed openSUSE Tumbleweed
우분투 설치 명령어는 install 을 이용하면 됩니다.
wsl --install Ubuntu
설치가 완료되면 계정 추가 과정을 거칩니다. user name 과 비밀번호를 지정해주시면 됩니다.
설치된 우분투 버전은 22.04.2 입니다.
여기까지가 리눅스 설치 과정입니다. 쉬워도 너무 쉽네요
Ubuntu 명령어를 통해 리눅스 시스템에 접근합니다. 별다른 비밀번호 없이 바로 접근이 됩니다.
또는 윈도우 검색창에 ubuntu 를 입력해보면 아래와 같이 Ubuntu 앱을 볼 수 있습니다. 이 아이콘을 클릭해서도 접속이 가능합니다.
docker 설치
아래 명령어를 통해 도커를 설치해줍니다. 설치 진행과정에 비밀번호를 물어오면 입력해주면 됩니다.
얼마지나지 않아 모든 설치가 완료됩니다. 이렇게 도커 설치까지 끝냈습니다. 정말 쉽네요
curl -sSL get.docker.com | sh
버전확인을 해보니 24.0.2 버전입니다.
quant@X300-4650G:~$ docker --version
Docker version 24.0.2, build cb74dfc
테스트로 docker 에 nginx 이미지를 받아서 컨테이너에 등록해 서비스를 띄워보겠습니다.
먼저 nginx 를 라이브러리 서버에서 당겨옵니다.
docker pull nginx 로 실행하니 permission 문제가 있어서 sudo 로 root 권한으로 실행해줍니다.
nginx:latest 이미지를 설치완료해줍니다.
$ sudo docker pull nginx
Using default tag: latest
latest: Pulling from library/nginx
5b5fe70539cd: Pull complete
441a1b465367: Pull complete
3b9543f2b500: Pull complete
ca89ed5461a9: Pull complete
b0e1283145af: Pull complete
4b98867cde79: Pull complete
4a85ce26214d: Pull complete
Digest: sha256:593dac25b7733ffb7afe1a72649a43e574778bf025ad60514ef40f6b5d606247
Status: Downloaded newer image for nginx:latest
docker.io/library/nginx:latest
docker images를 통해 내려받은 이미지를 확인 할 수 있습니다.
quant@X300-4650G:~$ sudo docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest eb4a57159180 46 hours ago 187MB
이제 ngnix 이미지를 컨테이너에 집어넣고 컨테이너를 실행해서 서비스를 오픈해보겠습니다.
sudo docker run --name=nginx -d -p 8888:80 nginx
--name=컨테이너이름 이며 8888:80 은 외부 8888 포트를 내부 80포트에 맵핑하는 것입니다.
마지막 nginx 는 docker 이미지 이름을 기입해주면 생성과 함께 서비스가 실행되는 것을 확인하실 수 있습니다.
container ls 명령어로 현재 실행중인 컨테이너를 확인하실 수 있습니다.
$ sudo docker container ls
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9741cb27bb0d nginx "/docker-entrypoint.…" 10 minutes ago Up 10 minutes 0.0.0.0:8888->80/tcp, :::8888->80/tcp nginx
브라우저를 띄워 localhost 에 8888 포트로 접근해보면 접속되면서 nginx 환영 메시지가 출력되는 것을 보실수 있습니다.
WSL2 를 이용해 리눅스 설치부터 docker 설치, 그리고 테스트 서비스까지 띄워보았습니다. docker 에 개발환경을 구축하려고 한번 진행해본 과정이며 docker desktop 을 이용하기로 해서 일단은 과정을 정리하는 차원에서 남겨봅니다.