Podman讲解
Podman讲解
理解
Podman相当于docker
Podman Desktop用于操作装在虚拟机中的Podman
如果没有WSL2虚拟机,Podman Desktop会自动帮我们创建好并在该虚拟机上安装好podman
任务
现在需要安装podman并在虚拟机上跑一个项目(SQLBot)
先理一下传统命令行方式怎么部署这个SQLBot:
- VMware中配置好linux虚拟机
- 通过MobaXterm远程连接虚拟机(方便文件操作)
- 虚拟机中安装好docker
- 将SQLBot压缩包传入虚拟机(这里放在/home/)(传入前最好先修改一下DockerFile,避免构建镜像时一直要调用国外的镜像,极慢)
- 解压缩
- 构建SQLBot的镜像
- 运行容器
- 通过访问虚拟机ip:8000使用SQLBot
- 配置网络模式(NAT模式改为桥接模式)
# 常用命令合集:# 进入 Dockerfile 所在目录(假设 Dockerfile 在当前文件夹)
cd /path/to/dockerfile目录# 构建镜像,命名为 sqlbot-image,版本标签可加 :v1(可选)
docker build -t sqlbot-image .# 用新镜像创建容器(复用你之前的挂载命令,加 --network host 可访问内网数据库)
docker run -d --name sqlbot-container \-v /home/sqlbot/data/excel:/opt/sqlbot/data/excel \-v /home/sqlbot/data/file:/opt/sqlbot/data/file \-v /home/sqlbot/data/images:/opt/sqlbot/data/images \-v /home/sqlbot/data/logs:/opt/sqlbot/app/logs \-v /home/sqlbot/data/postgresql:/var/lib/postgresql/data \--privileged \--network host \sqlbot-imagedocker stop sqlbot-containerdocker start sqlbot-container# 查看运行中的容器(重点看 STATUS 是否为 Up,PORTS 端口)
docker ps# 查看所有容器(包括已停止的,确认容器是否存在)
docker ps -a# 进入容器终端(大部分 Linux 容器用 /bin/bash,若报错换 /bin/sh)
docker exec -it sqlbot-container /bin/bash
# 退出容器:直接输入 exit 即可,不影响容器运行# 实时查看日志(按 Ctrl+C 停止)
docker logs -f sqlbot-container# 查看最近 100 行日志(避免日志过多刷屏)
docker logs --tail 100 sqlbot-container# 先停止容器(若在运行)
docker stop sqlbot-container# 再删除容器
docker rm sqlbot-containerdocker images# 先删容器(否则镜像删不掉)
docker rm -f sqlbot-container# 再删镜像
docker rmi sqlbot-image


docker run -d --name sqlbot-container \-p 8000:8000 -p 8001:8001 \-v /home/sqlbot/data/excel:/opt/sqlbot/data/excel \-v /home/sqlbot/data/file:/opt/sqlbot/data/file \-v /home/sqlbot/data/images:/opt/sqlbot/data/images \-v /home/sqlbot/data/logs:/opt/sqlbot/app/logs \-v /home/sqlbot/data/postgresql:/var/lib/postgresql/data \--privileged \--network host \sqlbot-image

通过上面可以实现本机访问虚拟机中部署的SQLBot
接下来实现让多台电脑通过内网访问我的虚拟机
这就需要配置VMware中的虚拟网络编辑器

找到VMnet8,然后添加两个端口转发
意味着通过主机ip+主机端口访问虚拟机ip+虚拟机端口
主机端口是后续希望访问宿主机的端口,虚拟机ip和端口是固定的
使用
虚拟机ip:http://192.168.224.128:8000
宿主机ip:http://172.168.11.103:8000
用户名:admin
默认密码:SQLBot@123456
然后再看看怎么使用Podman Desktop或者Docker Desktop快速部署SQLBot
-
先在Windows下安装好Podman Desktop并下载好SQLBot的压缩包(后续传入虚拟机中)
打开Podman Desktop后出现问题:

# 需要先配置windows,ctrl + x打开管理员终端 # 运行下面命令: # 开启Virtual Machine Platform dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart # 初始化WSL2内核: wsl --update # 自动下载最新 WSL2 内核 wsl --shutdown # 重启 WSL 子系统
有点慢

-
通过Podman Desktop快速生成WSL2虚拟机并在该虚拟机中安装好Podman
初始化WSL2内核后,点击Continue
Podman会自动:
-
下载 Fedora CoreOS 映像

-
创建并启动
podman-machine-default虚拟机 -
完成后即可在 Windows 里
podman pull / build / run(命令行方式)podman machine list cd C:\Users\shany\Desktop\SQLBot\SQLBot-main podman build -t local/sqlbot .
-
-
在Windows的Podman Desktop界面中,直接管理WSL2虚拟机内的Podman环境(图形化方式)

总结
后续使用,就只用获取镜像文件,然后打开podman desktop,构建镜像,然后podman desktop会自动去WSL2虚拟机中构建好镜像
如果已经有一个虚拟机了,也可以直接将Podman Desktop和Podman都安装到该虚拟机中,也是通过可视化界面直接操作
WSL2虚拟机和CentOS对比
前者是windows自带的轻量级虚拟机,后者是完整虚拟机
WSL2可以理解为:微软内置的一个“极简版”Linux 虚拟机,专门用来方便地在Windows上跑Linux环境和容器
如果使用的VMware中的centos,要内网访问就需要设置桥接,并用虚拟机自己的ip访问
或者通过配置(端口转发,上面有),然后直接访问宿主机ip
如果使用Potman中的WLS2,则直接访问宿主机ip就可以
问题
注意宿主机的防火墙和虚拟机的防火墙要关闭
通过端口转发,可以实现内网和虚拟机联通,但需要注意容器自身的网络默认是 “隔离” 的,需要手动配置容器网络模式为 host(或通过 --add-host 绑定内网 IP),让容器直接使用宿主机的网络栈,从而能访问内网数据库
本文其实主要还是讲解怎么在VMware + centos7 + docker来部署一个SQLBot
p就可以
问题
注意宿主机的防火墙和虚拟机的防火墙要关闭
通过端口转发,可以实现内网和虚拟机联通,但需要注意容器自身的网络默认是 “隔离” 的,需要手动配置容器网络模式为 host(或通过 --add-host 绑定内网 IP),让容器直接使用宿主机的网络栈,从而能访问内网数据库
本文其实主要还是讲解怎么在VMware + centos7 + docker来部署一个SQLBot
因为我自己对Podman也不咋熟练,不过肯定是能帮到各位了解podman的搭建和回顾docker的使用
