DevContainer and Podman
Ich habe heute längere Zeit versucht, devcontainer und fedora41 mit podman zum Laufen zu bekommen. Dabei habe ich viele verschiedene Seiten und Lösungen durchgesucht und hier dokumentiere ich nun die verschiedenen Schritte, um für mich zu einer lauffährigen Lösung zu kommen. Ich kann leider im Nachhinein nicht sagen, ob alle Schritte notwendig sind.
podman.sock
~/.config/systemd/user/podman.service
:
[Unit]
Description=Podman API Service
Requires=podman.socket
After=podman.socket
Documentation=man:podman-api(1)
StartLimitIntervalSec=0
[Service]
Type=oneshot
Environment=REGISTRIES_CONFIG_PATH=/etc/containers/registries.conf
ExecStart=/usr/bin/podman system service unix:///home/hygl/docker.sock
TimeoutStopSec=30
KillMode=process
[Install]
WantedBy=multi-user.target
Also=podman.socket
~/.config/systemd/user/podman.socket
:
[Unit]
Description=Podman API Socket
Documentation=man:podman-api(1)
[Socket]
ListenStream=/home/hygl/docker.sock
SocketMode=0660
[Install]
WantedBy=sockets.target
Devcontainers
Hier eine beispielhafte devcontainer.json
für dieses Nodeprojekt:
{
"image": "mcr.microsoft.com/devcontainers/javascript-node:20",
"runArgs": [
"--userns=keep-id:uid=1000,gid=1000"
],
//"workspaceFolder": "/workspaces",
"containerUser": "node",
"updateRemoteUserUID": true,
"containerEnv": {
"HOME": "/home/node"
},
"remoteUser": "node"
}
… und der passende dazugehördende Dockerfile
:
FROM mcr.microsoft.com/devcontainers/javascript-node:20
ARG USERNAME=node
ARG USER_UID=1000
ARG USER_GID=$USER_UID
# Create the user
RUN groupadd --gid $USER_GID $USERNAME \
&& useradd --uid $USER_UID --gid $USER_GID -m $USERNAME
USER $USERNAME
SELinux
Leider hat all dieses noch nichts genützt, solange das Verzeichnis mit dem Sourcecode noch nicht richtig gelabelt ist. Dies geht mit;
chcon -Rt svirt_sandbox_file_t /home/hygl/src/hygl.github.io/
Und schon kann der rootless devcontainer geöffnet werden.