본문 바로가기
공부 및 정리/기타 정리

Docker with WSL

by 스파이펭귄 2023. 4. 16.
728x90

윈도우에서 딥러닝 학습을 위해 Tensorflow나 Pytorch를 설치하는 경우도 있지만, 일반적으로 WSL(Linux) 환경에서 개발을 하기 때문에 Docker를 이용해 이미지를 받아 Tensorflow나 Pytorch 환경을 만드는 편이 훨씬 편하다.

그렇기 때문에 Docker를 통해 WSL에 환경을 생성하는 것을 간단히 정리해보고자 한다.

가장 먼저 WSL에 환경을 만들어야 하기 때문에 WSL을 설치해야한다. WSL 설치는 Microsoft에서 잘 정리해 놓은 글이 있으니 이를 따라서 가면 쉽게 설치 가능하다. (물론 Docker 사용법도 있다.)

https://learn.microsoft.com/ko-kr/windows/wsl/install

 

WSL 설치

wsl --install 명령을 사용하여 Linux용 Windows 하위 시스템을 설치합니다. Ubuntu, Debian, SUSE, Kali, Fedora, Pengwin, Alpine 등 원하는 Linux 배포판에서 실행되는 Windows 머신에서 Bash 터미널을 사용할 수 있습니

learn.microsoft.com

https://learn.microsoft.com/ko-kr/windows/wsl/tutorials/wsl-containers

 

WSL에서 Docker 컨테이너 시작

Linux용 Windows 하위 시스템에서 Docker 컨테이너를 설정하는 방법을 알아봅니다.

learn.microsoft.com

뭐 위 글대로 해도 간단하게 설치가 가능하긴 하지만 어려웠던 점은 Volume을 붙이는 과정이다.

Volume을 붙이지 않으면 휘발성이 있는 공간에 모든 파일들이 저장되어, 매번 데이터를 Docker를 껐다 킬때마다 저장하고, 다시 넣어줘야하는걸 반복해야한다.

이번 포스트에서는 WSL에 존재하는 기존 폴더를 Docker에 Mount하는 방법에 대해 알아보자.

WSL과 VSCode를 설치 한 후 설정에 들어가 General에서 WSL2 기반 엔진 사용을 체크한다.

이후 resources - WSL Integration에서 사용할 Ubuntu 버전을 활성화 해준다.

 

 

이후 VS code를 실행해 Extension에서 Docker를 설치한다.

설치가 완료되면 위 그림과 같이 docker 창이 생성된다.

여기까지 완료했으면 기본적인 것은 끝났다.

 

 

Docker volume 생성하여 Mount 하기

첫번째로는 Docker에서 볼륨을 생성해 Mount하는 방법에 대해 알아보자.

PowerShell에서 아래 명령어를 실행해 volume을 생성한다.

docker volume create 볼륨 이름

docker volume ls
# 도커 볼륨 리스트가 나오며 위에서 설정한 이름이 존재하여야 함.

이후 Vscode의 WSL에 들어가 터미널에서 아래 명령어를 실행한다. (GPU Tensorflow를 사용한다 가정하였음)

docker run --gpus all -v 볼륨 이름:/sharing tensorflow/tensorflow:latest-gpu-jupyter

이때 볼륨 이름은 직전에 docker 볼륨의 이름이며, sharing은 단순히 생성된 컨테이너의 시작 폴더 이름이다.

이 방식으로 생성한 볼륨에 생성되고 저장된 파일들은 \\wsl.localhost\docker-desktop-data\data\docker\volumes\볼륨 이름\_data에 저장되는 것으로 보인다.

그러다면 이번엔 기존 WSL 폴더에 Mount를 하는 방법에 대해 알아보자.

 

기존 폴더에 Mount하기

마찬가지로 VS code를 실행해 Mount하고 싶은 폴더로 이동하여 아래 명령어를 실행한다.

docker run --gpus all -v `pwd`:/sharing tensorflow/tensorflow:latest-gpu-jupyter

이때 'pwd'는 알다시피 현재 폴더의 경로이고, sharing은 생성된 컨테이너의 sharing이라는 폴더와 연결하는 것을 의미한다.

정상적으로 실행되었다면 docker 창으로 가면, 아래와 같이 생성된 컨테이너들을 볼 수 있다.

우클릭을 통해 Attach Visual Studio Code를 클릭하면 간단히 접근 가능하다.

728x90

'공부 및 정리 > 기타 정리' 카테고리의 다른 글

[SQL] DELETE, TRUNCATE, DROP  (0) 2024.04.24
동기, 비동기, Blocking, Non-Blocking  (0) 2024.04.14
CAP 정리  (1) 2024.03.06
트랜잭션과 ACID  (0) 2024.03.05
스프링-MYSQL 프로젝트 EC2에 올리기  (2) 2024.02.06