安装 podman 与 podman-compose

文章目录

  • Github
  • 官网
  • 文档
  • [Podman 简介](#Podman 简介)
    • [Podman 与 Docker 区别](#Podman 与 Docker 区别)
  • [Podman 安装](#Podman 安装)
  • [Podman 虚拟机](#Podman 虚拟机)
  • [Podman 镜像与容器](#Podman 镜像与容器)
  • [安装 podman-compose](#安装 podman-compose)
  • docker-compose.yml

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 安装

下载安装(推荐)

brew 安装(Mac)

bash 复制代码
brew install podman

Podman 虚拟机

注: 在不支持容器直接运行的系统上(如 macOS 和 Windows)提供容器支持。

bash 复制代码
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
bash 复制代码
# 检查虚拟机
podman machine inspect podman-vm 
bash 复制代码
# 启动 podman-vm 虚拟机
podman machine start podman-vm
# 停止 podman-vm 虚拟机
podman machine stop podman-vm
# 删除 podman-vm 虚拟机
podman machine rm podman-vm
  • 验证 podman 安装
bash 复制代码
podman info
bash 复制代码
# 使用 Podman 访问 podman-vm 虚拟机
podman machine ssh podman-vm
bash 复制代码
# 查看 Podman 虚拟机
podman machine info
bash 复制代码
podman system connection list

虚拟机基础

  • 查看当前系统版本
bash 复制代码
cat /etc/os-release
  • 虚拟机内安装软件包
bash 复制代码
# 帮助命令
rpm-ostree --help
# 安装 vim
rpm-ostree install vim
# 必须重启系统后 vim 才会生效
systemctl reboot
  • 虚拟机内配置文件目录
bash 复制代码
cd /etc/containers

rootful 模式

  • 特权操作: 某些容器操作需要 root 权限,例如绑定挂载到主机的特定文件系统或网络配置。

    在 rootful 模式下,可以允许容器做更多系统级的操作,类似于传统的 Docker 守护进程模式。

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

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

bash 复制代码
podman machine set --rootful podman-vm

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

Podman 镜像与容器

注: Podman 操作命令兼容 Docker 命令。

bash 复制代码
podman pull mysql:5.7
bash 复制代码
podman images
bash 复制代码
podman rmi mysql:5.7
bash 复制代码
podman ps
podman ps -a

安装 podman-compose

bash 复制代码
pip install --upgrade pip
pip install podman-compose
bash 复制代码
podman-compose -v

docker-compose.yml

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 命令。

bash 复制代码
podman-compose up -d nginx
相关推荐
颜淡慕潇18 分钟前
【K8S系列】kubectl describe pod显示ImagePullBackOff,如何进一步排查?
后端·云原生·容器·kubernetes
wanmei00224 分钟前
Dockerfile复制目录进入镜像里
docker
inter_peng26 分钟前
[Docker-显示所有容器IP] 显示docker-compose.yml中所有容器IP的方法
tcp/ip·docker·eureka
Linux运维日记38 分钟前
k8s1.31版本最新版本集群使用容器镜像仓库Harbor
linux·docker·云原生·容器·kubernetes
一名路过的小码农2 小时前
ceph 18.2.4二次开发,docker镜像制作
ceph·docker·容器
xiangshangdemayi5 小时前
Windows环境GeoServer打包Docker极速入门
windows·docker·容器·geoserver·打包·数据挂载
程序员JerrySUN6 小时前
熟悉的 Docker,陌生的 Podman
linux·docker·容器·系统架构·podman
长囧鹿6 小时前
云原生之k8s服务管理
云原生·容器·kubernetes
gobeyye6 小时前
Docker 用法详解
运维·docker·容器
小灰灰__7 小时前
Linux离线安装Docker命令,简单镜像操作
linux·docker·eureka