wsl

Windows Subsystem for Linux

Install docker in wsl ubuntu 20.04.6 LTS

   1 sudo apt install apt-transport-https ca-certificates curl gnupg lsb-release
   2 curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
   3 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
   4 sudo apt update
   5 sudo apt install docker-ce docker-ce-cli containerd.io
   6 sudo usermod -aG docker $USER
   7 sudo service docker start
   8 docker run hello-world
   9 sudo apt install net-tools
  10 docker pull vbodocker/cherrypy-test
  11 docker run --rm --name ctest -P -d vbodocker/cherrypy-test   
  12 docker stop ctest
  13 docker system prune -a
  14 docker run --detach --name some-mariadb --env MARIADB_USER=example-user --env MARIADB_PASSWORD=my_cool_secret --env MARIADB_ROOT_PASSWORD=my-secret-pw  mariadb:latest
  15 docker exec -it some-mariadb bash

Install k3s

   1 curl -sfL https://get.k3s.io | sh -
   2 sudo k3s server > /tmp/k3s.log  2>&1 &
   3 sudo chmod 644 /etc/rancher/k3s/k3s.yaml
   4 kubectl get node

Run cherrypy-test in k3s

   1 cd ~
   2 git clone https://github.com/vborrego/cherrypy-test.git
   3 cd cherrypy-test/
   4 cat README.md
   5 kubectl apply -f cherrypy-test-deployment.yaml
   6 curl $(kubectl get services | grep cherry | awk '//{print $3}'):8080
   7 kubectl get services
   8 kubectl get deployment
   9 cat cherrypy-test-deployment.yaml
  10 kubectl delete -f cherrypy-test-deployment.yaml

Certificate issue

Unable to connect to the server: x509: certificate has expired or is not yet valid: current time 2023-12-12T22:48:20Z is after 2023-05-17T21:01:11Z

   1 sudo rm /var/lib/rancher/k3s/server/tls/dynamic-cert.json
   2 sudo kubectl --insecure-skip-tls-verify=true delete secret -n kube-system k3s-serving
   3 kill <k3s pid>
   4 sudo k3s server > /tmp/k3s.log  2>&1 &  
   5 sudo chmod 644 /etc/rancher/k3s/k3s.yaml
   6 kubectl get pods

Install debian in WSL

   1 wsl --install -d Debian
   2 #Installing, this may take a few minutes...
   3 #Please create a default UNIX user account. The username does not need to match your Windows username.
   4 #For more information visit: https://aka.ms/wslusers
   5 #Enter new UNIX username: wsl
   6 #New password:
   7 #Retype new password:
   8 #passwd: password updated successfully
   9 #Installation successful!
  10 wsl -d debian 

   1 sudo apt update         
   2 sudo apt upgrade 
   3 sudo apt install ca-certificates curl gnupg lsb-release apt-transport-https podman 
   4 lsb_release -a 
   5 sudo apt autoremove 
   6 podman run hello-world
   7 curl -sfL https://get.k3s.io | sh -
   8 sudo k3s server > /tmp/k3s.log 2>&1 &
   9 sudo dd if=/dev/zero of=/swapfile1 bs=1024 count=4194304 
  10 sudo chown root:root /swapfile1
  11 sudo /sbin/mkswap /swapfile1
  12 sudo /sbin/swapon /swapfile1
  13 sudo chmod 0600 /swapfile1
  14 sudo update-alternatives --config iptables
  15 #  1            /usr/sbin/iptables-legacy   10        manual mode
  16 sudo k3s server > /tmp/k3s.log 2>&1 &
  17 sudo chmod 644 /etc/rancher/k3s/k3s.yaml 
  18 kubectl get pods 
  19 sudo apt install openjdk-21-jdk
  20 sudo apt install nodejs 
  21 kubectl get node 
  22 cd ~
  23 sudo apt install git 
  24 git clone https://github.com/vborrego/cherrypy-test.git 
  25 cd cherrypy-test/
  26 kubectl apply -f cherrypy-test-deployment.yaml
  27 curl $(kubectl get services | grep cherry | awk '//{print $3}'):8080
  28 kubectl get deployments
  29 kubectl get pods
  30 kubectl logs $(kubectl get pods | tail -1 | awk '//{print $1}')

