惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Google DeepMind News
Google DeepMind News
B
Blog RSS Feed
量子位
aimingoo的专栏
aimingoo的专栏
V
Visual Studio Blog
Y
Y Combinator Blog
Vercel News
Vercel News
云风的 BLOG
云风的 BLOG
宝玉的分享
宝玉的分享
Engineering at Meta
Engineering at Meta
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
GbyAI
GbyAI
人人都是产品经理
人人都是产品经理
博客园 - 叶小钗
Stack Overflow Blog
Stack Overflow Blog
大猫的无限游戏
大猫的无限游戏
Microsoft Security Blog
Microsoft Security Blog
B
Blog
Last Week in AI
Last Week in AI
有赞技术团队
有赞技术团队
博客园 - 聂微东
腾讯CDC
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
J
Java Code Geeks

热爱生活与梦想

迁移LeanCloud的Waline评论数据到TiDB/Neon 25年江浙地区暑假自驾游之感慨 使用阿里云灵码继续完成构建 SSL 证书管理器 亲手给儿子做的棒棒糖摩天轮六一礼物 使用腾讯云 CodeBuddy 构建 SSL 证书管理器 修复代码块默认高度相关缺陷 HugoNexT4.7.2 新功能和升级提示 改善代码块折叠和选中功能 支持Github风格的警告样式 新增音乐短代码功能支持 给文章添加摘要和过期提示功能 回顾24年的过去总结 修复Mathjax行内显示公式的问题 给Hugo文章增加阅读更多跳转的锚点定位功能 Win10隐匿的VPN设置和L2TP连接常见错误 Go语言中“糟糕”的日期时间格式化设计 DaoCloud道客提供的免费Docker镜像代理服务 感谢万能淘宝让自己吃到喜欢的美食 WSL运行时遇到未知异常错误无法使用 隐藏的换行符导致Base64加密解密失败 MySQL自带客户端直接免密登录操作 Linux系统中删除目录软链接的注意项 Java程序调用外网API时CA问题 如何不关机重启WSL2恢复虚拟服务 记一次无法弹出移动硬盘的记录 为友情链接添加自动检测脚本 重新激活Github的2FA认证 Linux中使用tar压缩命令排除文件 继续小米手环的健康生活之旅 一次意外的“坠机”引发了我对手机保护壳的深思
在Windows上安装Podman容器平台做虚拟化
凡梦星尘 · 2024-03-17 · via 热爱生活与梦想

想起之前读大学的时候大家还在捣鼓如何在电脑上安装 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。

直接访问官方网站链接: 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签名