# Tales of a Part-time Sysadmin: Dogfooding Docker to test Docker

DevFeed: [Tales of a Part-time Sysadmin: Dogfooding Docker to test Docker](<https://devfeed.tech/articles/tales-of-a-part-time-sysadmin-dogfooding-docker-to-test-docker-35162.md>)

Original publisher: [Read original article](<https://blog.jessfraz.com/post/dogfooding-docker-to-test-docker/>)

Published: 2015-06-07T01:10:30Z

Content type: article

Language: en

Sources: [Jessie Frazelle](<https://devfeed.tech/sources/jessie-frazelle.md>)

Topics: [Docker](<https://devfeed.tech/topics/docker.md>), [Testing](<https://devfeed.tech/topics/testing.md>), [ci](<https://devfeed.tech/topics/ci.md>), [Jenkins](<https://devfeed.tech/topics/jenkins.md>), [Server](<https://devfeed.tech/topics/server.md>)

Tags: [ci](<https://devfeed.tech/tags/ci.md>), [docker](<https://devfeed.tech/tags/docker.md>), [dogfooding](<https://devfeed.tech/tags/dogfooding.md>), [jenkins](<https://devfeed.tech/tags/jenkins.md>), [sysadmin](<https://devfeed.tech/tags/sysadmin.md>), [testing](<https://devfeed.tech/tags/testing.md>)

## AI overview

This article describes how Docker's core team uses Docker to run and test Docker. It explains the CI infrastructure, including Jenkins in a Docker container, storage-driver and Linux distribution matrices, and testing across multiple servers, kernels, Docker Windows clients, and pull requests.

## Source excerpt

This is a tale about how we use Docker to test Docker. Yes, I am familiar with the meme. Puhlease. Many of you are familiar with the fact I work on the Docker core team. Which consists of fixing bugs, doing releases, reviewing PRs, hanging out on IRC, mailing lists etc etc etc. But what you may not know is that in addition to all these things I also manage our testing infrastructure. Now really this in itself could be a fulltime job. However it is not my fulltime job, nor would I ever want it to be. [insert gif about yak shaving here] This blog post is going to be about how I manage ~50 servers but don't do anything at all. Of course, I have my angry sysadmin moments when everything breaks and I could punch a whole in a wall... but who doesn't? Our CI First let me take a chance to familiarize you with how we test Docker. Docker's tests run in a Docker container. We use Jenkins as our CI mostly because we needed a lot of flexibility and control. Obviously everything in our infrastructure runs in Docker, so that even goes for Jenkins. We use the official image for our Jenkins container. Docker itself has 6 different storage driver options. These are aufs, btrfs, devmapper, overlay, vfs, and zfs. We have servers that use each of these hooked up to our Jenkins instance for testing. Along with all the storage driver options, Docker also runs on any linux distro and a world of different linux kernel versions. In order to be able to try and test all this differentiation, each server runs a different kernel and all major linux distros are accounted for. With every push to master on the docker/docker repo, we run tests on the entire storage driver matrix. We also trigger builds to test the unsupported lxc execdriver for Docker. And we trigger builds to test the Docker Windows client. Right there is three different jobs running on 8 different servers just for 1 push to master. Did I mention we have 9 Windows servers and 9 linux remote hosts paired with those servers for testing