使用WSL2在Windows 10 | Windows Server 2019上运行Podman
正如我们所知道的,因为Linux(WSL)的Windows子系统允许开发人员运行GNU/Linux环境 - 包括大多数命令行工具,实用程序和应用程序 - 直接在Windows上,未经修改,无需虚拟机的开销。
WSL 2是适用于Linux架构的Windows子系统的新版本,为Linux提供Windows子系统来运行Windows上的ELF64 Linux二进制文件。
其主要目标是提高文件系统性能,以及添加完整的系统调用兼容性。
第1节:为Linux安装Windows子系统
按照以下步骤安装WSL2并获得最喜欢的Linux分发和运行。
我将使用Ubuntu 20.04.
第1步:为Linux启用Windows子系统
在Windows上安装任何Linux发行版之前,必须启用"Windows子系统for Linux"可选功能。
以管理员身份打开PowerShell并运行:
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
这将在Windows中具有WSL 1.
要具有WSL 2,我们必须如下一步所示更新它。
第2步:更新到WSL 2
要更新为WSL 2,Windows必须满足以下条件:运行Windows 10,更新为2004版,构建19041或者更高版本。
选中Windows版本通过选择Windows徽标键+ R,执行Winver,选择OK.enable"虚拟机平台"可选组件安装WSL 2之前,必须启用"虚拟机平台"可选功能。
请注意,如果未满足上述要求,请稍后任何工作。
更新Windows 10到2004,构建19041或者更高版本。
以管理员身份打开PowerShell并运行:
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
重新启动计算机以完成WSL安装并更新为WSL 2.
第3步:安装Linux发行版
在重新启动后返回计算机后,打开"Microsoft Store"应用程序并搜索我们喜欢的Linux发行版。
我要搜索并安装Ubuntu 20.04
搜索Ubuntu.
安装Ubuntu 20.04 LTS
在下载时要耐心等待。
如果安装以确认它是健康的,则可以启动。
在那里我们走了!
将要求我们输入用户名和密码。
亲切!
之后,一切都应该如下所示。
我们已登录并准备好下一步。
步骤4:将WSL 2设置为默认版本(可选)
在设置WSL 2版本时,我们有两个选项。
选项1:我们可以通过在PowerShell上运行以下命令,设置要通过任何版本的WSL备份的特定Linux发行版
wsl --set-version <distribution name> <versionNumber>
确保将其替换为分发的实际名称,并使用"1"或者"2"的实际名称。
我们可以随时使用与上面的命令运行相同的命令来返回WSL 1,但用'1'替换'2'。
我们可以通过执行以下命令查看所有发行版:
wsl --list --all
选项2:通过在PowerShell上运行以下命令,我们可以将WSL 2设置为默认的全局体系结构。
wsl --set-default-version 2
我要去选择一个,但你可以自由选择。
wsl --set-version Ubuntu-20.04 2
如果我们收到消息:"WSL 2需要更新到其内核组件。
有关信息,请访问https://aka.ms/wsl2kernel"
单击此链接以下载Linux内核更新包然后安装它。
我们可以在提供的URL上了解更多信息。
https://docs.microsoft.com/en-us/windows/wsl/wsl2-kernel.
安装包后,请再次发出命令。
完成几秒钟即可完成。
wsl --set-version Ubuntu-20.04 2
完成转换后,我们可以通过在下面运行以下命令查看Linux Distras的WSL版本
wsl -l -v NAME STATE VERSION * Ubuntu-18.04 Stopped 1 Ubuntu-20.04 Stopped 2
正如我们所看到的,我们的Ubuntu 20.04在WSL版本2中,而另一个在WSL版本中。
我们可以根据需要将一个WSL版本转换为另一个WSL版本。
第2节:安装船长
一旦完成第1部分,就会启动我们希望安装Podman的发行版(我是Ubuntu-20.04),然后进入下面的步骤。
第1步:添加Podman PPA并安装Podman
开始在Ubuntu上安装Podman的最简单方法是使用Kubic项目。
Kubic项目为Ubuntu 18.04,19.04,19.10和20.04提供了封装。
我们可以轻松地将此包添加到Ubuntu分发中如下所示
. /etc/os-release sudo sh -c "echo 'deb https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/xUbuntu_${VERSION_ID}//' > /etc/apt/sources.list.d/devel:kubic:libcontainers:stable.list" curl -L https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/xUbuntu_${VERSION_ID}/Release.key | sudo apt-key add sudo apt-get update -qq sudo apt-get -qq -y install podman sudo mkdir -p /etc/containers echo -e "[registries.search]\nregistries = ['docker.io', 'quay.io']" | sudo tee /etc/containers/registries.conf
确认我们的Podman是否已成功安装
podman info host: arch: amd64 buildahVersion: 1.14.9 cgroupVersion: v1 conmon: package: 'conmon: /usr/libexec/podman/conmon' path: /usr/libexec/podman/conmon version: 'conmon version 2.0.16, commit: ' cpus: 8 distribution: distribution: ubuntu version: "20.04" eventLogger: file hostname: Kibet-pc idMappings: gidmap: - container_id: 0 host_id: 1000 size: 1 - container_id: 1 host_id: 100000 size: 65536 uidmap: - container_id: 0 host_id: 1000 size: 1 - container_id: 1 host_id: 100000 size: 65536 kernel: 4.19.104-microsoft-standard memFree: 12580970496 memTotal: 13297381376 ociRuntime: name: runc package: 'runc: /usr/sbin/runc' path: /usr/sbin/runc version: 'runc version spec: 1.0.1-dev' os: linux rootless: true slirp4netns: executable: /usr/bin/slirp4netns package: 'slirp4netns: /usr/bin/slirp4netns' version: | slirp4netns version 1.0.0 commit: unknown libslirp: 4.2.0 swapFree: 4294967296 swapTotal: 4294967296 uptime: 1h 36m 59.79s (Approximately 0.04 days) registries: search: - docker.io - quay.io store: configFile: /home/tech/.config/containers/storage.conf containerStore: number: 11 paused: 0 running: 1 stopped: 10 graphDriverName: vfs graphOptions: {} graphRoot: /home/tech/.local/share/containers/storage graphStatus: {} imageStore: number: 2 runRoot: /tmp/run-1000/containers volumePath: /home/tech/.local/share/containers/storage/volumes
我们应该注意,Podman已更改为自动更改为不再自动在用户主目录中生成配置文件。
在这种情况下了解更多关于这个案例的内容。
第2步:拉动并运行示例 容器
运行以下命令以从docker.io中拉lepline
podman pull alpine Trying to pull docker.io/library/alpine... Getting image source signatures Copying blob df20fa9351a1 done Copying config a24bb40132 done Writing manifest to image destination Storing signatures a24bb4013296f61e89ba57005a7b3e52274d8edd3ae2077d04395f806b63d83e
一旦拉,我们可以查看以下所有图像:
podman images REPOSITORY TAG IMAGE ID CREATED SIZE docker.io/library/nginx latest 2622e6cca7eb 8 days ago 136 MB docker.io/library/alpine latest a24bb4013296 2 weeks ago 5.85 MB
让我们现在运行我们的Alpine 图像,看看它是否响应了恩典。
podman run -it --rm alpine /bin/sh /# apk update fetch http://dl-cdn.alpinelinux.org/alpine/v3.12/main/x86_64/APKINDEX.tar.gz fetch http://dl-cdn.alpinelinux.org/alpine/v3.12/community/x86_64/APKINDEX.tar.gz v3.12.0-74-gb8f92cf12a [http://dl-cdn.alpinelinux.org/alpine/v3.12/main] v3.12.0-76-ge6ea27f814 [http://dl-cdn.alpinelinux.org/alpine/v3.12/community] OK: 12734 distinct packages available /#
这很漂亮。
我们可以打开另一个终端/实例并检查我们的容器是否正在运行。
podman ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES d47342edeb3c docker.io/library/alpine:latest /bin/sh 2 minutes ago Up 2 minutes ago festive_shtern