feat(images): add Docker CE images (Debian 13 + Docker, NodeJS 24 + Docker)#414
Merged
Conversation
Add a new images/docker/ Dockerfile that installs Docker Engine (CE) from Docker's official APT repository on top of the shared base. The named `base` build context lets one Dockerfile produce two images via docker-bake.hcl: * docker (base = target:base) -> "Debian 13 + Docker" * docker-nodejs (base = target:nodejs) -> "NodeJS 24 + Docker" Membership of the LDAP ldapusers group implies membership of the local docker group via a pam_group rule (*;*;%ldapusers;Al0000-2400;docker), matched by group NAME on both sides through NSS/SSSD - like the %ldapusers sudoers rule in the base image - so no GID is hardcoded, no local group is created, and the stock docker.socket unit and docker group remain untouched. pam_group is enabled with pam-auth-update and acts during pam_setcred, which sshd applies to both password and public-key logins. Both images are built and pushed by the build-images workflow and exposed as templates in the create-a-container UI, with docs updated to match.
runleveldev
force-pushed
the
406-docker-ce-image
branch
from
July 16, 2026 17:02
58d8e08 to
0451287
Compare
cmyers-mieweb
approved these changes
Jul 16, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Alternative approach to #406: instead of making rootless podman work in guest containers, ship images with the official Docker Engine (CE) preinstalled and grant every LDAP user access to the Docker socket.
images/docker/— new Dockerfile installing Docker Engine (CE), CLI, containerd, buildx and compose plugins from Docker's official APT repository.docker.service/docker.socketare enabled at build time.basebuild context is a named context supplied by bake, so:docker(base = target:base) → Debian 13 + Dockerdocker-nodejs(base = target:nodejs) → NodeJS 24 + Dockerldapusersgroup implies membership of the localdockergroup viapam_group: the rule*;*;%ldapusers;Al0000-2400;dockerin/etc/security/group.confgrants thedockergroup to LDAP users' sessions at login. Both sides are matched by group name (%ldapusersresolves through NSS/SSSD exactly like the%ldapuserssudoers rule in the base image), so no GID is hardcoded, no local group is created, and the stockdocker.socketunit anddockergroup are untouched. Resolution happens at login time, when SSSD is necessarily up, so there is no boot-ordering concern.pam_groupis enabled viapam-auth-update(same mechanism asmkhomedirin base) and acts duringpam_setcred, which sshd applies to both password and public-key logins. Socket access is root-equivalent, but ldapusers already hold sudo in these containers (/etc/sudoers.d/ldapusersin base), so no new privilege is granted.docker-bake.hcl(defaultgroup) andbuild-images.yml(metadata steps, bake files, GHA cache scopes), publishingghcr.io/mieweb/opensource-server/dockerand.../docker-nodejswith the same tag rules as base/nodejs.ContainerFormPage.tsx:Debian 13 + DockerandNodeJS 24 + Docker.web-gui.mdtemplate list anddocker-images.mdimage reference updated.Validation
docker buildx bake --print defaultresolves both new targets with the expected contexts (docker → target:base,docker-nodejs → target:nodejs)%groupsyntax in theusersfield confirmed againstgroup.conf(5)Notes for review/testing
idshowsdocker, thendocker ps.