Category Archives: Docker

Dockerzing Docker

If you feel overwhelmed by the breakdown of technologies Docker is built on, here is a cheat list to ease the pain 🙂
Just take a look at the new structure of the Docker platform. Many of its components are now offered as generalized components any one can use to build a new container framework and yet are used to build any new release of Docker open source free tools, as well as enterprise paid products.

This new structure is part of the OCI – Open Container Initiative driven projects.

Users of Docker tools should not experience any change in their work flows, yet system builders now have common stardard hooks they can use to stack their solutions into Docker and other container based frameworks.

  1. Moby is a standard framework for system builders to create customized containers based on Docker or other engines. Moby container images are called Assemblies and they usually contain a specific set of components such Infrakit, Linuxkit, Containerd, JDK, Java App.
  2. InfraKit is a toolkit for creating and managing self-healing infrastructure. InfraKit is designed to support setup and management of base infrastructure. For example, it can help you manage a system like a cluster or container orchestrator
  3. LinuxKit, a toolkit for building custom minimal, immutable Linux distributions. Linuxkit is a hardened minimized Linux image as the basis for building container images – based on minimized read-only Alpine Linux that is cryptographically  verified and used for the initialization of a container. Linuxkit include a timer counter that triggers the refresh of your container image so you always run the latest most secure baseline and also reverse any changes an attacker may have caused to your container
  4. Containerd is the open source generalized replacement for dockerd daemon. It takes care of image retrieval, network name spaces, launching runC. Containerd includes a daemon exposing gRPC API over a local UNIX socket – much more robust that the REST API previous versions of Dockerd daemon was using.
  5. RunC is a CLI that activates the actual container engine required for our image: Docker, Rkt or others
  6. Notary is the mechanism that signs an verifies cryptographically the images in its registry.
  7. SwarmKit is a toolkit for orchestrating distributed systems at any scale. It includes primitives for node discovery, raft-based consensus, task scheduling and more. Swarmkit takes care of cluster maintenance including rotation of certificates.

Recent DockerCon EU Black Magic bits highlights, Tips and Tools

I remember how I felt years ago, when I had the first couple of Linux and Windows Virtual machines running in the lab. It was a great sense of freedom, from hardware limitations, from lost time and productivity. It was real Magic.

Then about 2 years ago, when Docker started its journey, it almost felt like black magic. The speed, the embedded versioning, the Freedom from the Operating system cage…

Looking at the new opportunities and energy at the recent DockerCon EU (2015), feels like a visit to Harry Potter’s Hogwarts castle. Anyway, enough with the story, let’s dig into some tech bits:

  1. Impressive focus on security, quality,scalability and stability (See the Keynote as well as this session)
  2. Docker Trusted Registry – Easy signing of your code using UBkey stick (a bit later AWS launched its own Docker registry service..)
  3. Remote revocation of signed code in case of compromise
  4. Nautilus- Automatic vulnerability scan of code that is uploaded into Dockerhub
  5. Internal Dockerhub on premise option including the secure code signing and Nautilus features
  6. Swarm cluster scales from 10 to 1000 nodes running 50,000 containers without any hiccups!
  7. Docker Universal Control plane – the dashboard for managing your docker swarm as well as on-the-fly secret data insertion and rotation, On-The-Fly insertion of specific Docker images across Swarm nodes.
  8. Docker Remote API that allows remote CLI, remote Compose and Docker Swarm
  9. Docker compose now
    1. Includes the network overlay system that automatically allows containers to find each other and applications merely call hostnames without worrying  about name resolution
    2. Allows you to assign volumes to specific containers, which allows mixing of both persistent and non-persistent applications
  10. Started supporting seccomp for more granular Docker permissions as well as user namespaces which allows a process inside a container to “believe” it is running as root, while in fact it’s not
  11. Docker monitoring resources
    1. A massive list of tools on Github
    2. InfluxDB – Platform for Time Series data
    3. cAdvisor
    4. Grafana
    5. VegasBrianc/docker-monitoring
    6. Prometheus
  12. Docker tools
    1. Docker Bridge: Interlock, Registrator
    2. Service Registry: etcd, consul, zookeeper
    3. Template: Interlock, confd, consul-template
  13. Reverse Proxy: HAProxy, NGINX, Traefik
  14. Docker sidekicks – special containers that provide Service Discovery, HealthChecks and orchestration through a REST API. Examples include Amazon ECS Agents, AWS Beanstalk, COREOS, Docker Ambassador
  15. DCOS – The DataCenter Operating System – The Mesosphere Datacenter Operating System (DCOS) is a new kind of operating system that spans all of the machines in your datacenter or cloud. It provides a highly elastic, and highly scalable way of deploying applications, services and big data infrastructure on shared resources including AWS, GCP, Azure.
  16. Docker for Windows
    1. Will not run Linux images
    2. Same code base as Docker for Linux
    3. Requires Windows Server 2016
    4. Includes an abstraction layer between Docker and the Windows Kernel
    5. The Docker C:\Windows maps to \Global?\C:\Windows
    6. Contains all Windows device entry points including C: and \Registry, \Device\TCP
    7. Each container has its own “chrooted” devices
    8. File system is hybrid of UnionFS and NTFS: Virtual Block Device + NTFS partition per container Symlinks to layers on host FS
  17. Sundial – Rides on top of AWS ECS (Docker on AWS) and offers aggregation of Docker JOBS / ECS into processes with dependency tree graphical representation and central logging and control
  18. Great sessions you should NOT miss
    1. Green Font, Black Background – Docker Security by Example
    2. Cgroups, namespaces, and beyond: what are containers made from?
    3. Cultural Revolution – How to Manage the Changes Docker Brings
    4. How to be successful running Docker in Production
    5. Continuous Integration with Jenkins, Docker and Compose

(Native) Docker Windows Containers Revealed

If you were wondering how exactly does Native Docker for Windows Server look, you would love this Native Docker containers on Windows walk through done by Microsoft Channel9 Visual Studio podcast.

Here is what I loved about it:

  1. General yet very good explanation of what docker is all about and why should you care
  2. What does Native Docker for Windows look like (basically the host for containers is based on Windoes Core edition)
  3. Clarifying the confusion around the mixing of Linux Windows and Docker
  4. Live Demo of launching Windows Docker containers right from Visual Studio deploying the .NET application you develop and into Azure host

Got any other great Docker resources you want to share?