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

Podman Compose 新手指南

时间:2023-04-06 09:27:27浏览次数:56  
标签:__ 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-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-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/rockety/p/17291605.html

相关文章

  • docker-compose 通过NGINX快速搭建负载均衡的Tomcat集群
                 docker-compose通过NGINX快速搭建负载均衡的Tomcat集群从标题也可以看出,需要三个软件,docker-compose,docker-ce(docker的运行环境),Tomcat的镜像。docker-compose和docker的安装就不用说了,都可以离线安装,安装方法见博客:(docker-compose安装方......
  • 新手选拔赛:多测写挂了!
    这道题首先先把所有的关键词用map读入然后用vector去存string和出现的次数cnt进行排序之后读入目标字符串用stlstring自带的查找判断前缀如果是前缀那么必为0#include<bits/stdc++.h>usingnamespacestd;structnode{ strings; intcnt; booloperator<(const......
  • Florr 从新手到大佬
    Florr从新手到大佬新手上路首先在这里,你会遇到一些简单的教程。按照教程完成,也可以参考链接里的内容。装备分为一下几种:Common 颜色:#7EEF6DUnuaual颜色:#FFE65DRare颜色:#4D52E3Epic颜色:#861FDELegendary颜色:#DE1F1FMythic颜色:#1FDBDEUltra颜色:#FF2B75Super颜色:#2BFFA3......
  • silverlight/Flash 跨域访问给新手的一点经验
      尝试向URI“http://www.luozhuang.com/web1/WebService.asmx”发出请求时出错。这可能是由于试图以跨域方式访问服务而又没有正确的跨域策略,或策略不适用于SOAP服务。您可能需要与该服务的所有者联系,以发布跨域策略文件并确保该文件允许发送SOAP相关......
  • 超详细!新手如何创建一个Vue项目
    目录一、在官网下载Vue.js二、使用<script>标签直接引入本地的vue.js三、使用CDN引入Vue.js四、验证是否安装成功五、安装VueDevtools浏览器调试插件不同浏览器导入方法本篇仅以HBuilderX为例,其余开发软件同样适用这里两种方法,使用<script>标签直接引入本地的vue.js或使用CDN......
  • docker compose的v1\v2版本安装及使用上的区别
    【docker系列】dockercompose的v1\v2版本安装及使用上的区别文章目录一、简介二、安装dockerCompose1.x版本三、安装dockercomposev2版本一、简介DockerCompose可以按照规范的定义文件(docker-compose.yml)一次性启动运行多个具有依赖关系的容器。本质上说,DockerCompos......
  • 安装docker-compose
    安装docker-compose下载安装文件sudocurl-Lhttps://get.daocloud.io/docker/compose/releases/download/1.25.1/docker-compose-uname-s-uname-m-o/opt/docker-compose/docker-compose赋予执行权限sudochmod+x/opt/docker-compose/docker-compose ......
  • Docker Compose
    一、DockerCompose1、前言我们知道使⽤⼀个Dockerfile模板⽂件,可以让⽤户很⽅便的定义⼀个单独的应⽤容器。然⽽,在⽇常⼯作中,经常会碰到需要多个容器相互配合来完成某项任务的情况。例如要实现⼀个Web项⽬,除了Web服务容器本身,往往还需要再加上后端的数据库服务容器,甚⾄还......
  • 新手如何使用Tiktok加速器做跨境电商?可以加速Tiktok网络的节点分享
    TikTok是一款全球性的视频应用程序,越来越多的跨境电商企业开始在TikTok上开展业务。然而,由于地理位置和网络原因,许多跨境电商企业在使用TikTok时会遇到卡顿、延迟等问题,影响了业务的正常运营。 为了解决这些问题,许多跨境电商企业开始使用TikTok加速器。那么,新手如何使用TikTok......
  • Docker-Compose快速搭建LNMP
    Docker-Compose1.安装Dockersudoapt-yinstalldocker.iodockerversion查看版本号dockerhelp查看帮助文档2.更换镜像源sudosu-cat>>/etc/docker/daemon.json<<-EOF{"registry-mirrors":["https://mirror.ccs.tencentyun.com"]}EOFs......