탈·Docker Desktop-WSL 2편-

Windows에서 Docker를 사용하면 WSL2+Docker Desktop의 구성이 주류이지만 솔직히 GUI의 기능은 개인이 필요로 하지 않는다.
그리고 저도 리눅스를 사용하고 있기 때문에 가능하면 같은 관리 방법을 사용하고 싶습니다.
따라서 Docker Desktop 사용을 포기하고 WSL에서 Docker를 직접 이동합니다.

아이들에게 잘 주다


본 보도 내용에 근거하여 실시된 업무 결과에 대하여 나는 어떠한 책임도 지지 않는다.
스스로 책임지고 실시하세요.
아울러 이 기사는 기술적 가능성을 철저히 보여'Docker Desktop에 대한 요금을 회피하는 지름길'이라는 해설은 절대 아니다.
지불해야 할 돈은 잘 지불해야 한다.

컨디션


OS

  • 호스트: Windows 11 호스트 Build 22581.1
  • WSL:Ubuntu 20.04.1 LTS
  • Docker Desktop 제거


    혹시 모르니까 컨테이너 다 멈추고 폐기하는 게 좋아요.
    $ docker ps -a
    CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
    
    시작 메뉴에서 Docker Desktop을 찾아 보통 제거합니다.

    성공했어.Close.

    WSL을 다시 시작합니다.PowerShell을 시작하고 다음 명령을 실행합니다.
    주의: 여러 개의 배달을 삽입합니다. 그 중 하나만 다시 시작하려면 다른 명령을 사용하십시오.(참조: https://kagasu.hatenablog.com/entry/2020/01/02/155532)
    > wsl --shutdown
    
    Docker가 제거되었음을 확인합니다.
    $ which docker
    docker not found
    $ which docker-compose
    docker-compose not found
    
    따라서 CLI Plugin의 디렉토리에 기호 링크가 남아 있을 수 있습니다.
    $ ls -l /usr/local/lib/docker/cli-plugins/
    lrwxrwxrwx 1 root root 80 Mar 26 10:35 docker-buildx -> /mnt/wsl/docker-desktop/cli-tools/usr/local/lib/docker/cli-plugins/docker-buildx
    lrwxrwxrwx 1 root root 81 Mar 26 10:35 docker-compose -> /mnt/wsl/docker-desktop/cli-tools/usr/local/lib/docker/cli-plugins/docker-compose
    lrwxrwxrwx 1 root root 78 Mar 26 10:35 docker-scan -> /mnt/wsl/docker-desktop/cli-tools/usr/local/lib/docker/cli-plugins/docker-scan
    
    나중에 장애가 발생할 수 있으므로 삭제합니다.
    $ sudo rm /usr/local/lib/docker/cli-plugins/*
    

    Distrod를 사용한 시스템 유효성 향상


    매크로 패키지 목록을 업데이트합니다.
    $ sudo apt update
    
    Distrod 설치 스크립트를 다운로드합니다.
    이 스크립트는 설치 후 삭제할 수 있습니다.
    $ curl -L -O "https://raw.githubusercontent.com/nullpo-head/wsl-distrod/main/install.sh"
    
    설치 스크립트에 대한 실행 권한을 부여합니다.
    $ chmod +x install.sh
    
    Distrod 설치
    $ sudo ./install.sh install
    (中略)
    Installation is complete!
    
    Distrod 를 설정합니다.
    $ sudo /opt/distrod/bin/distrod enable
    [Distrod] Distrod has been enabled. Now your shell will start under systemd.
    
    WSL에서 로그아웃하고 재부팅한 후 로그인합니다.
    PID1에서 Systemd가 실행 중인지 확인합니다.
    $ ps -aux | head -n 2
    USER         PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
    root           1  4.2  0.1  23040 12348 ?        Ss   13:56   0:01 /sbin/init systemd.setenv=WSLENV=WT_SESSION::WT_PROFILE_ID systemd.setenv=WSL_DISTRO_NAME=Ubuntu systemd.setenv=WSL_INTEROP=/run/WSL/8_interop --unit=multi-user.target
    

    Docker CE 설치


    매크로 패키지 목록을 업데이트합니다.
    $ sudo apt update
    
    필요한 패키지를 설치합니다.(모든 설치가 완료되면 필요 없습니다.)
    $ sudo apt install apt-transport-https ca-certificates gnupg lsb-release
    
    GPG 키 추가
    $ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
    
    Docker의 패키지 웨어하우스를 추가합니다.
    $ echo \
      "deb [arch=amd64 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
    
    패키지 목록을 다시 업데이트합니다.
    $ sudo apt update
    
    Docker CE를 설치합니다.
    $ sudo apt install docker-ce docker-ce-cli containerd.io
    
    Docker가 설치되어 있는지 확인합니다.
    $ docker version
    Client: Docker Engine - Community
     Version:           20.10.14
     (以下略)
    

    Docker 설정 시작


    Systemd를 사용하여 Docker를 시작합니다.
    익숙한 명령이라 자세한 내용은 생략합니다.
    $ sudo systemctl enable docker
    $ sudo systemctl start docker
    $ sudo systemctl status docker
    ● docker.service - Docker Application Container Engine
         Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
         Active: active (running) since Sat 2022-03-26 14:04:06 JST; 2min 54s ago
    TriggeredBy: ● docker.socket
           Docs: https://docs.docker.com
    (以下略)
    

    Docker Compose 설치


    Docker Compose는 기본적으로 포함되지 않습니다.
    $ docker-compose version
    docker: 'compose' is not a docker command.
    See 'docker --help'
    $ docker compose version
    zsh: command not found: docker-compose
    
    넣으세요.{バージョン}를 적절한 버전으로 교체하여 실행하십시오.
    $ sudo curl -L https://github.com/docker/compose/releases/download/{バージョン}/docker-compose-linux-x86_64 -o /usr/local/lib/docker/cli-plugins/docker-compose
    
    최신 버전은 GiitHub의 Releases를 통해 확인할 수 있습니다.
    https://github.com/docker/compose/releases
    현재 버전 2022/3/26v2.3.4을 다운로드하십시오.
    $ sudo curl -L https://github.com/docker/compose/releases/download/v2.3.4/docker-compose-linux-x86_64 -o /usr/local/lib/docker/cli-plugins/docker-compose
    
    집행 권한을 수여한다.
    $ sudo chmod +x /usr/local/lib/docker/cli-plugins/docker-compose
    
    설치를 확인합니다.
    $ docker compose version
    Docker Compose version v2.3.4
    

    Docker Compose 명령


    Docker Compose는 버전 2 시스템에서 Docker의 CLI 플러그인으로 이동합니다.
    이렇게 하면, 연결 문자가 없는 하위 명령으로 호출할 수 있다.
    예전과 마찬가지로 docker-compose 지령을 사용하고 싶다면 ~/.zshrc 등으로 아리스를 미리 맞히는 것은 나무랄 데가 없다.

    끝말


    나는 Systemd의 유효성이 상당히 번거롭다고 생각한다. Distrod는 매우 간단하고 나에게 큰 도움을 주었다.
    이번이 아마 첫 수확일 것이다.

    잊어버리다


    있어요?

    참고 자료

  • 2022-02-13 Sun: Docker Desktop for Windows(WSL2) - hokupod's scraps 의존 중지
  • Docker Desktop에서 WSL2로만 이동하는 Docker로 이동
  • docker/compose: Define and run multi-container applications with Docker
  • nullpo-head/wsl-distrod: Distrod is a meta-distro for WSL 2 which installs Ubuntu, Arch, Debian, Gentoo, etc. with systemd in a minute for you. Distrod also has built-in auto-start feature on Windows startup and port forwarding ability.
  • Distrod를 사용하여 WSL2에서 시스템 이동
  • 좋은 웹페이지 즐겨찾기