windows 使用wsl安装docker

Aussise 2024-10-24 17:07:01 阅读 65

前言

       很多情况下代码开发需要依赖 Linux 系统,比如安装 Docker 容器来实现代码隔离,然而问题是大部分同学的电脑都是 Windows 系统,这时就会出现大量报错,经历过的同学一定是边踩坑边落泪。

如何免费拥有一台 Linux 服务器呢?

薅各大云厂商的羊毛,很多厂商对学生都会有优惠,羊毛不薅白不薅,不过问题是不可能让你一直白嫖啊,你总有花钱的时候。在自己的 Windows 电脑上安装一个 Linux 子系统,随时随地都能本地跑代码,装好一次一劳永逸,针对初学 Linux 开发来说足够使用了。

那么,如何在 Windows 电脑上安装 Linux 子系统呢? 这里也有两种方式:

安装虚拟机软件,比如 VMware Workstation Player使用自带的WSL,Windows Subsystem for Linux

对于早期的 Win 操作系统,通常都会采用第一种方式进行安装,而对于 Win10 Win11 系统来说,笔者优先推荐第2种方式,原因下面说,本篇文章我会带大家实践第 2 种方式,分分钟时间搞定一台 Linux 服务器!

一、 什么是WSL和WSL2

WSL:全称为Windows Subsystem for Linux,这是微软官方开发的适用于 Linux 的 Windows 子系统,可让开发人员直接在 Windows 上按原样运行 GNU/Linux 环境,且不会产生传统虚拟机或双启动设置开销。

WSL2:具有WSL1的优点,但使用实际的Linux内核,因而性能更好。

WSL有什么优势:

VMware等虚拟机软件资源消耗大、启动慢、运行效率低。WSL几乎能运行完整的操作系统,资源消耗小、启动快、切换快

对于没有用过虚拟机软件安装Linux系统的小伙伴而言,直接无脑用WSL2完事!

二、如何安装

2.1、开启虚拟化

检查cpu是否开启了虚拟化功能,一般是默认开启的,如果没有,就需要进入bios界面打开2

2.2、打开控制面板,进入windows程序和功能,勾选虚拟化平台跟适用于windows的linux子系统

如果没有<code>Hyper-V选项的,按照以下步骤

添加一个文件Hyper-V.bat 添加以下内容,并双击运行后重启电脑

pushd "%~dp0"

dir /b %SystemRoot%\servicing\Packages\*Hyper-V*.mum >hyper-v.txt

for /f %%i in ('findstr /i . hyper-v.txt 2^>nul') do dism /online /norestart /add-package:"%SystemRoot%\servicing\Packages\%%i"

del hyper-v.txt

Dism /online /enable-feature /featurename:Microsoft-Hyper-V -All /LimitAccess /ALL

pause

 查看自己电脑的windows版本是否符合WSL2的要求

        查看自己的操作系统版本:win+R打窗口,输入winver便可得到操作系统的内部版本如下:

如果要使用命令行

 启用适用于Windows的Linux子系统,则以管理员身份打开windows powershell,输入如下指令: 

dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart

 启动虚拟机功能,在安装WSL2之前,必须启动虚拟机功能,同样在power shell中输入如下指令:

dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart

2.3、 根据提示操作,然后重启电脑

2.4、下载Linux内核更新包

检查是否有wsl , 执行wsl --help 命令查看

如果有, 不用在重复安装.设置wsl2默认版本即可,wsl --set-default-version 2 通过该命令设置如没有,则需下载安装 https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi

点击适用于 x64 计算机的 WSL2 Linux 内核更新包下载后,安装即可。

2.5、将 WSL 2 设置为默认版本

在powershell中输入如下指令:

wsl --set-default-version 2

便可将wsl的版本设置为wsl2。这里为了设置生效,重启计算机。

2.6、安装Ubuntu-20.04

我们想要在D盘安装wsl,而不是在C盘,装在C盘虽然启动要快一点,但是不建议,C盘尽量保持干净,任何软件也不要装在C盘,不然后面你的电脑会很卡,后续他要安装的所有东西都会在C盘,后期马上爆红的。具体步骤如下:

2.6.1、在D盘创建文件夹

现在D盘下创建一个名为linux的文件夹。注:这个文件夹的名字以及路径可以自由修改。

2.6.2、下载Ubuntu-20.04

在powershell中进入linux文件夹内,输入如下指令:

<code>Invoke-WebRequest -Uri https://wsldownload.azureedge.net/Ubuntu_2004.2020.424.0_x64.appx -OutFile Ubuntu20.04.appx -UseBasicParsing

这里的https://wsldownload.azureedge.net/Ubuntu_2004.2020.424.0_x64.appx是可变的,根据你想要安装的版本,选择不同的包链接。在这个网址列出的不同Linux子系统的链接地址。回车即可进行下载。

2.6.3、启动Ubuntu-20.04

在powershell中输入如下指令,便可成功创建启动wsl2。

<code>Rename-Item .\Ubuntu20.04.appx Ubuntu.zip

Expand-Archive .\Ubuntu.zip -Verbose

cd .\Ubuntu\

.\ubuntu2004.exe

运行.exe后需要设置用户名和密码,设置完成后即可成功进入wsl

后续如何打开和关闭系统呢:

# 打开

cd D:\linux\Ubuntu

.\ubuntu2004.exe

# 关闭

wsl --shutdown

也可以直接切换控制台,点击下拉箭头,找到Ubuntu

 4. 查看wsl的版本

在powershell中输入如下指令查看wsl的版本:

