1. Background


Docker Desktop 을 이용하면 간편하게 설치할 수 있지만, 개인 사용자 또는 작은 회사(기준은 잘 모르겠음) 이용자만 무료로 가능하다.

나는 집에서 사용하니까 개인 사용자이긴 하지만, 미리 익숙해질 겸 Docker Desktop이 아닌 방식으로 설치를 해본다.

2. Install


WSL Ubuntu 환경에서 설치해보자.

아래 방법으로 필수 패키지를 설치한다.

$ apt update -y && apt upgrade -y
$ apt install -y ca-certificates curl

#!/bin/bash

echo "Installing Docker in WSL2..."

Update package index

sudo apt-get update

Install prerequisites

sudo apt-get install -y \

    apt-transport-https \

    ca-certificates \

    curl \

    gnupg \

    lsb-release

Add Docker's official GPG key

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

Set up stable repository

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 -y docker-ce docker-ce-cli containerd.io docker-compose-plugin

Add current user to docker group

sudo usermod -aG docker $USER

Start Docker service

sudo service docker start

echo ""

echo "Docker installation complete!"

echo "Please run 'newgrp docker' or log out and back in for group changes to take effect."

echo ""

echo "To test: docker run hello-world"

/etc/init.d/docker: 62: ulimit: error setting limit (Invalid argument) 이걸 왜 -Hn 에서 -H 옵션을 지우니까 해결될까? ws

● WSL 환경에서 이 문제가 해결되는 이유를 설명하겠습니다.

● Read(/etc/init.d/docker) ⎿ Read 15 lines (ctrl+o to expand)

● Bash(ulimit -Hn) ⎿ 1048576

wsl에서는 하드 리밋을 설정하면 안

안되나?

● Bash(ulimit -Sn) ⎿ No (tell Claude what to do differently)

wsl에서는 하드리밋을 설정하면 안되니까 그렇겠지

● 맞습니다! WSL에서 ulimit -Hn으로 하드 리밋을 설정하려고 하면 권한 문제로 실패합니다.

이유:

  1. WSL의 제한사항: WSL은 실제 Linux 커널이 아닌 Windows 커널 위의 호환 레이어이므로, 하드 리밋 변경에 필요한 CAP_SYS_RESOURCE 권한이 제대로 작동하지 않습니다.
  2. 하드 리밋 vs 소프트 리밋: - -H (하드 리밋): 시스템 관리자만 변경 가능, root 권한이어도 WSL에서는 제한됨 - -n (소프트 리밋만): 일반 프로세스가 변경 가능, WSL에서도 작동
  3. 해결 방법: /etc/init.d/docker:62에서 ulimit -Hn 524288을 ulimit -n 524288로 변경하면, 소프트 리밋만 설정하므로 WSL에서도 정상 작동합니다.

WSL2는 실제 Linux VM이지만 여전히 Windows 호스트와의 통합으로 인해 일부 시스템 레벨 작업에 제한이 있습니다.