The Dockerfile for this image is available in the Puppet-in-Docker repository.
You can run a copy of Puppet Server with the following Docker command.
docker run --name puppet --hostname puppet puppet/puppetserver-standalone
Although it is not strictly necessary to name the container
puppet, this is useful when working with the other Puppet images, as they will look for a master on that hostname by default.
If you would like to start the Puppet Server with your own Puppet code, you can mount your own directory at
docker run --name puppet --hostname puppet -v ./code:/etc/puppetlabs/code/ puppet/puppetserver-standalone
You can find out more about Puppet Server in the official documentation.
See the examples repository for fully worked examples, including running a full Puppet stack using Docker Compose.
As in, how do you get them, or where do you make them available to the server?
Mounting a volume/directory definitely works for server. I'd suspect getting the modules in the first place might be run via r10k or puppet module commands; either of those could be run in an agent container and use the same shared mounted volume.
How are folks dealing with managing puppet modules?