wsl -l -v

 查看Ubuntu是否启动

查看文件目录

df -h

注意

在上述所有的过程中使用powershell的地方,都要使用管理员身份打开powershell。如果把安装的Linux子系统搞坏了,想要删除怎么办,同样在powershell中输入如下指令便可删除:

<code> wsl --unregister Ubuntu-20.04

三、登陆Linux安装软件

3.0. 如何查看 IP 地址

Windows: 终端输入 <code>ipconfigLinux: 有如下三种方式

ifconfig # 需要 sudo apt install net-tools

hostname -I

ip addr show eth0

 3.1 VScode如何访问Linux

 打开vscode - 安装wsl插件,然后点击左下角的ssh -> Connect to WSL,可以登陆这台 Linux 服务器了

 3.2 安装 <code>ssh(远程登陆+文件传输)

Linux 中安装 ssh:

sudo apt install openssh-server

sudo service ssh start # 启动

sudo service ssh status # 查看启动状态

远程登陆:

ssh user_xxx@172.17.4.63

文件传输:

scp xxx.file user_xxx@172.17.4.63:~/datasets/

此时远程登陆和文件传输,都会出现如下报错:

user_xxx@172.17.4.63: Permission denied (publickey).

这是因为 Linux 拒绝访问,有两种方式解决:

开启密码验证使用密钥认证

3.2.1 开启密码验证

在 Linux 服务器上,vim 打开/etc/ssh/sshd_config,然后修改其中的PasswordAuthentication值为 yes ,然后重启 ssh 服务。

sudo vim /etc/ssh/sshd_config # PasswordAuthentication改为yes

sudo service ssh restart

按  i  进行编辑 ,Esc退出编辑,输入 :wq 退出编辑文件

3.2.2 使用密钥认证

如果你觉得每次都要开启密码认证,非常麻烦,可以考虑使用密钥认证。你需要在Windows机器上生成一个SSH密钥对,然后将公钥添加到 Linux 的<code>~/.ssh/authorized_keys文件中。 具体而言:

首先需要下载并安装Git for Windows,然后打开Git Bash终端:

# windows上生成SSH密钥对

ssh-keygen

在.ssh文件夹中生成了密钥文件,其中id_rsa是私钥,id_rsa.pub是公钥。然后将id_rsa.pub中的内容复制到 Linux 的~/.ssh/authorized_keys文件中。

3.3 安装 Docker

先安装一些依赖

sudo apt update

sudo apt install apt-transport-https ca-certificates curl gnupg-agent software-properties-common -y

添加docker官网 GPG 密钥、设置stable 仓库

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

sudo add-apt-repository \

"deb [arch=amd64] https://download.docker.com/linux/ubuntu focal stable"

正确执行为会打印“OK”。

过程中可能存在问题:报错

curl: (35) OpenSSL SSL_connect: SSL_ERROR_SYSCALL in connection to download.docker.com:443 

gpg: no valid OpenPGP data found.

这说明连接异常,更换阿里云进行配置GPG 密钥(如下图),以及设置stable仓库

curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add -

sudo add-apt-repository \

"deb [arch=amd64] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"

安装 Docker

sudo apt-get update

sudo apt install docker-ce docker-ce-cli containerd.io

安装完成,Docker 服务将会自动启动。你可以输入下面的命令,验证它:

docker --version

sudo systemctl status docker

但安装过程中,可能报错如下:

invoke-rc.d:syntax error: unknown option ".-skip-systemd-native"

dpkg: error processing package docker-ce(--configure):

installed docker-ce package post-installation script subprocess returned error exit status 1

Errors were encountered while processing:

docker-ce

E:Sub-process /usr/bin/dpkg returnedan error code (1)

————————————————

则需执行以下操作:

cd /var/lib/dpkg

sudo mv info info.bak

sudo mkdir info

sudo apt-get install docker-ce docker-ce-cli containerd.io

 查阅安装的版本

如果有需要的话,安装历史版本的docker

apt list -a docker-ce ## 查看 Docker 软件源中所有可用的版本

sudo apt install docker-ce=<VERSION> docker-ce-cli=<VERSION> containerd.io

Docher 版本的固定

如果你想阻止 Docker 自动更新,锁住它的版本:

<span style="color:#000000"><span style="background-color:#fafafa"><code class="language-bash"><span style="color:#dd4a68">sudo</span> apt-mark hold docker-ce</code></span></span>

设置非root用户的权限

默认情况下,只有 root 或者 有 sudo 权限的用户可以执行 Docker 命令。

想要以非 root 用户执行 Docker 命令,需要将用户添加到 Docker 用户组,该用户组在 Docker_ce 软件包安装过程中被创建。输入:

sudo usermod -aG docker $USER   ## $USER是一个环境变量,代表当前用户名。

登出,并且重新登录,以便用户组会员信息刷新。

安装docker-compose

可选,安装命令如下。(实际上就是从github的releases中下载对应系统版本的docker-compose程序文件,授予执行权限即可)

sudo curl -L “https://github.com/docker/compose/releases/download/v2.23.3/docker-compose-linux-$(uname -m)” -o /usr/local/bin/docker-compose

chmod +x /usr/local/bin/docker-compose

docker-compose --version 

Docker的测试

Docker Hub是一个云端服务,主要用来储存 公有和私有源中的 Docker 镜像。默认情况下,Docker可以从 从 Docker Hub 拉取镜像。

运行个docker的hello-word,执行docker命令如下:

docker container run hello-world



声明

本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。