O'Reilly logo
live online training icon Live Online training

Introduction to Docker and Containers

How to Containerize

Noureddin Sadawi

Docker, as a company and technology, has been adopted quickly by so many entities, at a user and industry level. With its powerful and easy to use approach, now all major cloud computing providers such as Google, Amazon and Microsoft support and heavily use docker. Therefore, it makes perfect sense to learn docker and be familiar with it as it opens up more doors of opportunities in the software world.

The course will begin by addressing the main idea behind docker and discuss the major differences between it and virtual machines (VMs). It will also provide a typical example problem that demonstrates the need for something like docker.

The course will continue by providing how to install and use docker on different platforms as well as by demonstrating the main docker commands and how to use them. This will include creating your first container, running it in the background and stopping/killing it.

As the course progresses, we will learn how to build images using Dockerfile, how to search for existing docker images, how to tag docker images and much more.

Deploying a software tool or application and running it smoothly in different environments and platforms can be one of the most difficult challenges. This course will be a great starting point where you as a learner will have the chance to do just that. In other words, you will learn how to containerize an application and run it via docker.

What you'll learn-and how you can apply it

  • Understand the idea behind docker and why it is important
  • Learn the difference between containers and VMs
  • Install and use docker in different operating systems
  • Be able to make decisions where and when docker should, or should not, be used
  • Create docker containers and add features and applications to them
  • Run docker containers smoothly and become familiar with how to stop them
  • Learn the difference between docker containers and images
  • Download and use existing docker images. Also, upload your own docker image to docker hub so others can use it
  • Maximize usage and minimize errors by avoiding the dependency hell problem via docker containers
  • Develop software applications that can be immediately used by others
  • Run several docker containers on the same machine and yet save on resources, unlike when VMs.

This training course is for you because...

  • As a software developer, DevOps or software systems architect you need to be up-to-date with the latest technology
  • As a project leader, you would like to have an overview of the technology and develop an understanding of how it works

Prerequisites

  • Familiarity with command-line (e.g. terminal)
  • Familiarity with software installation
  • Familiarity with Ubuntu linux (recommended, not required)

Course Set-up

  • Ubuntu Linux is highly recommended, otherwise Windows or Mac OS are fine
  • Speedy internet connection

Recommended Preparation

Recommended Follow-up

About your instructor

  • Dr. Noureddin Sadawi is a consultant in machine learning and data science. He has several years’ experience in various areas involving data manipulation and analysis. He received his PhD from the University of Birmingham, United Kingdom. During his PhD he developed a technique to extract precise information from bitmap images of chemical structure diagrams. He developed a tool called MolRec and used it to participate in evaluation contests at two international events - TREC2011 and CLEF2012 - and won both of them.

    Noureddin is an avid scientific software researcher and developer who has a passion for learning and teaching new technologies. He has been involved in several projects spanning a variety of fields such as bioinformatics, drug discovery, omics data analysis and much more. He has taught at multiple universities in the UK and has worked as a software engineer in different roles. One of his latest positions was a research associate at the highly respected Imperial College London where he contributed significantly to the PhenoMeNal project (a project that heavily uses docker). Currently, he is a research fellow at the department of computer science, Brunel University – London where he developed deep learning techniques for the analysis of human gesture data.

Schedule

The timeframes are only estimates and may vary according to how the class is progressing

Part 1: Overview and Installation of Docker (60 minutes)

  • What are docker containers?
  • What is virtualization and what are virtual machines (VMs)?
  • What are the differences between docker containers and virtual machines
  • Why use docker containers instead of VMs
  • Some examples on typical situations where docker is required
  • Demonstration of Docker Installation on different operating systems

Q&A (15 minutes)

Break (10 minutes)

Part 2: Creating and running docker containers (60 minutes)

  • Creating your first docker container
  • Running containers in the background and how to stop/kill containers
  • The difference between docker images and containers
  • Searching for docker images
  • Building docker images interactively
  • Tagging docker images
  • Some basic but essential docker commands

Q&A (15 minutes)

Break (10 minutes)

Part 3: Getting better at docker (60 minutes)

  • Building docker images using Dockerfile (using docker build command)
  • Debugging the output of docker build command
  • Checking docker history and other useful docker commands
  • Learning Dockerfiles’s CMD command
  • Learning Dockerfiles’s ENTRYPOINT command
  • Combining Dockerfile’s CMD and ENTRYPOINT

Q&A (15 minutes)

Break (10 minutes)