This is binary provides a wrapper socket for docker.socket which provides a virtual cleanroom (but not secure (SEE BELOW)) for running jenkins build agents in docker.
Fraterdocker
- jenkins jobs may use standard
docker
CLI and API calls against the provided socket - calls to
docker ps
will return only those containers built via this wrapper socket
The wrapper socket intercepts all API calls, and:
- injects container labels on all
docker run
API calls - adds label filters for the container labels on all
docker ps
API calls
When jenkins agents use docker, they call docker ps -aq | xargs docker rm -f
to ensure a "cleanroom" for docker builds, functional tests, etc. This wrapper prevents the jenkins agent from killing itself (since it's a docker container) and any other non-jenkins container from being destroyed.
HUGE DISCLAIMER: This is not meant as a "secure" solution. This only labels containers and filters for them.
- cleanup on shutdown (hook os.signal and call cleanup on all middlewares, remove socket, etc)
- refactor/organize code
- update readme (specific invariants (paths, sockets, middlewares...))
- tests (middleware unit tests, etc)
- build pipeline
- define security model
- implement security model