{"id":13423354,"url":"https://github.com/containers/quadlet","last_synced_at":"2025-03-15T17:31:40.485Z","repository":{"id":40430408,"uuid":"409202896","full_name":"containers/quadlet","owner":"containers","description":null,"archived":true,"fork":false,"pushed_at":"2022-12-05T11:40:18.000Z","size":142,"stargazers_count":342,"open_issues_count":0,"forks_count":14,"subscribers_count":13,"default_branch":"main","last_synced_at":"2024-10-26T23:10:33.509Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/containers.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"COPYING","code_of_conduct":"CODE-OF-CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null}},"created_at":"2021-09-22T12:51:29.000Z","updated_at":"2024-10-18T02:24:44.000Z","dependencies_parsed_at":"2023-01-24T05:15:50.990Z","dependency_job_id":null,"html_url":"https://github.com/containers/quadlet","commit_stats":null,"previous_names":[],"tags_count":11,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/containers%2Fquadlet","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/containers%2Fquadlet/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/containers%2Fquadlet/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/containers%2Fquadlet/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/containers","download_url":"https://codeload.github.com/containers/quadlet/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243766809,"owners_count":20344817,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-07-31T00:00:32.501Z","updated_at":"2025-03-15T17:31:40.187Z","avatar_url":"https://github.com/containers.png","language":"C","funding_links":[],"categories":["C"],"sub_categories":[],"readme":"# Quadlet has been merged into [podman](https://github.com/containers/podman/tree/main/pkg/systemd/quadlet)\n\nThis repo is frozen.\n\n# What is Quadlet\n\nQuadlet is an opinionated tool for easily running podman system\ncontainers under systemd in an optimal way.\n\n# Why would I want that\n\nContainers are often used in a cloud context, and they are then used\nin combination with an orchestrator like Kubernetes. They are also\ncommonly used during development and testing to manually manage\ncontainers on an ad-hoc basis.\n\nHowever, there are also use cases where you want some kind of automatic\ncontainer management, but on a smaller, single-node scale, and often\nmore tightly integrated with the rest of the system. Typical examples\nof this can be embedded or automotive use, where there is no system\nadministrator, or disconnected or EDGE servers.\n\nThe recommended way to do this is to use systemd to orchestrate the\ncontainers, since this is an already running process manager, and\nsince podman containers are just child processes. There are many\ndocuments that describe how to use podman with systemd directly, but\nthe end result are generally large, hard to maintain systemd config\nfiles. And often the container setup isn't optimal.\n\nWith quadlet, you describe how to run a container in a format that is\nvery similar to regular systemd config files. From these actual\nsystemd configurations are automatically generated (using [systemd\ngenerators](https://www.freedesktop.org/software/systemd/man/systemd.generator.html)).\n\nThe container descriptions focus on the relevant container details,\nwith no technical details about how the podman integration works. This\nmeans they are easy to write, easy to maintain and integration can\nautomatically improve over time as new podman features become\navailable.\n\n# A container example\n\nHere is a minimal container config:\n\n```\n[Unit]\nDescription=A minimal container\n\n[Container]\nImage=centos\nExec=sleep 60\n\n[Service]\nRestart=always\n```\n\nThis is very similar to a regular systemd service file, except for the\n`[Container]` section. It will run `sleep 60` in a centos container, and\nthen exit only for systemd to restart it again.\n\nIf you put this in `/etc/containers/systemd/minimal.container` and\nthen run `systemctl daemon-reload` and `podman pull centos` you can\nimmediately start the container using `systemctl start\nminimal.service` and watch the status:\n\n```\n# systemctl status minimal.service\n● minimal.service - A minimal container\n     Loaded: loaded (/etc/containers/systemd/minimal.container; generated)\n     Active: active (running) since Thu 2021-09-23 13:05:33 CEST; 1s ago\n    Process: 839846 ExecStartPre=rm -f /run/minimal.cid (code=exited, status=0/SUCCESS)\n   Main PID: 839894 (conmon)\n      Tasks: 4 (limit: 38375)\n     Memory: 1.4M\n        CPU: 193ms\n     CGroup: /system.slice/minimal.service\n             ├─container\n             │ ├─839898 /dev/init -- sleep 60\n             │ └─839943 /usr/bin/coreutils --coreutils-prog-shebang=sleep /usr/bin/sleep 60\n             └─supervisor\n               └─839894 /usr/bin/conmon ...\n```\n\nThe generated service file is in\n`/run/systemd/generator/minimal.service` for people interested in all\nthe technical details.\n\n# Building quadlet\n\nQuadlet builds using meson. You can build and install it with these\nsteps:\n\n```\n$ meson builddir  --prefix /usr\n$ cd builddir\n$ meson compile\n$ meson install\n```\n\nThis will install quadlet-generator in `/usr/lib/systemd/system-generators`, which will\nread configuration files from `/etc/containers/systemd`.\n\n# Where to go from here\n\nHere are some further documentations:\n\n * [File formats](./docs/Fileformat.md)\n * [Container setup](./docs/ContainerSetup.md)\n\nQuadlet also ships with some [example containers](./examples).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcontainers%2Fquadlet","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcontainers%2Fquadlet","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcontainers%2Fquadlet/lists"}