[Tip] Windows에서 Docker 가지고 놀기

3 분 소요

상황

  • TensorRT 사용을 위해 오래간만에 Docker 환경을 구성하기로 했다.

  • 단순 기록을 위해서 포스팅하는만큼, 스크린샷을 포함한 친절한 가이드는 아니니 참고부탁드립니다.

과정

  • 1. Windows 10 일 경우, Windows의 업데이트 필요.

    • 확인 방법: 작업 표시줄 내 검색 > PC 정보 > Windows 버전이 21H2 이상임을 확인

      MAE

  • 2. WSL 설치 및 Ubuntu 설치

    • Windows powershell을 관리자 권한으로 실행

    • 아래 명령어 순차적으로 입력

      dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
      dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
      
    • 윈도우 재부팅

    • WSL2 Linux 커널 업데이트 패키지 설치 링크 .

    • Windows power shell에 아래 명령어 입력
      wsl --set-default-version 2
      
    • Microsoft store에서 Ubuntu-18.04를 설치 (일반적으로는 20.04를 사용하는 듯 하지만, 나는 이 후 과정에서 18.04로만 진행이 가능해서 이 버전을 선택)

    • Ubuntu-18.04를 한 번 실행
  • 3. Docker 설치

    • 일반적으로는 Docker for desktop을 많이 사용하지만, wsl을 사용해서 설치한 Ubuntu 내에서 바로 docker를 설치하는 방법이 속도 이슈로 자주 추천되었다.

    • 따라서 나도 WSL-Ubuntu 내에서 Docker를 설치하는 방법을 사용하였다.

    • 나 같은 경우는 설치 중, CUDA를 update 하기 위한 과정에서 오류가 났었다. (sudo apt-get update)

      • sudo cp /var/cudnn-local-repo-ubuntu1804-8.4.1.50/cudnn-local-E3EC4A60-keyring.gpg /usr/share/keyrings/cuda- archive-keyring.gpg로 해결!
    • 아래 명령어 순차적으로 입력

      # Uninstall old versions
      sudo apt-get remove docker docker-engine docker.io containerd runc
      
      # Set up the repository
      sudo apt-get update
      sudo apt-get install \
          ca-certificates \
          curl \
          gnupg \
          lsb-release
      curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
      echo \
        "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
        $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
      
      # Install Docker Engine
      sudo apt-get update
      sudo apt-get install docker-ce docker-ce-cli containerd.io
      
      # Register a user to docker group
      sudo usermod -aG docker $USER
      
      # NVIDIA Container Toolkit
      distribution=$(. /etc/os-release;echo $ID$VERSION_ID) \
        && curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | sudo apt-key add - \
        && curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | sudo tee /etc/apt/sources.list.d/nvidia-docker.list
      
      # Install
      sudo apt-get update
      sudo apt-get install -y nvidia-docker2
      
      # Restart a Docker
      sudo systemctl restart docker
      
  • 4. WSL 내 Docker 정상 동작 확인

    • Microsoft store 내 ‘터미널’ 어플리케이션 설치 추천

    • ‘터미널’ 관리자 권한으로 실행

    • 아래 코드 입력 후 정상 작동 확인

      sudo service docker start
      sudo docker version
      
    • 추가적으로 아래 링크가 Docker를 학습하는데 유용했다.

  • 5. Dockerfile 작성

    • Docker file로 어떤 패키지를 설치할 지 지정하기 전에, 가끔 도메인 관련 이슈로 인터넷에서 package file들을 받을 수 없을 때가 있다.

    • 아래 방법을 통해서 초기화하고 진행하기를 추천한다.

      • 해결방법 (원본 링크)

        $ vi /etc/network/interfaces  열기
        
        dns-nameservers 8.8.8.8 8.8.4.4  추가.
        
        esc + :wq! 저장  닫기
        
        $ vi /etc/resolv.conf  열고
        
        nameserver 8.8.8.8
        
        nameserver 8.8.4.4
        
         추가
        
         .conf 파일이 편집이 안된다면 아래와 같이 진행.
        
        $ rm /etc/resolv.conf ;# to remove the symlink
        
        $ vi /etc/resolv.conf ;# to create a regular file
        
  • 6. Image 및 Container 제작

    • 이미지 제작 명령어

      • docker build -t pytorch-example1 .
    • 컨테이너 제작 명령어

      • 나 같은 경우 실제 로컬 폴더와 컨테이너 내 폴더의 동기화가 필요해서 바인드 마운트 방법을 사용했다.

      • 해당 방법은 링크 를 참조하면 좋다.

      • docker run -v /mnt/c/Users/user/desktop/git/human_display_interaction:/home/user/human_display_interaction -t –gpus all -it –device /dev/bus/usb/002/002 –name pytorch-con realsense-img /bin/bash

  • 7. VS code 동기화

    • 터미널에서 wsl 열고, ‘code .’ 타이핑

    • Extension 설치 (Remote - Containers, Dockers, Docker explorer)

    • Ctrl+Alt+P -> Remote-WSL: New WSL Window 클릭

    • Ctrl+Alt+P -> Remote Containers: Attach to Running Container

    • sudo chown -R user /mnt로 /mnt 전체에 권한을 부여하여, visual studio code에서 모든 디렉토리에 접근 및 수정이 가능하도록 변경한다.

  • 8. WSL 내 Webcam 설치

    sudo apt update && sudo apt upgrade -y && sudo apt install -y build-essential flex bison libgtk2.0-dev libelf-dev libncurses-dev autoconf libudev-dev libtool zip unzip v4l-utils libssl-dev python3-pip cmake git iputils-ping net-tools dwarves
    sudo mkdir /usr/src
    VERSION=5.15.62.1
    sudo git clone -b linux-msft-wsl-${VERSION} https://github.com/microsoft/WSL2-Linux-Kernel.git ${VERSION}-microsoft-standard && cd ${VERSION}-microsoft-standard
    sudo cp /proc/config.gz config.gz
    sudo gunzip config.gz
    sudo mv config .config
    ls -al
    sudo make menuconfig
    sudo make -j$(nproc)
    

태그:

카테고리:

업데이트:

댓글남기기