Docker desktop zaten yavaş olan kodlama yaptığım makinamı iyice yavaşlatınca, direk WSL'de çalışan linux'a docker'ı elle kurup kullanmayı tercih ettim. Aşağıdaki adımları her seferinde farklı sitelerden bulup ayarlamaktansa buraya yazmayı tercih ettim.
Aşağıdaki komutları docker'sın resmi sitesinde yazan yerlerden aldım. Kısaca docker uygulama bilgilerini Debian yükleme aracı apt'nin güvenli bir şekilde alıp okumasını sağlayıp docker'ı ve docker compose'u yükletiyorum.
# Add Docker's official GPG key:
sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
# Add the repository to Apt sources:
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
Varsayılan olarak açılmıyor, her bağlantığımda otomatik servisin ayağa kalkması için bu ayarı yapmak lazımmış. WSL Debian'da, alışık olduğum systemctl enable, sudo service... gibi komutların çalışmadığını okudum ve biraz da gördüm. Aşağıdaki adımlarla bağlandığım kullanıcıya docker ve docker servisi (dockerd) komutlarını sudo'suz çalıştırma ayarı yapıp, kullanıcı login olunca dockerd komutunun otomatik çalışmasını ayarlıyorum.
- /etc/sudoers dosyasını
sudo visudo
ya dasudo nano /etc/sudoers
ile açın - aşağıdaki metni en sona ekleyin(<KULLANICI_ADINIZ> kısmına WSL2'deki kullanıcı adınızı yazın).
<KULLANICI_ADINIZ> ALL=(ALL) NOPASSWD: /usr/bin/dockerd
- Sonrasında aşağaki komutları tek tek çalıştırarak, oturumunuzla otomatik başlaması gereken ayar komutlarını .bashrc dosyanıza ekletin.
echo '# Start Docker daemon automatically when logging in if not running.' >> ~/.bashrc echo 'RUNNING=`ps aux | grep dockerd | grep -v grep`' >> ~/.bashrc echo 'if [ -z "$RUNNING" ]; then' >> ~/.bashrc echo ' sudo dockerd > /dev/null 2>&1 &' >> ~/.bashrc echo ' disown' >> ~/.bashrc echo 'fi' >> ~/.bashrc
- Son olarak bağlı kullanıcızla her docker komutunda sudo girmemek adına aşağıdaki kodu çalıştırın:
sudo usermod -a -G docker $USER
Linkler: