安装 podman 与 podman-compose

安装 podman 与 podman-compose

文章目录


www.zeeklog.com - 安装 podman 与 podman-compose

Github

官网

文档

Podman 简介

Podman 是一个用于管理容器和容器镜像的工具,它允许用户创建、运行和管理容器和容器集群。Podman 的设计目标是提供一个无守护进程(daemon-less)的容器管理体验。

兼容性: Podman 旨在与 Docker CLI 兼容,这意味着你可以使用类似的命令来操作容器和镜像。例如,podman run 与 docker run 执行的功能类似。

无守护进程: Podman 的一个重要特点是它不需要一个持续运行的守护进程。每个 Podman 命令都是一个单独的进程,这使得 Podman 更加符合系统级别的服务和工具的标准。

Rootless 模式: Podman 支持无根用户(rootless)模式,即使在没有 root 权限的情况下,也可以创建和管理容器。这提升了安全性,因为容器不会以 root 权限运行。

Pod 概念: Podman 支持 Kubernetes 的 Pod 概念,使得在一个 Pod 中运行多个容器变得更为简单。这对于模拟和开发 Kubernetes 环境非常有用。

Podman 与 Docker 区别

守护进程:

  • Docker: 依赖一个持续运行的守护进程(Docker Daemon)来管理容器。
  • Podman: 不依赖守护进程,每个 Podman 命令都是一个独立的进程。这使得 Podman 更加轻量和灵活。

Rootless 支持:

  • Docker: 传统上需要 root 权限来运行守护进程,虽然现在也有一些支持 rootless 模式的功能,但它不是默认设置。
  • Podman: 从设计上支持 rootless 模式,用户可以在没有 root 权限的情况下运行和管理容器。

兼容性和接口:

  • Docker: 拥有自己的 CLI 和 API。
  • Podman: 设计上与 Docker CLI 兼容,许多 Docker 命令可以直接用 Podman 运行。

系统集成:

  • Docker: 在许多 Linux 发行版中通常是一个单独的系统服务,使用 Docker 服务启动和管理容器。
  • Podman: 可以直接集成到系统的服务管理中,而不需要一个持续运行的守护进程。

安全性:

  • Docker: Docker Daemon 以 root 权限运行,这可能带来一些安全风险。
  • Podman: 由于其 rootless 支持,容器的运行和管理可以在没有 root 权限的情况下进行,从而减少了潜在的安全风险。

Podman 安装

下载安装(推荐)

  • Mac环境CLI版本:

brew 安装(Mac)

brew install podman 

Podman 虚拟机

注: 在不支持容器直接运行的系统上(如 macOS 和 Windows)提供容器支持。
podman machine --help # 列出所有 podman 虚拟机 podman machine list # 初始化 podman 默认虚拟机,默认2核cpu、2G内存、100G磁盘 podman machine init # 初始化 podman-vm 虚拟机,默认2核cpu、2G内存、100G磁盘 podman machine init podman-vm # 创建 podman-vm 虚拟机,1核cpu、内存1G 、磁盘50G podman machine init --cpus=1 --memory=1024 --disk-size 50 --rootful podman-vm # 创建 podman-vm 虚拟机,添加挂载目录 podman machine init -v /Users:/mnt/Users 
# 检查虚拟机 podman machine inspect podman-vm 
www.zeeklog.com - 安装 podman 与 podman-compose
# 启动 podman-vm 虚拟机 podman machine start podman-vm # 停止 podman-vm 虚拟机 podman machine stop podman-vm # 删除 podman-vm 虚拟机 podman machine rm podman-vm 
  • 验证 podman 安装
podman info 
# 使用 Podman 访问 podman-vm 虚拟机 podman machine ssh podman-vm 
www.zeeklog.com - 安装 podman 与 podman-compose
# 查看 Podman 虚拟机 podman machine info 
www.zeeklog.com - 安装 podman 与 podman-compose
podman system connection list 
www.zeeklog.com - 安装 podman 与 podman-compose

