23 KiB
Awesome Docker
A curated list of Docker resources
Inspired by @sindresorhus' awesome and improved by these amazing contributors.
This list is not exhaustive, contribute to make it so: add your docker resource by forking / sending pull requests.
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.
MENU
- 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
- Century Links Labs
- Valuable Docker Links Very complete
- Docker Ecosystem (Mind Map) MUST SEE
- Blog of @jpetazzo
- Blog of @progrium
- Blog of @jwilder
- Blog of @crosbymichael
- Digital Ocean Community
- Container42
- Contrainer solutions
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
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
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
Books
- Docker Book by James Turnbul (@kartar)
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 - https://drone.io/
- 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.
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/
- OctoHost (Simple web focused Docker based mini-PaaS server. git push to deploy your websites as needed) by @octohost
- 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 - DockerFile Example by @komljen
- 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 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
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
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).)
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.)
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
- 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)
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