安装 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
相关推荐
云泽野1 小时前
Docker简介&在Centos和Ubuntu环境下安装Docker
ubuntu·docker·centos
james的分享2 小时前
K8s之高阶功能
云原生·容器·kubernetes
专注代码七年10 小时前
二个命令解决docker 拉取镜像超时的问题
docker
hakuii10 小时前
有关WSL和docker的介绍
docker·容器·wsl
空弹壳10 小时前
简述离线安装docker
运维·docker·容器
月泪同学12 小时前
使用kubeadm手动安装K8s
docker·云原生·容器·kubernetes·aws
Alone804613 小时前
k8s的配置管理
云原生·容器·kubernetes
库库的里昂13 小时前
Dify 开源大语言模型(LLM) 应用开发平台如何使用Docker部署与远程访问
人工智能·docker·语言模型·自然语言处理·开源
饺子大魔王的男人13 小时前
Ubuntu系统Docker部署数据库管理工具DbGate并实现远程查询数据
数据库·ubuntu·docker
星殇曦落13 小时前
HPA和helm
docker·容器·kubernetes