首页 > 其他分享 >Podman Compose 新手指南

Podman Compose 新手指南

时间:2024-04-11 15:55:59浏览次数:32  
标签:__ Compose podman gitea caddy Podman compose 新手 docker

技术人员多数又呆板又花心不长久。我知道你可能已经厌倦了 Docker,但是系统还没有复杂到需要高攀 K8S 的地步。那我建议您,有空的话可以约一下 Podman。

Podman 使用起来是足够简单的,直接把它当做改了名字的 Docker 就可以了。所以以下只介绍一下它的编排工具,也就是 podman-compose。

简介
用 Docker 的时候,你知道它提供了一个编排工具,可以将容器的细节,例如名称、镜像、重启策略、卷、挂载点、端口、标签等等,在一个单一的文件中指定,这个文件通常命名为 docker-compose.yml。

Podman 可以使用 podman-compose 达成类似的功能。简单的说,podman-compose 是使用 Podman 做为后端的一种 Compose Spec 实现,它的关注点主要是:

rootless 不需要 root 权限
daemon-less 没有守护进程
它最终的实现结果与 docker-compose.yml 文件的兼容度非常高,只存在一些细微的差异,比如说某些值需要使用引号括起来等。

安装
podman-compose 算是一个相对较新的工具,因此很多稳定或长期支持的 Linux 发行版,很可能还没有将它放在内置的软件源中。这种情况下,可以从 PyPI 安装:

sudo pip3 install podman-compose
Ubuntu 22.10 及以上或 Debian 12 及以上,则可以使用包管理器安装它:

sudo apt install podman-compose
Fedora 36 及以上,也可以直接安装:

sudo dnf install podman-compose
Arch Linux 用户:

sudo pacman -Syu podman-compose
验证安装
可以简单输出一下版本号,以验证是否安装正确:

podman-compose --version
输出类似下面:

$ podman-compose --version
['podman', '--version', '']
using podman version: 4.3.1
podman-composer version 1.0.3
podman --version
podman version 4.3.1
exit code: 0
编排
如前所述,podman-compose 与 docker-compose 基本一致,所以不详细描述其文件结构了。直接看一个例子,比较容易理解,内容如下:

version: 3.7

services:
reverse-proxy:
image: docker.io/library/caddy:alpine
container_name: caddy-vishwambhar
command: caddy run --config /etc/caddy/Caddyfile
restart: always
ports:
- "8080:80"
- "8443:443"
volumes:
- /docker-volumes/caddy/Caddyfile:/etc/caddy/Caddyfile:Z
- /docker-volumes/caddy/site:/srv:Z
- /docker-volumes/caddy/caddy_data:/data:Z
- /docker-volumes/caddy/caddy_config:/config:Z
- /docker-volumes/caddy/ssl:/etc/ssl:Z
labels:
- io.containers.autoupdate=registry
- pratham.container.category=proxy
environment:
- TZ=Asia/Kolkata
depends_on:
- gitea-web

gitea-web:
image: docker.io/gitea/gitea:latest
container_name: gitea-govinda
restart: always
ports:
- "8010:3000"
- "8011:22"
volumes:
- /docker-volumes/gitea/web:/data:Z
- /docker-volumes/gitea/ssh:/data/git/.ssh:Z
- /etc/localtime:/etc/localtime:ro
labels:
- io.containers.autoupdate=registry
- pratham.container.category=gitea
environment:
- RUN_MODE=prod
- DISABLE_SSH=false
- START_SSH_SERVER=true
- SSH_PORT=22
- SSH_LISTEN_PORT=22
- ROOT_URL=https://git.mydomain.com
- DOMAIN=git.mydomain.com
- SSH_DOMAIN=git.mydomain.com
- GITEA__database__DB_TYPE=postgres
- GITEA__database__HOST=gitea-db:5432
- GITEA__database__NAME=gitea
- GITEA__database__USER=gitea
- GITEA__database__PASSWD=/run/secrets/gitea_database_user_password
- GITEA__service__DISABLE_REGISTRATION=true
- TZ=Asia/Kolkata
depends_on:
- gitea-db
secrets:
- gitea_database_user_password

gitea-db:
image: docker.io/library/postgres:14-alpine
container_name: gitea-chitragupta
restart: always
volumes:
- /docker-volumes/gitea/database:/var/lib/postgresql/data:Z
labels:
- io.containers.autoupdate=registry
- pratham.container.category=gitea
environment:
- POSTGRES_USER=gitea
- POSTGRES_PASSWORD=/run/secrets/gitea_database_user_password
- POSTGRES_DB=gitea
- TZ=Asia/Kolkata
secrets:
- gitea_database_user_password

secrets:
gitea_database_user_password:
external: true
启动所有容器
可以简单使用 up 命令,启动编排文件中的所有容器与服务:

podman-compose up -d
上述命令背后将执行启动相关容器必须的所有操作,包括:

拉取镜像
使用指定选项(端口、卷、机密、网络等)创建容器
按特定顺序启动容器(由约束定义,例如 depends_on)
-d 选项,随便一猜大概就能明白,是做为后台进程启动容器的意思。

容器启动并运行后,可以通过以下命令进行验证:

$ podman ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d7b7f91c03aa docker.io/library/caddy:alpine caddy run --confi... 4 hours ago Up 4 hours ago 0.0.0.0:8080->80/tcp, 0.0.0.0:8443->443/tcp caddy-vishwambhar
1cfcc6efc0d0 docker.io/library/postgres:14-alpine postgres 4 hours ago Up 4 hours ago gitea-chitragupta
531be3df06d0 docker.io/gitea/gitea:latest /bin/s6-svscan /e... 4 hours ago Up 4 hours ago 0.0.0.0:8010->3000/tcp, 0.0.0.0:8011->22/tcp gitea-govinda
停止容器与服务
既然启动是 up,那停止很明显就是 down 了。这俩单词我老早就认识,不知道你认识不认识?

