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的使用

相关推荐
竹之却19 小时前
CentOS 系列,防火墙相关指令
linux·运维·centos
JadenOliver19 小时前
Docker 守护进程核心配置入口:daemon.json
docker·daemon.json
用户938169125536020 小时前
Ubuntu系统docker错误,failed to do request: Head "https://registry-1.docker.io/v2/...
docker
微风中的麦穗21 小时前
【VMware 17 Pro】虚拟化工具——VMware 17 Pro 详细图文完全指南:专业虚拟化平台的终极解决方案
个人开发·vmware·虚拟化·虚拟机·运维必备·虚拟化平台·vmware17
m0_7482459221 小时前
Docker 容器基本操作
运维·docker·容器
咋吃都不胖lyh21 小时前
Docker 是什么?全面解析容器化技术
运维·docker·容器
阿杰 AJie21 小时前
Docker 常用镜像启动参数对照表
运维·docker·容器
db_cy_20621 天前
Docker+Kubernetes企业级容器化部署解决方案(阶段一)
docker·容器·kubernetes·云计算·负载均衡·运维开发
seasonsyy1 天前
3.虚拟机中安装Win7系统遇到问题及解决
windows·操作系统·vmware·虚拟机
王同学 学出来1 天前
vue+nodejs项目在服务器实现docker部署
服务器·前端·vue.js·docker·node.js