Install Alpine linux using rootfs

   1 # in windows git bash
   2 wget https://dl-cdn.alpinelinux.org/alpine/v3.24/releases/x86_64/alpine-minirootfs-3.24.2-x86_64.tar.gz
   3 wsl --import Alpine-3-24-2 %USERPROFILE%\Alpine-3-24-2 alpine-minirootfs-3.24.2-x86_64.tar.gz
   4 wsl -d Alpine-3-24-2
   5 cd  ~
   6 apk update
   7 apk add bash sudo nano openssh-client openjdk25 less vim git git-lfs wget curl jq zip unzip maven graphviz docker-engine docker-cli docker-cli-compose aws-cli aws-session-manager-plugin openrc docker docker-openrc containerd runc chromium util-linux openssl py3-pip
   8 adduser wsl
   9 adduser wsl wheel
  10 visudo # uncomment wheel
  11 exit
  12 wsl -d Alpine-3-24-2 -u wsl 
  13 cd ~
  14 whoami
  15 sudo bash 
  16 echo -e "mkdir -p /run/openrc\ntouch /run/openrc/softlevel\napk update\ntouch /run/openrc/softlevel\ntouch /etc/network/interfaces\nservice docker start\n" > /system_startup.sh
  17 chmod 755 /system_startup.sh
  18 echo -e '[user]\ndefault=wsl\n\n[boot]\ncommand="/system_startup.sh"' > /etc/wsl.conf
  19 apk update 
  20 rc-service docker start
  21 rc-update add docker boot 
  22 adduser root docker
  23 addgroup wsl docker 
  24 mkdir -p /run/openrc
  25 touch /run/openrc/softlevel
  26 apk update 
  27 touch /etc/network/interfaces
  28 touch /run/openrc/softlevel
  29 service docker start
  30 exit
  31 exit
  32 wsl -d Alpine-3-24-2 
  33 docker run hello-world
  34 exit
  35 wsl -d Alpine-3-24-2 --shutdown 
  36 wsl -d Alpine-3-24-2 
  37 docker ps
  38 docker run hello-world
  39 exit
  40 wsl --export Alpine-3-24-2 alpine-3-24-2.tar.gz --format tar.gz
  41 wsl --unregister Alpine-3-24-2

WSL rootfs is a tarball

   1 cat ubuntu.tar | docker import - ubuntu-wsl
   2 docker run -it ubuntu-wsl /bin/bash
   3 docker export container > rootfs.tar

WSL, provides the kernel, file system provided by me

Install Slackware based on docker container

   1 docker pull liveslak/slackware
   2 docker run --rm -d -it --name slack15 liveslak/slackware cat 
   3 docker export slack15 > slack15.tar 
   4 cp slack15.tar /mnt/c/Users/userx/
   5 wsl --import slack15 %USERPROFILE%\slack15 %USERPROFILE%\slack15.tar
   6 wsl -d slack15
   7 cd /
   8 cat /etc/os-release
   9 useradd -m -G wheel -s /bin/bash wsl
  10 password wsl
  11 slackpkg update
  12 slackpkg upgrade-all
  13 visudo # uncomment wheel
  14 echo -e '#!/bin/sh \n /etc/rc.d/rc.crond start' > /startup.sh
  15 chmod +x /startup.sh
  16 echo -e "[user]\ndefault=wsl\n\n[boot]\ncommand="/startup.sh"" > /etc/wsl.conf
  17 mv /etc/fstab /etc/fstab.old
  18 touch /etc/fstab
  19 slackpkg install procps elogind nano vim sodium
  20 ps uax
  21 echo -e "export PATH=$PATH:/sbin/:/usr/sbin/\nexport SSL_CERT_FILE=/etc/ssl/certs/ca-certificates.crt\ncd ~\n" > /etc/profile
  22 update-ca-certificates
  23 curl https://www.google.com 
  24 env 
  25 exit
  26 wsl --export slack15 slack15.tar.gz --format tar.gz
  27 wsl -d slack15 --shutdown
  28 wsl --unregister slack15
  29 wsl --list 
  30 wsl --import slack15 %USERPROFILE%\slack15 slack15.tar.gz
  31 wsl -d slack15

wsl (last edited 2026-10-09 23:38:33 by vitor)