# WSL, SSH and Docker ## WSL * open windows powershell as administrater ```bash wsl --install -d Ubuntu-20.04 ``` restart, setup username and passwd * go to Desktop ```bash cd /mnt/c/Users/User/Desktop ``` ## SSH * install ssh ```bash sudo apt install -y ssh ``` * create config file ```bash mkdir ~/.ssh vim ~/.sshd/config ``` * edit file content ```bash Host dev HostName xxx.xxx.xxx.xxx User user Port 22 ForwardX11Trusted ``` type :wq to save * generate ssh key to enable non-password login ```bash ssh-keygen ``` keep pressing enter until it generate a key ``` cat ~/.ssh/id_rsa.pub ssh-copy-id -i ~/.ssh/id_rsa.pub dev ``` enter password ``` ssh dev ``` ## Docker * remove installed packages ```bash for pkg in docker.io docker-doc docker-compose podman-docker containerd runc; do sudo apt-get remove $pkg; done ``` * Update the apt package index and install packages to allow apt to use a repository over HTTPS: ``` sudo apt-get update sudo apt-get install -y ca-certificates curl gnupg ``` * Add Docker's official GPG key: ``` sudo install -m 0755 -d /etc/apt/keyrings curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg sudo chmod a+r /etc/apt/keyrings/docker.gpg ``` * Use the following command to set up the repository (remember to change all quotations to straight quotes): ``` echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] \ https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo "$VERSION_CODENAME") stable" \ | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null ``` * Update the apt package index: ``` sudo apt-get update ``` * Install Docker Engine, containerd, and Docker Compose. ``` sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin sudo docker run hello-world ``` check if downlaod success * Using Docker without sudo ``` sudo groupadd docker sudo gpasswd -a ${USER} docker sudo systemctl restart docker sudo chmod a+rw /var/run/docker.sock ``` ### Docker instructions * download image ``` docker pull IMAGE ``` * print all images ``` docker images ``` * run image and mount current directory ``` docker run -it -v $(pwd):/mnt/$(basename $(pwd)) IMAGE ``` * delete an image ``` docker rmi IMAGE ``` * print all (including stopped) container ``` docker ps -a ``` * start a CONTATINER ``` docker start -ia CONTATINER ``` * delete a container ``` docker rm CONTATINER ``` * rename a container ``` docker rename <current_name> <new_name> ```