Instead of running a Dockerized puppet container onetime, which means that Puppet exits after the first run, the container can be run with any arbitrary Puppet commands, such as:
docker run --net puppet puppet/puppet-agent-ubuntu agent --verbose --no-daemonize --summarize
This container won't exit, and instead applies Puppet every 30 minutes based on the latest content from the Puppet Server (30 mins being the default polling time in puppet).