J-한솔넷

WSL2 + Docker 무지막지하게 느림 본문

웹 개발관련/개발환경

WSL2 + Docker 무지막지하게 느림

jhansol 2023. 8. 29. 06:04

일전에 커뮤니티에서 WSL과 Arcylic DNS Prox 충동 물제 해결 후 WSL2를 이용하여 Docker를 실행하고 있습니다. 그런데, 얼마전에도 "아! 너무 느리다."라는 생각이 들었었는데, 지금 작업에서는 느린 정도가 아니네요. 무엇이 문제인지 인터넷을 검색해보니 WSL2 + Docker 조합이 매우 느리다는 이야기가 있습니다. 다들 WSL 의 I/O 문제로 이야기들을 하고 있습니다. 검색을 해보니 bind mount로 인해 속도 저하가 생기다는 이야기가 가장 신빙성이 있는 것 같습니다. 이것을 해결하기 위해 docker-sync를 사용하라고 되어 있는데, 문제가 되는 환경이 Windows이고, Windows용은 아직 베타고 버그가 많다고 합니다. 하나의 방편으로 WSL을 이용한 방법이 있기는 하나 적용 방법이 까다롭고 불편하네요.

아래의 화면은 제가 유지보수하는 사이트를 최신 버전의 CMS로 변경 검토를 하기 위해 로컬 개발환경에 설치하는 장면입니다. 과거 Drupal 7.x를 사용하여 개발을 여럿 했으나 지금은 Laravel을 사용하고 있어 Drupal에 대해서는 거의 손을 놓고 있던 상태였습니다.

WSL을 사용하지 않는 것으로 설정하고 Docker를 재실행한 후 다시 작업을 해보고 있습니다. 위 철치작업을 마무리하는데, WSL2를 이용할 때보다 약 2배는 빠른 듯 합니다. 일단 Docker에서는 WSL2를 사용하지 않는 것으로 해둘 생각입니다.

그리고 docker-compose.yml 파일을 아래와 같이 수정하여 데이터베이스 만이라도 docker volume을 사용하도록 해봐야겠습니다.

version: "3.8"
volumes:
    - sql_data

services:
    db:
        image: pig482/mysql:kr
        environment:
            MYSQL_ROOT_PASSWORD: mysql
        ports:
            - 3306:3306
        volumes:
            - sql_data:/var/lib/mysql

    web:
        image: pig482/devenv:p82
        ports:
            - 80:80
            - 443:443
            - 5173:5173
            - 8080:8080
        volumes:
            - .\webroot:/DevHome

외와 같이 수정한 후 점검을 해본 결과는 상당히 많은 차이가 났습니다. 우선 사무실의 맥북과 집에 있는 Windows 11의 PCㅇ[사 테스트해본 결과 도커 볼룸을 이용하는 것이 약 1.5배 정도 빠른 듯 합니다. (단, 이 결과는 저의 각 한번의 테스트 결과임을 알려드립니다.)
이 결과로 미루어 볼 때 Docker Volume과 Bind Mount 사이에는 치이점과 제한 외에 성능 차이도 상당히 많이 납니다. 위와 같이 데이터베이스 부분으로 Docker Volume으로 전환한 것으로 비교적 만족스러운 결과가 나왔습니다. 위의 웹 컨테이너는 외부에서 접근이 자유러워야 해서 이 부분은 성능의 저하가 있더라도 유지를 할 수 밖에 없을 듯 합니다.

'웹 개발관련 > 개발환경' 카테고리의 다른 글

개발환경 보안  (0) 2023.12.01
Laravel Vite를 위한 환경 설정  (0) 2023.08.09
나의 개발환경  (2) 2023.08.08
Windows 환경에서 Arcylic DNS Proxy와 WSL과 충돌 문제  (0) 2023.08.08