Learn

Docker

What is Docker?

  • Run applications in isolation
  • Dynamically Scalable
  • Changes ways of working 

Virtual Machine

Virtual Machines provide the functionality to execute entire operating systems. They run on top of a Hypervisor which provides access to the computer's hardware. 

Docker

Docker creates a lightweight executable package of a piece of software and provides everything you need to run it.

Isn't that what VM's do?

Docker === Colaboration

Docker was not made by a single entity. It is forged through the combination of 3 components.

 

  1. LXC (Linux Containers)
  2. runC (Replaces LXC in later versions of Docker)
  3. Aufs (The filesystem tool docker uses)
  4. SystemD (The primary tool to Manage containers)

 

 

How To use docker

Terminology

Term Glossary
Dockerfile A text file containing all the commands needed to build each layer of a image sequentially
Context The files in the same folder as your docker file
Build The process of building an image from a Dockerfile
Image An ordered collection of root filesystem changes and the execution parameters for your application
Container A runtime instance of a Docker Image
Compose A tool for defining and running multi container applications with docker
Repository A set of docker images
Registry A place to publish and share docker images
Swarm A cluster of one or more containers running in parallel

DockerFile

The Dockerfile defines the docker build steps. 

 

FROM - The base image

RUN - Run any bash commands

COPY - Copy files from System to Container 

EXPOSE -  Open any ports

CMD - This command is ran on container start

WORKDIR - Sets DIR for commands

# Base Image Node.js version 9.5.0
FROM node:9.5.0

# Copy source code
COPY . /app

# Set working directory
WORKDIR /app

# Install application dependencies
RUN npm Install

# Configure networking
EXPOSE 80

# Run on docker application start
CMD ['npm', 'start']



Docker Commands

docker build​​

  • Creates Docker Image from a Dockerfile

​docker images

  • List all created images

docker run  [OPTIONS] IMAGE [COMMAND] [ARG...]

  • Runs specified Docker Image

​docker ps

  • List running containers

 

 

 

Docker compose

Docker Compose is a tool to define and run multi container applications

 

It is configured with yaml

  • Define each service including 
    • image
    • ports
    • restart behaviour
    • environment variables

To compose your application

  • docker-compose up -d

 

 

 

 

Docker

By Thomas Ankcorn