These container images start systemd and execute the command line passed on invokation. The commandline is executed as an interactive systemd service unit.
IMPORTANT These container images are NOT compatible with Docker provided through the Snap Store due to confinement rules applied to the dockerd interfering with (preventing) our container's execution.
You may override the entrypoint with the --entrypoint parameter if you need to run the container without starting systemd. Or you may drop to a shell with systemd running by setting the command to bash.
These container images require you to pass --privileged.
For builds against core the version of Systemd included in Ubuntu Xenial, and thus included in the core container images, is not compatible with cgroups version 2. This causes the core container image to fail to finish starting on newer distros. On systems that use cgroups2 you might still be able to run the core container images by adding --tmpfs /sys/fs/cgroup to the docker or podman command line.
Previous instructions, based on earlier iterations of the container images, required you to create
and use an AppArmor namespace - this is not necessary any more. That is, you no-longer need to create a separate AppArmor namespace directory at
/sys/kernel/security/apparmor/policy/namespaces/docker-snapcraft and you can drop the
--security-opt apparmor=":docker-snapcraft:unconfined" parameter from your docker command line.
Running without specifying a command will run snapcraft without any parameters:
docker run --rm -it --privileged -v $PWD:/data -w /data diddledani/snapcraft:core22To run with parameters, specify snapcraft [...params] when creating the container:
docker run --rm -it --privileged -v $PWD:/data -w /data diddledani/snapcraft:core22 snapcraft stage --enable-experimental-package-repositoriesdocker run --rm -it --privileged -v $PWD:/data -w /data diddledani/snapcraft:core22 bashdocker run --rm -it --privileged -v $PWD:/data -w /data --entrypoint bash diddledani/snapcraft:core22These containers should now be compatible with Podman, but have yet to receive much in the way of testing and validation. With the proviso that this is highly experimental for these images, you can try to run the build through Podman with:
sudo podman run --rm -it --privileged --systemd always -v $PWD:/data -w /data docker.io/diddledani/snapcraft:core22Running through sudo seems to be a requirement to allow mounting
squashfs filesystems, and we still need --privileged the same as
when we are running through Docker. We also need to add the
--systemd always flag to get Podman to set up the runtime
environment appropriately for running Systemd inside the new
container instance.