在Windows 10上运行Podman | Windows Server 2019 with WSL2

这是续集。
您可以通过以下链接以PDF格式下载本文来支持我们。

以PDF格式下载指南

这是续集。
这是续集。
这是续集。
这是续集。
这是续集。

这是续集。

这是续集。
这是续集。
这是续集。
这是续集。


这是续集。

这是续集。
这是续集。

您可能已经知道,Linux的Windows子系统(WSL)使开发人员可以直接在未经修改的Windows上运行GNU / Linux环境(包括大多数命令行工具,实用程序和应用程序),而不会增加虚拟机的开销。

WSL 2是Linux子系统Windows子系统的新版本,可为Windows子系统在Windows上运行ELF64 Linux二进制文件提供动力,其主要目标是提高文件系统性能以及增加完全的系统调用兼容性。

在开始运行Podman并使其在Windows 10上运行之前,我们必须安装WSL2,获取我们最喜欢的Linux发行版并继续在其中安装Podman,因此该指南将分为两部分。 WSL2和下一部分将处理Podman的安装以及测试。

第1节:为Linux安装Windows子系统

请按照以下步骤安装WSL2并启动并运行最喜欢的Linux发行版。我将使用Ubuntu 20.04。

步骤1:为Linux启用Windows子系统

在Windows上安装任何Linux发行版之前,必须启用“ Linux的Windows子系统”可选功能。

以管理员身份打开PowerShell并运行:

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

这将在Windows中准备好WSL1。要拥有WSL 2,我们必须对其进行更新,如下一步所示。

步骤2:更新至WSL 2

要更新到WSL 2,Windows必须满足以下条件:

  • 运行Windows 10(更新为2004年版本,Build 19041或更高版本)。通过选择Windows徽标键+ R来检查Windows版本,键入winver,然后选择“确定”。
  • 启用“虚拟机平台”可选组件在安装WSL 2之前,必须启用“虚拟机平台”可选功能。

在Windows 10上运行Podman | Windows Server 2019 with WSL2

请注意,如果不满足上述要求,以后将无法正常工作。将Windows 10更新为2004,Build 19041或更高版本。

以管理员身份打开PowerShell并运行:

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

在Windows 10上运行Podman | Windows Server 2019 with WSL2

重新启动计算机以完成WSL安装并更新到WSL 2。

步骤3:安装Linux Distro

重新启动后计算机恢复正常后,打开“微软商店”应用程序并搜索您最喜欢的Linux Distro。我将搜索并安装Ubuntu 20.04

在Windows 10上运行Podman | Windows Server 2019 with WSL2

搜索Ubuntu

在Windows 10上运行Podman | Windows Server 2019 with WSL2

安装Ubuntu 20.04 LTS

在Windows 10上运行Podman | Windows Server 2019 with WSL2

下载时请耐心等待。

在Windows 10上运行Podman | Windows Server 2019 with WSL2

您也可以在安装后启动以确认它是否正常运行。

在Windows 10上运行Podman | Windows Server 2019 with WSL2

然后我们去了!

在Windows 10上运行Podman | Windows Server 2019 with WSL2

系统会要求您输入用户名和密码。

在Windows 10上运行Podman | Windows Server 2019 with WSL2

之后,一切都会变得很好,如下所示。我们已登录并准备进行下一步。

在Windows 10上运行Podman | Windows Server 2019 with WSL2

步骤4:将WSL 2设置为默认版本(可选)

在设置WSL 2版本时,您有两个选择。

选项1: 您可以通过在PowerShell上运行以下命令,将特定的Linux发行版设置为由任一版本的WSL支持

wsl --set-version   

请确保将其替换为发行版的实际名称以及数字“ 1”或“ 2”。您可以随时通过运行与上述相同的命令将其更改为WSL 1,但将“ 2”替换为“ 1’。

您可以通过键入以下命令来检查所有发行版:

wsl --list --all

在Windows 10上运行Podman | Windows Server 2019 with WSL2

选项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/zh-cn/windows/wsl/wsl2-kernel

安装软件包后,再次发出命令,这将需要几秒钟才能完成。

wsl --set-version  Ubuntu-20.04 2

在Windows 10上运行Podman | Windows Server 2019 with WSL2

转换完成后,您可以通过运行以下命令来检查Linux Distro所具有的WSL版本。

wsl -l -v

  NAME            STATE           VERSION
* Ubuntu-18.04    Stopped         1
  Ubuntu-20.04    Stopped         2

在Windows 10上运行Podman | Windows Server 2019 with WSL2

如您所见,我们的Ubuntu 20.04是WSL版本2,而另一个是WSL版本1。您可以根据需要将一种WSL版本转换为另一种版本。

第2节:安装Podman

完成第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已更改为不再自动在用户的主目录中生成配置文件。 在GitHub上发生的这种情况

步骤2:拉出并运行样品容器

运行以下命令以从docker.io中拉出apline

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

现在,让我们运行我们的高山图像,看看它是否响应良好。

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

而且我们的集装箱游得愉快而愉快!

总结一下

我们希望到目前为止,这艘游艇的风帆很棒,并相信您像我们一样喜欢它。因此,我们现在能够在WSL版本2的Linux发行版中运行podman。在航行中以及我们停靠时,您可以点击下面的链接享受另一趟旅程。

使用Podman设置Docker容器注册表并加密SSL

如何在Arch Linux上安装Podman | Manjaro

如何在Debian上安装Podman

在CentOS 8 | RHEL 8上安装和使用Podman

如何在Ubuntu上安装Podman

如何使用Podman和Libpod运行Docker容器

如何使用Buildah构建OCI和Docker容器映像

这是续集。
您可以通过以下链接以PDF格式下载本文来支持我们。

以PDF格式下载指南

这是续集。
这是续集。
这是续集。
这是续集。
这是续集。

这是续集。

这是续集。
这是续集。
这是续集。
这是续集。


这是续集。

这是续集。
这是续集。

Sidebar