Podman讲解

Podman讲解

理解

Podman相当于docker

Podman Desktop用于操作装在虚拟机中的Podman

如果没有WSL2虚拟机,Podman Desktop会自动帮我们创建好并在该虚拟机上安装好podman

任务

现在需要安装podman并在虚拟机上跑一个项目(SQLBot)

先理一下传统命令行方式怎么部署这个SQLBot:

  1. VMware中配置好linux虚拟机
  2. 通过MobaXterm远程连接虚拟机(方便文件操作)
  3. 虚拟机中安装好docker
  4. 将SQLBot压缩包传入虚拟机(这里放在/home/)(传入前最好先修改一下DockerFile,避免构建镜像时一直要调用国外的镜像,极慢)
  5. 解压缩
  6. 构建SQLBot的镜像
  7. 运行容器
  8. 通过访问虚拟机ip:8000使用SQLBot
  9. 配置网络模式(NAT模式改为桥接模式)
bash 复制代码
# 常用命令合集:

# 进入 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-image
  
  docker stop sqlbot-container
  
  docker 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-container

docker images

# 先删容器(否则镜像删不掉)
docker rm -f sqlbot-container

# 再删镜像
docker rmi sqlbot-image
bash 复制代码
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
bash 复制代码

通过上面可以实现本机访问虚拟机中部署的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

  1. 先在Windows下安装好Podman Desktop并下载好SQLBot的压缩包(后续传入虚拟机中)

    打开Podman Desktop后出现问题:

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

    有点慢

  2. 通过Podman Desktop快速生成WSL2虚拟机并在该虚拟机中安装好Podman

    初始化WSL2内核后,点击Continue

    Podman会自动:

    • 下载 Fedora CoreOS 映像

    • 创建并启动 podman-machine-default 虚拟机

    • 完成后即可在 Windows 里 podman pull / build / run(命令行方式)

      powershell 复制代码
      podman machine list
      cd C:\Users\shany\Desktop\SQLBot\SQLBot-main
      podman build -t local/sqlbot .
  3. 在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的使用

相关推荐
java_logo2 小时前
GITLAB Docker 容器化部署指南
linux·运维·数据库·docker·容器·eureka·gitlab
qq_213059432 小时前
CKA认证笔记(1.28版本)
笔记·docker·kubernetes
wxl7812272 小时前
零踩坑部署DeepSeek-OCR API:基于Docker+CUDA 11.8的完整指南
docker·容器·deepseek-ocr
小坏讲微服务2 小时前
K8S 部署 Spring Cloud Alibaba 微服务企业实战完整使用
spring cloud·docker·微服务·云原生·容器·kubernetes·k8s
隐语SecretFlow2 小时前
如何基于Docker集群组网模式来部署Kuscia?
运维·docker·容器
FIT2CLOUD飞致云2 小时前
支持术语、SQL示例、自定义提示词导入导出,SQLBot开源智能问数系统v1.4.0版本发布
ai·数据分析·开源·智能问数·sqlbot
了一梨2 小时前
Docker基础使用
linux·docker·容器
爱吃土豆的马铃薯ㅤㅤㅤㅤㅤㅤㅤㅤㅤ3 小时前
docker打tar包命令
运维·docker·容器
biubiubiu07063 小时前
常用Docker命令
docker·容器·eureka
这儿有一堆花3 小时前
拆解 Docker:只是 Linux 内核的搬运工
linux·docker·容器