虚拟机基础

  • 查看虚拟机系统版本
cat /etc/os-release 
www.zeeklog.com - 安装 podman 与 podman-compose
  • 虚拟机内安装软件包
# 帮助命令 rpm-ostree --help # 安装 vim sudo rpm-ostree install vim # 必须重启虚拟机后 vim 才会生效 sudo systemctl reboot 
注: 操作必须要加 sudo
www.zeeklog.com - 安装 podman 与 podman-compose
  • 虚拟机内配置文件目录
cd /etc/containers 
www.zeeklog.com - 安装 podman 与 podman-compose
  • 配置镜像源
sudo vim /etc/containers/registries.conf 
unqualified-search-registries = ["registry.fedoraproject.org", "registry.access.redhat.com", "docker.io"] 
  • 搜索镜像
# 默认在 docker.io 中搜索 podman search nginx # 指定在 docker.io 中搜索 podman search docker.io/nginx 
www.zeeklog.com - 安装 podman 与 podman-compose

rootful 模式

特权操作: 某些容器操作需要 root 权限,例如绑定挂载到主机的特定文件系统或网络配置。
在 rootful 模式下,可以允许容器做更多系统级的操作,类似于传统的 Docker 守护进程模式。

兼容性: 某些旧的应用程序或容器镜像可能依赖于 root 权限的特性。

集成: 与传统的 Docker 环境更好地集成和兼容,特别是那些对 root 权限有特定要求的应用程序。

podman machine set --rootful podman-vm 
当使用 --rootful 选项时,Podman 将在虚拟机中以 root 权限运行容器管理服务。默认情况下,Podman 在虚拟机中通常以 rootless 模式运行,即无需 root 权限就能操作容器。

Podman 镜像与容器

注: Podman 操作命令兼容 Docker 命令。
podman pull mysql:5.7 
www.zeeklog.com - 安装 podman 与 podman-compose
podman images 
www.zeeklog.com - 安装 podman 与 podman-compose
podman rmi mysql:5.7 
www.zeeklog.com - 安装 podman 与 podman-compose
podman ps podman ps -a 
www.zeeklog.com - 安装 podman 与 podman-compose

安装 podman-compose

pip install --upgrade pip pip install podman-compose 
podman-compose -v 

docker-compose.yml

version: '3' services: nginx: image: nginx:1.27 container_name: nginx restart: always ports: - 8080:80 - 443:443 volumes: - /etc/localtime:/etc/localtime - ./nginx/nginx.conf:/etc/nginx/nginx.conf - ./nginx/conf.d:/etc/nginx/conf.d - ./nginx/ssl:/etc/nginx/ssl - ./nginx/logs:/var/log/nginx - ./nginx/html:/usr/share/nginx/html 
注: podman-compose 操作命令兼容 docker-compose 命令。
podman-compose up -d nginx 
www.zeeklog.com - 安装 podman 与 podman-compose

Read more

【OpenClaw从入门到精通】第10篇:OpenClaw生产环境部署全攻略:性能优化+安全加固+监控运维(2026实测版)

【OpenClaw从入门到精通】第10篇:OpenClaw生产环境部署全攻略:性能优化+安全加固+监控运维(2026实测版)

摘要:本文聚焦OpenClaw从测试环境走向生产环境的核心痛点,围绕“性能优化、安全加固、监控运维”三大维度展开实操讲解。先明确生产环境硬件/系统选型标准,再通过硬件层资源管控、模型调度策略、缓存优化等手段提升响应速度(实测响应效率提升50%+);接着从网络、权限、数据三层构建安全防护体系,集成火山引擎安全方案拦截高危操作;最后落地TenacitOS可视化监控与Prometheus告警体系,配套完整故障排查清单和虚拟实战案例。全文所有配置、代码均经实测验证,兼顾新手入门实操性和进阶读者的生产级部署需求,帮助开发者真正实现OpenClaw从“能用”到“放心用”的跨越。 优质专栏欢迎订阅! 【DeepSeek深度应用】【Python高阶开发:AI自动化与数据工程实战】【YOLOv11工业级实战】 【机器视觉:C# + HALCON】【大模型微调实战:平民级微调技术全解】 【人工智能之深度学习】【AI 赋能:Python 人工智能应用实战】【数字孪生与仿真技术实战指南】 【AI工程化落地与YOLOv8/v9实战】【C#工业上位机高级应用:高并发通信+性能优化】 【Java生产级避坑指南:

