Windows上使用Podman替代Docker的完整记录"

admin 2026-10-18 06:20:40 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

cover_image

Windows 上使用 Podman 替代 Docker 的完整记录

原创

羽泪云小栈
羽泪云小栈

羽泪云小栈

2026年7月27日 15:54
陕西

在小说阅读器读本章

去阅读

Podman

作为docker-dektop的平替,毕竟有时候老是卡在starting的界面,没有找到什么好的方法

Starting the Docker Engine...

Docker Engine is the underlying technology that runs containers

Windows 上 podman machine 默认无根(rootless)模式,容器内部默认非 root 用户;我们编译 Nginx 需要root权限、需要绑定低端口、gdb 调试,必须切换 rootful

网络:默认仅 127.0.0.1 互通,局域网访问需要额外端口转发;但本地 curl 测试不受影响

架构:podman machine 底层依然是轻量 Linux 虚拟机(和 Docker Desktop 原理类似,不会突然卡在Starting Docker Engine那个初始化死锁)

Dockerfile 完全兼容

下载处:

https://github.com/podman-container-tools/podman

1.windows终端

#powershell 管理员下
winget install Microsoft.WindowsTerminal

可要可不要,比起普通的终端,优点如下:

支持多标签、分屏、自定义字体、透明度,同时打开多个 podman 终端(一边构建镜像,一边进入容器 gdb 调试)。

1.直接按 Ctrl + Shift + T,就能在当前窗口打开一个新的标签页。(包括但不限于cmd、powershell、ubuntu等)

2.按 Ctrl + Tab 可以向右切换,按 Ctrl + Shift + Tab 向左切换。

Alt + Shift + D 垂直分屏 或 Alt + Shift + - (水平分屏)。按 Alt + 方向键 可以在各个分屏间移动焦点。

3.打开方式:开始菜单搜索 终端 或 windows terminal

4.设置默认打开:

设置→默认应用程序→ 选\"windows终端\"

记得点保存,这样的话,无论以后是打开cmd、还是powershell等,都会自动套有windows terminal壳的效果。

其它常见唤醒:

键盘上的 Win + R 键,打开运行对话框,输入 wt 然后回车

效果如下:

2.Podman Windows 客户端 RedHat.Podman

#命令行安装(在C盘,more设置好全局)
winget install RedHat.Podman

#手动安装 (自定义安装,但后续全局需要自己设置)
https://github.com/containers/podman/releases

设置vhdx这个虚拟硬盘文件位置(因为文件可能会很大,所以不放C盘,放D盘)

$targetDir = \"D:\\WSL\\podman-machine\"
$cPodmanPath = \"$HOME\\.local\\share\\containers\\podman\\machine\\wsl\\wsldist\"

# 创建D盘目录
New-Item -Path $targetDir -ItemType Directory -Force
# 如果C盘目录已存在先删除
if(Test-Path $cPodmanPath){Remove-Item $cPodmanPath -Recurse -Force}
# 创建目录联接(Junction)
New-Item -ItemType Junction -Path $cPodmanPath -Target $targetDir

在podman的bin目录中,powershell初始化:

.\\podman machine init --rootful --disk-size 100
.\\podman machine start
.\\podman info

它好像默认是rootless的,可以用rootful

添加成全局变量

# podman.exe 所在bin目录
$podmanPath = \"D:\\Podman\\podman-6.0.2\\usr\\bin\"

