每日热文:Podman Compose 新手指南
原创文章,转载时请保留此声明,并给出原文连接。
技术人员多数又呆板又花心不长久。我知道你可能已经厌倦了 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-composeUbuntu 22.10 及以上或 Debian 12 及以上,则可以使用包管理器安装它:
sudo apt install podman-composeFedora 36 及以上,也可以直接安装:
sudo dnf install podman-composeArch Linux 用户:
sudo pacman -Syu podman-compose验证安装
可以简单输出一下版本号,以验证是否安装正确:
podman-compose --version输出类似下面:
$ podman-compose --version["podman", "--version", ""]using podman version: 4.3.1podman-composer version 1.0.3podman --versionpodman version 4.3.1exit code: 0编排
如前所述,podman-compose与 docker-compose基本一致,所以不详细描述其文件结构了。直接看一个例子,比较容易理解,内容如下:
version: 3.7services: 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_passwordsecrets:gitea_database_user_password:external: true启动所有容器
可以简单使用 up命令,启动编排文件中的所有容器与服务:
podman-compose up -d上述命令背后将执行启动相关容器必须的所有操作,包括:
- 拉取镜像
- 使用指定选项(端口、卷、机密、网络等)创建容器
- 按特定顺序启动容器(由约束定义,例如 depends_on)
-d选项,随便一猜大概就能明白,是做为后台进程启动容器的意思。
容器启动并运行后,可以通过以下命令进行验证:
$ podman psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMESd7b7f91c03aa 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-vishwambhar1cfcc6efc0d0 docker.io/library/postgres:14-alpine postgres 4 hours ago Up 4 hours ago gitea-chitragupta531be3df06d0 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_SECONDSpodman-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.ymlpodman-compose --file foo.yml总之,使用起来还是相当简单愉快的。请君试之。
作者:袁首京原创文章,转载时请保留此声明,并给出原文连接。
关键词:
-
每日热文:Podman Compose 新手指南
2023-04-06 -
邮报:虽面临金融审查,卡塔尔财团不希望英政府阻止其收购曼联
2023-04-06 -
3月辽宁平均气温为72年来历史同期最高
2023-04-06 -
世界即时看!五柳先生传
2023-04-06 -
英雄之光丨千里奔赴 只为看一眼在战场上牺牲的亲人
2023-04-05 -
选择瑞银之前瑞士监管机构曾考虑让瑞信破产
2023-04-05 -
北京硕博毕业生人数首超本科,专家提示:切忌盲目追求高学历
2023-04-05 -
缅怀英烈 | 革命薪火 光芒永存
2023-04-05 -
农产品董秘回复:目前公司直接持有中农网28.9681%股份|今日快讯
2023-04-05 -
国家发改委:没有“全国统一大市场规划司”相关机构|天天速看料
2023-04-05 -
每日焦点!重庆皮影、河南布老虎……文博会上这些非遗宝贝让你看花眼!
2023-04-05 -
新消息丨北京市纪委监委通报三起安全事故追责问责情况
2023-04-05 -
清明节 对话“00后”女入殓师 全球新视野
2023-04-05 -
燃气热水器调到冬季打不着火是甚么缘由?|天天最资讯
2023-04-05 -
环球简讯:Cisco Calisti DEMO OK.
2023-04-05 -
全球关注:ASMPT(00522.HK):4月4日南向资金增持2200股
2023-04-05 -
基建50ETF(516970)4月4日上涨4.34%_即时焦点
2023-04-04 -
海尔砸冰箱事件及启发提五个问题_海尔砸冰箱事件及启发
2023-04-04 -
佳沃食品:智利子公司Australis及其下属子公司持有自有水产养殖特许经营权96项 新动态
2023-04-04 -
天天微资讯!鱼刺卡喉,“土办法”不可靠!
2023-04-04 -
千年手游攻略
2023-04-04 -
追授刘亚斌同志“全国公安系统一级英雄模范”称号送奖仪式在沧州举行|焦点热讯
2023-04-04 -
世界热消息:鹤山区委副书记、区政府区长邢玉富主持召开全区自然资源规划和保护工作推进会议
2023-04-04 -
焦点观察:浪潮集团:在潍坊区域内建设浪潮潍坊政企大数据中心等项目
2023-04-04 -
小花仙嘭嘭嘭圆舞曲 快讯
2023-04-04 -
仍怜故乡水千里送行舟_仍怜故乡水-速读
2023-04-04 -
【天天热闻】广和通:率先加入中国联通物联网产业联盟RedCap工作组
2023-04-04 -
大连港集团27亿中期票据即将支付利息 利率4.95%
2023-04-04 -
今日夜间起广东有较大范围大雨到暴雨!局地将现雷暴大风冰雹
2023-04-04 -
当前短讯!中央气象台:本轮降水已进入最强时段 江西福建等地需警惕暴雨次生灾害
2023-04-04
-
守住网络直播的伦理底线
2021-12-16 -
石窟寺文化需要基于保护的“新开发”
2021-12-16 -
电影工作者不能远离生活
2021-12-16 -
提升隧道安全管控能力 智慧高速让司乘安心
2021-12-16 -
人民财评:提升消费体验,服务同样重要
2021-12-16 -
卫冕?突破?旗手?——武大靖留给北京冬奥会三大悬念
2021-12-16 -
新能源车险专属条款出台“三电”系统、起火燃烧等都可保
2021-12-16 -
美术作品中的党史 | 第97集《窗外》
2021-12-16 -
基金销售业务违规!浦发银行厦门分行等被厦门证监局责令改正
2021-12-16 -
保持稳定发展有支撑——从11月“成绩单”看中国经济走势
2021-12-16