设为首页 加入收藏

TOP

Podman Compose 新手指南(一)
2023-07-23 13:34:43 】 浏览:41
Tags: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-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-composedocker-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-comp
首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇Linux学习——shell 下一篇600 条最强 Linux 命令总结

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目