# 获取当前系统PATH
$sysPath = [Environment]::GetEnvironmentVariable(\"PATH\", \"Machine\")

# 判断是否已经存在,避免重复添加
if (-not $sysPath.Contains($podmanPath)) {
    $newPath = \"$podmanPath;$sysPath\"
    [Environment]::SetEnvironmentVariable(\"PATH\", $newPath, \"Machine\")
    Write-Host \"已将 $podmanPath 写入系统PATH\"
} else {
    Write-Host \"路径已存在,无需重复添加\"
}

3.配置国内加速器

推荐开tun模式解决。

如果找到可用的国内源,就配置如下:

cmd下,

podman machine ssh
sudo tee /etc/containers/registries.conf <<'EOF'
unqualified-search-registries = [\"docker.io\"]

[[registry]]
prefix = \"docker.io\"
location = \"docker.io\"

[[registry.mirror]]
location = \"https://xxxx\"
EOF

重启服务

exit
podman machine stop
podman machine start

在执行podman build时可能出现:

C:xxxxxx\\AppData\\\\Roaming\\\\containers\\\\registries.conf\": invalid location 'https://xxx': URI schemes are not supported

需要把这个conf文件中的https://去掉

4.其它

#构建容器
podman build -t nginx:cve-2026-42533 .
#容器运行,--rm 一停止就会删除
podman run -p 8999:8999 --rm --name vuln_nginx nginx:cve-2026-42533

#容器shell
podman exec -it vuln_nginx bash
apt update && apt install -y net-tools
#可以使用命令如ifconfig、netstat等

修改 Podman Machine 内部 Linux 的主机名

sudo hostnamectl set-hostname 你想要的主机名

注意主机名如果有下划线如\_,默认没有

5.windows宿主机通信检查

会面临容器启动时,宿主机无法curl访问的问题

宿主机无法访问

后面发现是自己进错shell了,不是容器shell,而是虚拟机shell,

命令为:podman machine ssh

然后

ip addr即可

curl http://172.25.71.34:8999,访问成功

区别在于

podman machine ssh:Podman Machine,虚拟机本身

podman exec -it vuln_nginx bash :容器shell

宿主机(Windows)直接访问的是 Podman Machine(虚拟机),而不是容器

如图:左容器,右虚拟机

如果在 Windows 的 WSL 中运行 Podman,需要检查 WSL 的 IP 地址,并可能需要额外配置端口转发。

(如果上面的情况已经可以解决,那下面可能就用不到了)

podman inspect vuln_nginx | findstr IPAddress
               \"IPAddress\": \"10.88.0.11\",
                         \"IPAddress\": \"10.88.0.11\",
#旧规则删除
netsh interface portproxy delete v4tov4 listenport=8999 listenaddress=*
#管理员模式下cmd
netsh interface portproxy add v4tov4 listenport=8999 listenaddress=0.0.0.0 connectport=8999 connectaddress=10.88.0.11
#显示规则
netsh interface portproxy show all

Windows上使用Podman替代Docker的完整记录" 网络安全文章

Windows上使用Podman替代Docker的完整记录"

本文详细记录了在Windows上使用Podman替代DockerDesktop的完整过程,包括安装Windows终端、通过winget安装Podman客户端、配置虚拟硬盘位置、设置国内镜像加速器以及构建和运行容器的具体步骤。文章重点解决了Podman默认无根模式需切换为rootful、宿主机与容器网络通信等关键问题,并提供了实用的命令和配置示例,为开发者提供了可操作的迁移指南。
Fortinet:AI驱动网络攻击,安全意识培训应聚焦行为重塑,而非认知提升" 网络安全文章

Fortinet:AI驱动网络攻击,安全意识培训应聚焦行为重塑,而非认知提升"

Fortinet报告指出AI驱动攻击使88%企业提升安全意识认知,但仅40%员工具备实操能力,存在巨大能力断层。文章强调安全意识培训应从认知提升转向行为重塑,通过高频次、场景化培训帮助员工在真实风险中做出正确决策。建议企业推行行为导向型培训,覆盖AI钓鱼识别、敏感数据保护等场景,将安全习惯融入日常工作流程以构建组织抗风险韧性。
银狐远控木马恶意IOC分享(一)" 网络安全文章

银狐远控木马恶意IOC分享(一)"

本文分享了银狐远控木马相关的恶意IOC数据,以Base64编码形式提供,建议安全人员解码后直接导入防火墙、IDS或SIEM等设备进行拦截。作者指出流量日志命中这些指标时应立即上机排查。整体为基础的威胁情报共享,缺乏深度分析,附带明显引流话术。
供方质量管控核心要点研究" 网络安全文章

供方质量管控核心要点研究"

本文基于GJB9001C标准系统阐述了供方质量管控核心要点,涵盖质量保证体系建设、生产过程管控、常态化监督及问题闭环管理。强调供方需建立完善质量管理体系、明确质量责任、控制人员设备与原材料,并通过日常监督、专项监督和整改验证实现全链条质量风险防控,确保产品交付质量稳定。
评论:0   参与:  0