Tips
To delete all the build cache¶
docker builder prune
To delete all stopped containers, un-used images, build cache
docker system prune
Docker within Docker¶
https://jpetazzo.github.io/2015/09/03/do-not-use-docker-in-docker-for-ci/
Do you just want to be able to run Docker (specifically: build, run, sometimes push containers and images) from your CI system, while this CI system itself is in a container? All you want is a solution so that your CI system like Jenkins can start containers.
And the simplest way is to just expose the Docker socket to your CI container, by bind-mounting it with the -v flag.
Simply put, when you start your CI container (Jenkins or other), instead of hacking something together with Docker-in-Docker, start it with:
docker run -v /var/run/docker.sock:/var/run/docker.sock ...
Now this container will have access to the Docker socket, and will therefore be able to start containers. Except that instead of starting “child” containers, it will start “sibling” containers.
Try it out, using the docker official image (which contains the Docker binary):
docker run -v /var/run/docker.sock:/var/run/docker.sock -ti docker
This looks like Docker-in-Docker, feels like Docker-in-Docker, but it’s not Docker-in-Docker: when this container will create more containers, those containers will be created in the top-level Docker. You will not experience nesting side effects, and the build cache will be shared across multiple invocations.
To view the all the actions that took place in order to generate the image of a container¶
docker history
To view the full commands¶
docker history --format "{{.ID}}: {{.CreatedBy}}" --no-trunc docker