podman-compose down
此外,您还可以设置个超时时间,容器到时可以安全地自行关闭:

podman-compose down -t TIMEOUT_IN_SECONDS
podman-compose down --timeout TIMEOUT_IN_SECONDS
注意,以上命令仅停止容器,并不会删除容器。

启动或停止特定服务
你应该注意到了,上面的配置文件定义了多个服务,比如其中之一是 gitea-db。如果单独启停它的话,可以象这样:

$ podman-comopse start gitea-db
$ podman-compose stop gitea-db
$ podman-compose restart gitea-db
其它
主要的命令其实就是上述这些了。剩余一两个可能用到的,简单描述一下。

假如想预先拉取一下相关镜像,可以使用命令:

podman-compose pull
另外,前述命令都假定编排文件的名字仍然叫 docker-compose.yml。肯定是可以换成其它名字的,比如 foo.yml,则使用时需要多加个参数,指定配置文件:

podman-compose -f foo.yml
podman-compose --file foo.yml
总之,使用起来还是相当简单愉快的。请君试之。

标签:__,Compose,podman,gitea,caddy,Podman,compose,新手,docker
From: https://www.cnblogs.com/zhyp/p/18129403

相关文章

  • 172号卡分销系统新手代理推广之前要了解哪些规则?
    新手小白代理在刚加入到这个行业,对号卡行业可能是一片空白,完全不了解号卡这个行业,这篇文章让新手小白大概的了解一下号卡行业的结算规则。 前提:首先在推广号卡之前先说一下172号卡分销平台的一个底线,172号卡分销系统是禁止虚假宣传,禁止宣传归属地,禁止乱承诺用户,禁止不经用......
  • docker-compose部署kafka
    docker-compose.ymlversion:'2'services:zookeeper:image:develop-harbor.geostar.com.cn/3rd/zookeeper:3.5.5ports:-"2181:2181"kafka:image:develop-harbor.geostar.com.cn/3rd/wurstmeister/kafka:2.12-2.2.1......
  • windows环境安装Podman
    打开虚拟设置选择启用或关闭Windows功能勾选“适用于Linux的Windows子系统”和“虚拟机平台”两个选项。 安装WSL管理员模式启动powershell设置wsl版本:wsl--set-default-version2-更新wsl核:wsl--update【若干分钟】安装wsl:wsl--install【若干分钟】完成后需要设置......
  • 关于JSP的MVC设计(新手小白白week7速看)
    通过之前的学习JSP,我们发现我们可以用过Servlet来实现下图功能但是我们发现这样写也太麻烦了吧,而且工程量巨大,所以MVC设计应运而生在开始前,我们需要创建三个软件包,并且创建好我们需要的controller,dao,model相应文件通过需要在WEB-INF中创建目录views,同时把footer,header,i......
  • 新闻信息差项目,新手可操作
    项目介绍:这个项目是通过收集新闻信息,整合之后,制作成文章或者视频发布在公众号以及短视频平台涨粉的项目,涨粉之后,通过多重方式变现。本项目,我主要分享B站发新闻信息差视频,涨粉接商单变现的玩法,也是目前最容易出效果的玩法。我会通过一个案例,来分享视频的详细制作过程,让你看完......
  • Android Compose 入门,深入底层源码分析
    AndroidCompose入门,深入底层源码分析我是跟着AS官网学习的,但是官方的教程写的不是很详细.官网链接首先创建一个Compose项目,目录结构是这样:ui->theme->->Color.kt->->Theme.kt->->Type.ktMainActivity.kt通过阅读源码,发现实际上还少了一个Shapes.kt,我手动......
  • 发布一个自己的composer包
    首先我们创建一个空的目录,并且运行以下命令初始化一个空白的composer包composerinit可以在命令窗口看到有返回提示;需要输入包名Thiscommandwillguideyouthroughcreatingyourcomposer.jsonconfig.`Packagename(<vendor>/<name>):我这里写的是chaoyang/test,回......
  • 目标检测:yolov8(ultralytics)训练自己的数据集,新手小白也能学会训练模型,一看就会
    目录1.环境配置2.数据集获取2.1网上搜索公开数据集2.2自制数据集2.2.1Labelimg安装2.2.2Labelimg使用2.3数据集转换及划分2.3.1数据集VOC格式转yolo格式2.3.2数据集划分3.训练模型3.1创建data.yaml3.2训练模型4.模型测试5.可视化界面分为4部分,......
  • 新手【BUUCTF】逆向writeup()
    0x00前言在大三开始入门逆向,已学完小甲鱼解密篇,刚开始看《加密与解密》,现在沉浸在快乐的刷题学习中.....buuctf_reverse地址0x01刚接触的逆向题reverse1首先拿道题第一步先查壳,我用的查壳工具是peid和exeinfope 发现可以直接打开,双击运行,发现报错用IDApro64位打开,使用m......
  • Composer安装与配置:简化PHP依赖管理的利器(包括加速镜像设置)
    在现代的PHP开发中,我们经常会使用许多第三方库和工具来构建强大的应用程序。然而,手动管理这些依赖项可能会变得复杂和耗时。为了解决这个问题,Composer应运而生。Composer是一个PHP的依赖管理工具,它可以帮助我们轻松地安装、更新和管理项目的依赖项。本文将介绍如何安装和配置C......