在Windows上安装Podman容器平台做虚拟化

想起之前读大学的时候大家还在捣鼓如何在电脑上安装 Windows+Linux双系统,而如今微软早已发布了WSL(Windows Subsystem for Linux)的方案让两套系统可直接同时运行,真可谓是实现了鱼和熊掌同时可”兼得“。当然今天我们的主角并不是 WSL啦,只不过是需要基于此技术之上来进行操作,实现对我们想要使用的 Podman容器化管理平台支持。

注:如电脑上还没开启 WSL功能的话,请自行搜索网上的教程启动,才能进行接下来的操作。

先来简单说一下为何要捣鼓这个容器化的玩意儿吧,对于开发者来说它并不陌生,可以将复杂的开发环境打包成镜像进行分发来实现快速初始化,相信经历过电脑重装的同学都能深刻体会到一切重头再来的“痛苦”吧。除此之外对于很多刚接触Linux菜鸟来说,WSL虚拟的容器化技术也是为他们提供诸多的便利,再也不用重启操作在不同的操作系统间来回切换操作,也不需要担忧一不小心删除重要文件把系统搞崩掉。而我的初衷便是为能在Linux平台上部署些自己想了解的技术和产品,同时容器化能够很好的帮助我克隆和管理。

但此次并没有选择大家都所熟悉的 Docker技术,在对比之后选取近期比较火热的 Podman技术,这点主要是从自已的初衷点出发考虑,也不想整个太臃肿的软件来满足这小部分的需求。

下面直接引用红帽上对 Podman的说明来对它做个简单的介绍:

Podman(全称 POD 管理器)是一款用于在 Linux® 系统上开发、管理和运行容器的开源工具。Podman 最初由红帽® 工程师联合开源社区一同开发,它可利用 lipod 库来管理整个容器生态系统。

Podman 采用无守护进程的包容性架构,因此可以更安全、更简单地进行容器管理,再加上 Buildah 和 Skopeo 等与之配套的工具和功能,开发人员能够按照自身需求来量身定制容器环境。

来源: redhat-what-is-podman

个人实践下来对它的理解就是:简单,上手快,资源消耗小。从操作性上来说,与Docker命令几乎是全兼容,而且也支持Docker的镜像,所以也不存在迁移工作之类问题。在Windows系统上使用Podman,相比较于Docker来说会更加轻便和快速。在此主要分享下个人的相关实践经验,帮助大家避免踩坑能更好的使用Podman。

安装Podman

直接访问官方网站链接: Poadman ,点击下载按钮分别下载桌面版本和CLI两款安装软件,双击下载好的软件即可完成安装。

创建虚拟机

在Windows环境中需要安装个虚拟机来执行Podman操作,不过默认使用的是在线联机方式下载虚拟机镜像,同时加上国内的网络限制,导致无法正常完成初始化的过程。通过分析下发现Podman使用的是最小化 Fedora来部署的,所以我们可以提前把这个镜像下载到本机准备好,使用命令来指定加载本地的镜像,具体参考如下:

1
2
3
4
5
6
7
podman machine init --cpus 4 -m 4096 --disk-size 40 --image rootfs.tar.xz --now  podman-vm

# --cpus: 处理器的核数
# -m:内存大小,单位为MB
# --disk-size:磁盘空间,单位为GB
# --image:虚拟机镜像地址
# --now:创建完成即启动

注:虚拟机创建的过程可能会比较慢,需要将镜像进行解压再创建,具体视个人机器配置情况解压的速度会有所不同,不过也还好一次创建后续可以无忧使用。

其实如果你只是学习Linux的操作之类的,到这里就可是直接使用啦。通过podman machine ssh podman-vm命令可以登录进到前面创建好的虚拟机中,开始你的Linux系统之旅。要是想尝试些危险的操作,可以继续看下面的容器操作。

创建容器(拉取镜像)

然后就是与Docker操作一样,可以根据自己的需求,到 Docker Hub 寻找合适的镜像来创建容器,可参考如下的命令来操作:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
podman container run -d -it --name alpine-travle3 --hostname alpine-travle3  -v /mnt/c/xxx:/opt -p 8081:8080 docker.io/library/alpine:latest /bin/sh

# -d: 后台运行
# -i:标准输入命令操作
# -t:伪 TTY 输入命令操作
# --name:容器名称
# --hostname:主机名称
# -v:路径映射,Windows路径一般是“/mnt/”开头
# -p:端口映射,前面是本机的端口号,后者是容器的端口号
# docker.io/library/alpine:latest:镜像的名称,考虑到可能会有同名,建议写全路径+版本
# /bin/sh:容器脚本命令,每个容器会不有不同的

桌面管理工具

在Windows系统中软件应用自然是少不了桌面版本,Podman官方也是提供有相应的桌面管理工具,方便用户快速管理虚拟机、容器、镜像等配置操作。不过个人还是喜欢使用命令行的方式,不用另外安装软件操作的速度还更加快些。

总结

整体对于Podman使用下来的感受还是比较流畅的,不管是部署和配置,还是与Docker操作习惯的兼容性,都符合预期的诉求。而且另外Podman也是天生就是支持K8S的集成和Pod集群管理,因此对于容器化服务有更多需求的话,集成Podman也是个不错的方案,值得尝试创新下。

IP签名