By Ne0inhk
ARM Linux 驱动开发篇--- Linux 并发与竞争实验(互斥体实现 LED 设备互斥访问)--- Ubuntu20.04互斥体实验

ARM Linux 驱动开发篇--- Linux 并发与竞争实验(互斥体实现 LED 设备互斥访问)--- Ubuntu20.04互斥体实验

🎬 渡水无言:个人主页渡水无言 ❄专栏传送门: 《linux专栏》《嵌入式linux驱动开发》《linux系统移植专栏》 ❄专栏传送门: 《freertos专栏》《STM32 HAL库专栏》 ⭐️流水不争先,争的是滔滔不绝  📚博主简介:第二十届中国研究生电子设计竞赛全国二等奖 |国家奖学金 | 省级三好学生 | 省级优秀毕业生获得者 | ZEEKLOG新星杯TOP18 | 半导纵横专栏博主 | 211在读研究生 在这里主要分享自己学习的linux嵌入式领域知识;有分享错误或者不足的地方欢迎大佬指导,也欢迎各位大佬互相三连 目录 前言  一、实验基础说明 1.1、互斥体简介 1.2 本次实验设计思路 二、硬件原理分析(看过之前博客的可以忽略) 三、实验程序编写 3.1 互斥体 LED 驱动代码(mutex.c) 3.2.1、设备结构体定义(28-39

By Ne0inhk
Flutter for OpenHarmony:swagger_dart_code_generator 接口代码自动化生成的救星(OpenAPI/Swagger) 深度解析与鸿蒙适配指南

Flutter for OpenHarmony:swagger_dart_code_generator 接口代码自动化生成的救星(OpenAPI/Swagger) 深度解析与鸿蒙适配指南

欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.ZEEKLOG.net 前言 后端工程师扔给你一个 Swagger (OpenAPI) 文档地址,你会怎么做? 1. 对着文档,手写 Dart Model 类(容易写错字段类型)。 2. 手写 Retrofit/Dio 的 API 接口定义(容易拼错 URL)。 3. 当后端修改了字段名,你对着报错修半天。 这是重复劳动的地狱。 swagger_dart_code_generator 可以将 Swagger (JSON/YAML) 文件直接转换为高质量的 Dart 代码,包括: * Model 类:支持 json_serializable,带 fromJson/

By Ne0inhk
Linux 开发别再卡壳!makefile/git/gdb 全流程实操 + 作业解析,新手看完直接用----《Hello Linux!》(5)

Linux 开发别再卡壳!makefile/git/gdb 全流程实操 + 作业解析,新手看完直接用----《Hello Linux!》(5)

文章目录 * 前言 * make/makefile * 文件的三个时间 * Linux第一个小程序-进度条 * 回车和换行 * 缓冲区 * 程序的代码展示 * git指令 * 关于gitee * Linux调试器-gdb使用 * 作业部分 前言 做 Linux 开发时,你是不是也遇到过这些 “卡脖子” 时刻?写 makefile 时,明明语法没错却报错,最后发现是依赖方法行没加 Tab;想提交代码到 gitee,记不清 git add/commit/push 的 “三板斧”,还得反复搜教程;用 gdb 调试程序,输了命令没反应,才想起编译时没加-g生成 debug 版本;甚至连写个进度条,都搞不懂\r和\n的区别,导致进度条乱跳…… 其实这些问题,

By Ne0inhk