정리 필요
#!/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으로 하드 리밋을 설정하려고 하면 권한 문제로 실패합니다.
이유:
- WSL의 제한사항: WSL은 실제 Linux 커널이 아닌 Windows 커널 위의 호환 레이어이므로, 하드 리밋 변경에 필요한 CAP_SYS_RESOURCE 권한이 제대로 작동하지 않습니다.
- 하드 리밋 vs 소프트 리밋: - -H (하드 리밋): 시스템 관리자만 변경 가능, root 권한이어도 WSL에서는 제한됨 - -n (소프트 리밋만): 일반 프로세스가 변경 가능, WSL에서도 작동
- 해결 방법: /etc/init.d/docker:62에서 ulimit -Hn 524288을 ulimit -n 524288로 변경하면, 소프트 리밋만 설정하므로 WSL에서도 정상 작동합니다.
WSL2는 실제 Linux VM이지만 여전히 Windows 호스트와의 통합으로 인해 일부 시스템 레벨 작업에 제한이 있습니다.