정리 필요

#!/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

newgrp docker

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 호스트와의 통합으로 인해 일부 시스템 레벨 작업에 제한이 있습니다.