28 KiB
Awesome Docker
A curated list of Docker resources
Inspired by @sindresorhus' awesome and improved by these amazing contributors.
It's now a github project because it's considerably easier for other people to edit, fix and expand on Docker using Github. Just click README.md. If this list is not complete, you can contribute to make it so.
Please, help organize these resources so that they are easy to find and understand for new comers. See how to Contribute
What is Docker ?
Docker is an open platform for developers and sysadmins to build, ship, and run distributed applications. Consisting of Docker Engine, a portable, lightweight runtime and packaging tool, and Docker Hub, a cloud service for sharing applications and automating workflows, Docker enables apps to be quickly assembled from components and eliminates the friction between development, QA, and production environments. As a result, IT can ship faster and run the same app, unchanged, on laptops, data center VMs, and any cloud.
Source: What is Docker
Where to start ?
- 10-minute Interactive Tutorial
- Read this complete article: Basics – Docker, Containers, Hypervisors, CoreOS
- Watch the video: Docker for Developers (54:26) by @jpetazzo
- Install Docker on your machine and play with a few Useful Images
- Try Panamax: Docker Management for Humans It will install a CoreOS VM with VirtualBox and has nice front end
- Install Boot2Docker It works on Windows and OSX
- Install Kitematic Nice GUI, works on OSX
- Check out: Docker Cheat Sheet by @wsargent MUST SEE
MENU
- What is Docker ?
- Where to start ?
- Useful Articles
- Main Resources
- General Articles
- Deep Dive
- Metal
- Multi-Server
- Good Tips
- Continuous Integration
- Optimizing Images
- Service Discovery
- Security
- Performances
- Other
- Books
- Tools
- Dev Tools
- Continuous Integration / Continuous Delivery
- Hosting for repositories (registries)
- Hosting for containers
- Web Interface
- Local Container Manager
- Useful Images
- Docker Files
- Storing Images
- Monitoring
- Networking
- Logging
- Deployment and Infrastructure
- Remote Container Manager / Orchestration
- Service Discovery
- Slides
- Videos
- Interesting Twitter Accounts
Useful Articles
Main Resources
- Docker Weekly Huge resource
- Docker Cheat Sheet by @wsargent MUST SEE
- Century Links Labs
- Valuable Docker Links Very complete
- Docker Ecosystem (Mind Map) MUST SEE
- Docker Ecosystem (PDF) MUST SEE find it on twitter by Bryzgalov Peter.
- Blog of @jpetazzo
- Blog of @progrium
- Blog of @jwilder
- Blog of @crosbymichael
- Digital Ocean Community
- Container42
- Contrainer solutions
- DockerOne Docker Community (in Chinese) by @LiYingJie
General Articles
- Getting Started with Docker by @fideloper -- Servers For Hackers is valuable resource. At some point, every programmer finds themselves needing to know their way around a server.
- How to Use Docker on OS X: The Missing Guide
- Docker for (Java) Developers
- Deploying NGINX with Docker
- Eight Docker Development Patterns
- Rails Development Environment for OS X using Docker
- Logging on Docker: What You Need to Know + see the video (~50min)
Deep Dive
- Creating containers - Part 1 This is part one of a series of blog posts detailing how docker creates containers. By @crosbymichael
- Data-only container madness
Metal
Multi-Server
- Using Fig and Flocker to build, test, deploy and migrate multi-server Dockerized apps
- blimp Uses Docker Machine to easily move a container from one Docker host to another, show containers running against all of your hosts, replicate a container across multiple hosts and more. By @defermat and @schvin
Good Tips
- 24 random docker tips by @csabapalfi
- GUI Apps with Docker by @fgrehm
- Automated Nginx Reverse Proxy for Docker by @jwilder
- Using NSEnter with Boot2Docker
- A Simple Way to Dockerize Applications by @jwilder
- Building good docker images by @jbergknoff
- 10 Things Not To Forget Before Deploying Docker In Production
- Make Your Docker Workflow Awesome With Fig.sh Fig is a python application that helps you run groups of docker containers.
Continuous Integration
Optimizing Images
- Create the smallest possible Docker container
- Creating a Docker image from your code
- Optimizing Docker Images
- How to Optimize Your Dockerfile by @tutumcloud
- Building Docker Images for Static Go Binaries by @kelseyhightower
- Squashing Docker Images by @jwilder
- Dockerfile Golf (or optimizing the Docker build process)
Service Discovery
- @progrium Service Discovery articles series:
- Consul Service Discovery with Docker
- Understanding Modern Service Discovery with Docker
- Automatic Docker Service Announcement with Registrator
Security
- Docker and SELinux
- Bringing new security features to Docker
- Docker Secure Deployment Guidelines
- Security Best Practices for Building Docker Images
- Docker Security: Are Your Containers Tightly Secured to the Ship? SlideShare
- Tuning Docker with the newest security enhancements
- Lynis is an open source security auditing tool including Docker auditing
Performances
- Performance Analysis of Docker on Red Hat Enterprise Linux 7
- Distrubuted JMeter testing using Docker
- nsinit: per-container resource monitoring of Docker containers on RHEL/Fedora
Other
- Presentation: Docker and JBoss - the perfect combination
- Vidéo
- Slides
- Code source
- Docker on Raspberry Pi
- Raspberry Pi with Docker 1.5.0
- Swarming Raspberry Pi – Part 1
- Swarming Raspberry Pi, Part 2: Registry & Mirror
- Swarming Raspberry Pi: Docker Swarm Discovery Options
Books
- Docker Book by James Turnbul (@kartar)
- Docker in Action by Jeff Nickoloff (@allingeek)
- Docker in Practice by Ian Miell (@ianmiell) and Aidan Hobson Sayers (@aidanhs). ==> Website
Tools
Dev Tools
- GoSu ("run this specific application as this specific user and get out of the pipeline" -- entrypoint script tool) by @tianon
- ns-enter (no more ssh, enter name spaces of container) by @jpetazzo
- Squid-in-a-can (in case of proxy problem) by @jpetazzo
- docker-gen (Generate files from docker container meta-data) by @jwilder
- dockerize (Utility to simplify running applications in docker containers) by @jwilder
- registrator (Service registry bridge for Docker) by @progrium
- Dockly: Dockly is a gem made to ease the pain of packaging an application in Docker.
- docker-volumes (Docker Volume Manager) by @cpuguy83
- dockerfile_lint (A rule-based 'linter' for Dockerfiles) by @redhataccess
- powerstrip (A tool for prototyping Docker extensions)
- Vagga (Vagga is a containerisation tool without daemons. It is a fully-userspace container engine inspired by Vagrant and Docker, specialized for development environments.) by @tailhook
- dockerode (Not just another Docker Remote API node.js module) by @apocas
Continuous Integration / Continuous Delivery
- Drone - Continuous integration server built on Docker and configured using YAML files.
- Docker plugin for Jenkins - The aim of the docker plugin is to be able to use a docker host to dynamically provision a slave, run a single build, then tear-down that slave.
Hosting for repositories (registries)
Securely store your Docker images.
- Docker Hub (provided by Docker Inc.)
- Quay.io (part of CoreOS) - Secure hosting for private Docker repositories
- Reesd - Private Docker repositories and redundant storage service by @noteed
Hosting for containers
- Orchard (part of Docker Inc) - Get a Docker host in the cloud, instantly.
- StackDock - Docker hosting on blazing fast dedicated infrastructure
- Tutum - Simple hosting for your Docker containers.
- Giant Swarm - Simple microservice infrastructure. Deploy your containers in seconds.
- Triton - Elastic container-native infrastructure by Joyent.
- Amazon ECS - A management service on EC2 that supports Docker containers.
- Google Container Engine - Docker containers on Google Cloud Computing powered by Kubernetes.
Web Interface
- Docker Registry Web (A web UI for easy private/local Docker Registry integration) by @atc-
- DockerUI (DockerUI is a web interface to interact with the Remote API.) by @crosbymichael
- DockerBoard (Simple dashboards, visualizations, managements for your dockers.) by @dockerboard
Local Container Manager
- Fig (Fast, isolated development environments using Docker) -- http://www.fig.sh
- Shutit (a tool for building and maintaining complex Docker deployments) by @ianmiell
- FuGu (a docker run wrapper without orchestration) by @mattes
- Boot2Docker (docker for OSX and Windows) -- http://boot2docker.io/
- Vessel (Vessel automates the setup & use of dockerized development environments)
- OctoHost (Simple web focused Docker based mini-PaaS server. git push to deploy your websites as needed) by @octohost
- Dokku (Docker powered mini-Heroku in around 100 lines of Bash) by @progrium
- Ansible - manage docker containers
- Vagrant - Docker provider a good starting point is vagrant-docker-example by @bubenkoff
Useful Images
- Base Image by @phusion
- Busybox (with either
buildroot
or Ubuntu'sbusybox-static
) by @jpetazzo - Busybox (with
opkg
) by @progrium [@deprecated use docker-alpine instead] - OpenWRT by @zoobab
- Phusion Docker Hub Account
- passenger-docker (Docker base images for Ruby, Python, Node.js and Meteor web apps) by @phusion
- docker-alpine (A super small Docker base image (5MB) using Alpine Linux) by @gliderlabs
Docker Files
- Dockerfile Project : Trusted Automated Docker Builds. Dockerfile Project maintains a central repository of Dockerfile for various popular open source software services runnable on a Docker container.
- Collection of Dockerfiles by @crosbymichael
- DockerFile Example by @komljen
Storing Images
- Docker Registry (Registry server for Docker (hosting/delivering of repositories and images))
Monitoring
- Seagull (Friendly Web UI to monitor docker daemon.)
- Dockerana (packaged version of Graphite and Grafana, specifically targeted at metrics from Docker.)
- Docker-mon (Console-based Docker monitoring) by @icecrime
- Sysdig: An open source troubleshooting tool that provides a rich set of real-time, system-level information. It has container-specific features and is very useful in Docker environments.
- Zabbix Docker module: Zabbix module that provides discovery of running containers, CPU/memory/blk IO/net container metrics. Systemd Docker and LXC execution driver is also supported. It's a dynamically linked shared object library, so its performance is (~10x) better, than any script solution.
Networking
- Weave (The Docker network) -- Weave creates a virtual network that connects Docker containers deployed across multiple hosts.
Logging
- LogJam (Logjam is a log forwarder designed to listen on a local port, receive log entries over UDP, and forward these messages on to a log collecton server (such as logstash).)
- Docker-Fluentd: Docker container to Log Other Containers' Logs. One can aggregate the logs of Docker containers running on the same host using Fluentd.
Deployment and Infrastructure
- Centurion: Centurion is a mass deployment tool for Docker fleets. It takes containers from a Docker registry and runs them on a fleet of hosts with the correct environment variables, host volume mappings, and port mappings.
- Clocker: Clocker creates and manages a Docker cloud infrastructure. Clocker supports single-click deployments and runtime management of multi-node applications that run as containers distributed across multiple hosts. It leverages Weave for networking and [Brooklyn][boorklyn] for application blueprints.
- Cloud 66 - Full-stack hosted container management as a service
- Docket: Custom docker registry that allows for lightning fast deploys through bittorrent by @netvarun
- Longshoreman: Longshoreman automates application deployment using Docker. Just create a Docker repository (or use a service), configure the cluster using AWS or Digital Ocean (or whatever you like) and deploy applications using a Heroku-like CLI tool.
Remote Container Manager / Orchestration
- Kubernetes (Open source orchestration system for Docker containers by Google) -- http://kubernetes.io
- Shipyard (Composable Docker Management) -- http://shipyard-project.com/
- Panamax (Docker Management for Humans) -- http://panamax.io/
- Flynn (A next generation open source platform as a service (PaaS)) -- https://flynn.io/
- Deis (Your PaaS, your rules) -- http://deis.io/
- Gaudi (Gaudi allows to share multi-component applications, based on Docker, Go, and YAM) -- http://gaudi.io/
- CoreOS (Linux for Massive Server Deployments) -- https://coreos.com/
- Rancher (Portable AWS-style infrastructure service for Docker) -- http://www.rancher.io/
- dokku-alt (Dokku fork with Dockerfile support, database plugins, ACL and more)
- cAdvisor (Analyzes resource usage and performance characteristics of running containers)
- Docker container on Mesos (Docker plus Mesosphere provides an easy way to automate and scale deployment of containers in a production environment.)
- Marathon (Marathon is a private PaaS built on Mesos. It automatically handles hardware or software failures and ensures that an app is "always on".)
- Serf (Service orchestration and management tool.) by @hashicorp
- Flocker (Flocker is a data volume manager and multi-host Docker cluster management tool) by @ClusterHQ
- Decking: (Decking aims to simplify the creation, organsation and running of clusters of Docker containers in a way which is familiar to developers.)
- Maestro (Maestro provides the ability to easily launch, orchestrate and manage mulitiple Docker containers as single unit.)
- Citadel (Citadel is a toolkit for scheduling containers on a Docker cluster.)
Service Discovery
- docker-consul by @progrium
- etcd: A highly-available key value store for shared configuration and service discovery
- Docker Grand Ambassador This is a fully dynamic docker link ambassador. + Article
- confd: Manage local application configuration files using templates and data from etcd or consul.
Slides
Videos
Main Account
- Docker Youtube Account
- CenturyLink Labs Docker Interviews
- YLD Event Conference about containers!!! @YLDio
Useful videos
- Docker for Developers (54:26) by @jpetazzo <== Good introduction, context, demo
- SysAdminCasts: Introduction to Docker (15:49)
- Orchestrating Docker containers in production using Fig (7:11)
- Development Environments with Fig by Aanand Prasad (17:58)
- Docker in Production by @jpetazzo (36:05)
- Docker: How to Use Your Own Private Registry (15:01)
- Contributing to Docker by Andrew "Tianon" Page (InfoSiftr) (34:31)
- Performance Analysis of Docker - Jeremy Eder (1:36:58)
- Docker and SELinux by Daniel Walsh from Red Hat (40:23)
- Immutable Infrastructure with Docker and EC2 by Michael Bryzek (Gilt) (42:04)
- Ansible and Docker HP (32:38)
- Run Any App on Mesos on Any Infrastructure Using Docker (17:44)
- Extending Docker with Plugins (15:21)
- Logging on Docker: What You Need to Know (51:27)
Interesting Twitter Accounts
People
- Solomon Hykes Founder of Docker
- Gabriel Monroy Creator of Deis
- Jérôme Petazzoni Docker Developer
- Michael Crosby Docker Developer
- James Turnbull Author of Docker Book
- Jeff Lindsay Design-minded software architect