随着容器技术的不断发展,Podman 作为一个无守护进程的容器管理工具,越来越受到开发者的青睐。Podman 提供了与 Docker 相似的命令行界面,但其设计理念更加注重安全性和灵活性。在这篇文章中,我们将介绍如何在 Ubuntu Debian armbian上安装 Podman 和 Podman Compose,并简要比较它们与 Docker 的异同。
Podman vs. Docker
无守护进程:Podman 运行容器时不需要一个持续运行的守护进程,这使得它在系统资源的使用上更加高效。Docker 依赖一个守护进程,可能带来额外的安全风险。
Rootless 容器:Podman 支持无权限用户创建和运行容器,这样可以减少潜在的安全漏洞。虽然 Docker 也有类似的功能,但 Podman 的设计使其更容易实现。
命令兼容性:Podman 的命令行工具与 Docker 的命令行工具基本兼容,因此大多数 Docker 用户可以很容易地转向 Podman。
Pod 概念:Podman 支持 Pod 的概念,即将多个容器组合在一起,使得管理复杂的应用程序变得更加简单。这在 Kubernetes 中也得到了广泛应用。
安装 Podman (此方法Debian armbian都适用)
更新包列表:
sudo apt update
安装 Podman:
sudo apt install podman
验证安装:
podman --version
执行后会返回版本信息说明安装成功
安装 Podman Compose
Podman Compose 是一个用于管理 Podman 容器的工具,类似于 Docker Compose。
安装依赖:
sudo apt install python3 python3-pip
使用 pipx 安装 Podman Compose: 首先确保你已安装 pipx:
sudo apt install pipx
设置
pipx
的环境变量
sudo apt install python3-venv
验证安装
pipx --version
开始安装Podman Compose
pipx install podman-compose
成功安装 podman-compose
了!不过,你需要将 /home/digua/.local/bin
(此路径是我机器的路径)添加到你的 PATH 中,以便可以全局访问。你可以按照以下步骤操作:
更新 PATH
打开你的
~/.bashrc
文件:
nano ~/.bashrc
在文件末尾添加以下行:
export PATH="$HOME/.local/bin:$PATH"
保存并退出(在
nano
中,按Ctrl + X
,然后按Y
确认保存)。当然你也可以用别的编辑器 vim啥的重新加载
~/.bashrc
文件:
source ~/.bashrc
验证
podman-compose
是否安装成功
podman-compose --version
返回版本号就成功了
此时此刻你就可以使用podman了 怎么使用如果你使用过docker 对于podman没什么难度 看看下面的命令是不是秒懂了
查看版本 podman --version
拉取镜像 podman pull <image-name>
所有容器 podman ps -a
运行容器 podman run -d --name <container-name> -p <host-port>:<container-port> <image-name>
停止容器 podman stop <container-name>
启动容器 podman start <container-name>
删除容器 podman rm <container-name>
容器日志 podman logs <container-name>
进到容器 podman exec -it <container-name> <command>
Podman Compose 常用命令
启动项目 podman-compose up -d
停止项目 podman-compose down
项目状态 podman-compose ps
查看日志 podman-compose logs
重新项目 podman-compose restart
需要注意的是Podman 本身并没有内建自动启动功能。如果你希望项目在系统启动时自动运行,建议使用 systemd 来管理容器的启动。
要让 podman-compose
项目自启动,你可以使用 systemd
创建一个服务。以下是步骤:
创建服务文件
sudo nano /etc/systemd/system/my_podman_compose.service
Podman Compose项目添加以下内容到服务文件:
[Unit]
Description=Podman Compose Service
After=network.target
[Service]
WorkingDirectory=/path/to/your/project
ExecStart=/usr/local/bin/podman-compose up
ExecStop=/usr/local/bin/podman-compose down
Restart=always
[Install]
WantedBy=multi-user.target
将 /path/to/your/project
替换为你 podman-compose
项目的实际路径。
Podman 项目添加以下内容到服务文件
[Unit]
Description=Podman Container Service
After=network.target
[Service]
ExecStart=/usr/bin/podman run --name <container-name> -p <host-port>:<container-port> <image-name>
ExecStop=/usr/bin/podman stop <container-name>
Restart=always
[Install]
WantedBy=multi-user.target
替换 <container-name>
、<host-port>
、<container-port>
和 <image-name>
为实际值。
保存退出(按
Ctrl + X
,然后按Y
确认保存 )
启用和启动服务
重新加载 systemd 配置:
sudo systemctl daemon-reload
启用服务在启动时自动运行:
sudo systemctl enable my_podman_compose.service
启动服务:
sudo systemctl start my_podman_compose.service
检查服务状态
你可以使用以下命令检查服务是否正常运行:
sudo systemctl status my_podman_compose.service
如果需要停止或重启服务,可以使用:
sudo systemctl stop my_podman_compose.service
sudo systemctl restart my_podman_compose.service
Podman 和 Podman Compose 为容器化应用提供了一种安全、灵活的解决方案。尽管 Docker 仍然是市场上最流行的容器管理工具,但 Podman 的无守护进程架构和安全特性使其成为值得考虑的替代方案。
评论区