文章目录
- Github
- 官网
- 文档
- [Podman 简介](#Podman 简介)
-
- [Podman 与 Docker 区别](#Podman 与 Docker 区别)
- [Podman 安装](#Podman 安装)
-
- 下载安装(推荐)
- [brew 安装(Mac)](#brew 安装(Mac))
- [Podman 虚拟机](#Podman 虚拟机)
-
- 虚拟机基础
- [rootful 模式](#rootful 模式)
- [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 安装
下载安装(推荐)
- Mac环境CLI版本:https://github.com/containers/podman/releases/download/v5.2.2/podman-installer-macos-universal.pkg
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