ah, yeah, that’s why. You need to mount the unix socket into Caddy’s container as a volume. Docker uses overlayfs by default to create a layered filesystem, and then launches a distinct user, process, network, etc. namespace for the container’s process, which is why everything is isolated inside the container. You’ll need to make sure the unix socket is available to Caddy’s process inside the container, so you’ll have to mount it using -v
or the volume
key in the yaml.
sudo
is actually entirely unnecessary with Docker, because most containers will run as the container’s root. Part of containers having their own user and process namespace means their root user is not your root user (technically we can have a debate about semantics for overlayfs and mounted files), and almost all images will ship with the default user as their root. Therefore, almost all processes will be “run as root” from within their container by default, meaning sudo
does nothing except elevate the perms for the user calling docker
. It would really only get around an issue with your user account not having access to docker
or the docker daemon (also via socket btw). That said, because of the user namespace thing, running sudo docker run
or sudo docker compose up
doesn’t actually guarantee the process in the container is run as root… just that the container was created as root with perms over the host’s system.
The important part is that Caddy inside the container will be run by a user that has permissions over the mounted socket.
Yea let’s just give a vulnerable population a free trial of a gambling addiction lol