WSL2λ Windows μ΄μ 체μ μμμ μ€νλλ κ°μ νκ²½μ μ 곡νλ κΈ°μ μ΄λ€
κ°μ νκ²½ λ΄μμ 리λ
μ€ μ»€λμ΄ λμνκ³ λ¦¬λ
μ€ λ°°ν¬ν (μ: Ubuntu, Debian, CentOS λ±)μ
μ€νν μ μλλ‘ ν΄μ€λ€
WSL2λ Windowsμ Linux μ¬μ΄μ νΈνμ±μ μ 곡νκΈ° μν Windowsμ μλΈμμ€ν
κΈ°μ μ΄λ€
μ΄λ₯Ό ν΅ν΄ Windows μ»΄ν¨ν°μμ 리λ
μ€ νλ‘κ·Έλ¨κ³Ό λͺ
λ Ήμ μ€νν μ μμΌλ©°
리λ
μ€μ Windows κ°μ νμΌ κ³΅μ μ ν΅ν©μ΄ κ°λ₯νλ€
WSL2λ₯Ό μ¬μ©νλ©΄ 리λ
μ€ λͺ
λ Ήμ μ€ννκ³ λ¦¬λ
μ€ κ°λ° νκ²½μ ꡬμΆν μ μμΌλ©°
λμμ Windows μ΄μ 체μ μμ Windows μ ν리μΌμ΄μ
μ μ€νν μ μλ€
Docker Desktopμ Windows νκ²½μμ Linux 컨ν
μ΄λλ₯Ό μ€ννκΈ° μν΄
WSL2 λλ Hyper-V κΈ°μ μ μ¬μ©νλ€!!
Windows μ΄μ 체μ μ νμ΄νΌλ°μ΄μ κ°μ λ¨Έμ λͺ¨λν°
(Hypervisor Virtual Machine Monitor)
μ νλ‘μΈμ€ μ€ νλ
WSL2λ₯Ό μ¬μ©νλ©΄ Windowsμ Linux μ¬μ΄μ λ ν¨μ¨μ μΈ μμ 곡μ κ° κ°λ₯νκ² λμ΄
λ³λμ κ°μ λ¨Έμ μ μμ±νμ§ μκ³ λ Docker μμ§κ³Ό 컨ν
μ΄λλ₯Ό μ§μ μ€νν μ μκ² λ¨!!
μμ½
WSL2λ₯Ό μ€μΉν κ²½μ° Docker Desktopμ΄ ν΅ν©λμ΄ λ¦¬λ μ€ μ»¨ν μ΄λλ₯Ό μ€νν λ
WSL2λ₯Ό μ¬μ©νμ§λ§ λ©λͺ¨λ¦¬ κ΄λ¦¬μ 리μμ€ ν λΉμ μΌλΆ μμ μ μ¬μ ν
Hyper-V μ vmmem.exeκ° λ΄λΉWSL2λ₯Ό λ―Έμ€μΉν κ²½μ° Docker Desktopμ Hyper-V κ°μ λ¨Έμ μ μ¬μ©νμ¬
리λ μ€ μ»¨ν μ΄λλ₯Ό μ€ννκ³ vmmem.exe νλ‘μΈμ€κ° ν΄λΉ Hyper-V κ°μ λ¨Έμ μ
λ©λͺ¨λ¦¬ κ΄λ¦¬μ 리μμ€ ν λΉμ λ΄λΉν©λλ€.
docker desktopμ μ€ννλ©΄ vmmemμ΄ λ©λͺ¨λ¦¬λ₯Ό 무μ§νκ² μ‘μλ¨Ήλλ€
wsl2 λ©λͺ¨λ¦¬ μ체λ₯Ό μ ννλ©΄ λλ€
νμΌνμκΈ°μ %USERPROFILE% λ₯Ό νκ³ λ€μ΄κ° .wslconfig μ΄λ¦μ νμΌμ λ§λ€κ³
λ©λͺ¨μ₯μΌλ‘ μ΄μ΄μmemory=2GB # WSL2 VMμ ν λΉν λ©λͺ¨λ¦¬ swap=0 # WSL2 VMμ μΆκ°ν μ€μ 곡κ°(μ€μ νμΌ μμμ κ²½μ° 0) localhostForwarding=true
μ΄ μ΅μ
μ μΌλΆ λ²μ μ Docker Desktopμμ μ 곡λλ©° μ΄ λͺ¨λμμλ Linux 컀λ λμ
Windows NT 컀λ μμμ μ§μ 컨ν
μ΄λλ₯Ό μ€ννλ€ λ°λΌμ Linux 컀λκ³Ό νΈνλμ§ μλ Windows μ μ© μ ν리μΌμ΄μ
λ€λ λ컀 컨ν
μ΄λ λ΄μμ μ€νν μ μλ€
wsl --list --verbose μ λ ₯νλ©΄ μλμ κ°μ΄ λμ¨λ€
NAME STATE VERSION
* Ubuntu Running 2
docker-desktop-data Running 2
docker-desktop Running 2
Ubuntu Linux λ°°ν¬νμ΄ WSL 2 μμμ μ€ν μ€~
Running μνλ‘ νμλμ΄ μμΌλ―λ‘ νμ¬ μ€ν μ€μΈ κ²μ λνλ
λλ€.
docker-desktop-data
Docker Desktop κ΄λ ¨ λ°μ΄ν°λ₯Ό μ μ₯νκΈ° μν WSL 2 κ°μ λ¨Έμ !
Docker Desktopκ³Ό ν¨κ» μ€μΉλμ΄ Docker 컨ν
μ΄λ λ° κ΄λ ¨ λ°μ΄ν°λ₯Ό μ μ₯νλ μν μ νλ€
docker-desktop
Docker Desktop μμ²΄κ° WSL2λ₯Ό μ¬μ©νμ¬ μ€νλλ€
Docker Desktopμ 컨ν
μ΄λ κ΄λ¦¬ λ° μ€νμ μν λꡬμ΄λ€
docker info μμ§ μ 보
docker -v λ컀 λ²μ
docker pull IMAGE_NAME:TAG Docker νλΈ λλ μ΄λ―Έμ§ μ μ₯μμμ μ΄λ―Έμ§λ₯Ό κ°μ Έμ΄
docker images λ‘컬 μ΄λ―Έμ§ λͺ©λ‘μ νμ
docker rmi IMAGE_NAME:TAG λ‘컬 μ΄λ―Έμ§λ₯Ό μμ
docker build . νμ¬ λλ ν°λ¦¬μ Dockerfileμ μ΄μ©νμ¬ μλ‘μ΄ μ΄λ―Έμ§λ₯Ό λΉλ
(-t μ΅μ
μ μ΄μ©ν΄ νκ·Έ μ΄λ¦ μ§μ κ°λ₯)
docker run IMAGE_NAME:TAG νΉμ μ΄λ―Έμ§λ‘ μλ‘μ΄ μ»¨ν
μ΄λλ₯Ό μμ±νκ³ μ€ν
μ΅μ
μΆκ° κ°λ₯
-d (detached mode), -p (port mapping), -v (volume mapping)
docker ps μ€ν μ€μΈ 컨ν
μ΄λ λͺ©λ‘μ νμ
docker ps -a λͺ¨λ 컨ν
μ΄λ λͺ©λ‘μ νμ
docker start CONTAINER_ID 컨ν
μ΄λ μμ
docker stop CONTAINER_ID 컨ν
μ΄λ μ μ§
docker restart CONTAINER_ID 컨ν
μ΄λ μ¬μμ
docker rm CONTAINER_ID 컨ν
μ΄λ μμ
docker exec -it CONTAINER_ID COMMAND μ€ν μ€μΈ 컨ν
μ΄λ λ΄λΆμμ λͺ
λ Ήμ μ€ν
docker inspect 컨ν
μ΄λ μμΈ μ 보 νμΈ
docker-compose up Docker Composeλ₯Ό μ¬μ©νμ¬ λ€μ€ 컨ν
μ΄λ μ ν리μΌμ΄μ
μ μ€ν
docker-compose down Docker Composeλ‘ μ€ν μ€μΈ μ ν리μΌμ΄μ
μ μ€μ§νκ³ μ»¨ν
μ΄λλ₯Ό μ κ±°
docker logs CONTAINER_ID: 컨ν
μ΄λ λ‘κ·Έλ₯Ό νμν©λλ€.
docker stats CONTAINER_ID: 컨ν
μ΄λμ 리μμ€ μ¬μ©λ λ° μνλ₯Ό μ€μκ°μΌλ‘ νμν©λλ€.
docker network ls: Docker λ€νΈμν¬ λͺ©λ‘μ νμν©λλ€.
docker network inspect NETWORK_NAME: λ€νΈμν¬ μμΈ μ 보λ₯Ό νμν©λλ€.