Docker Essentials

Introduction

Docker is a containerization platform that wraps a piece of software in a bundle that contains everything needed to run including code, runtime, system tools, system libraries – anything that can be installed on a server. This guarantees that the software will always run the same, regardless of its environment.
Docker is one of the core components when we want to build an elastic micro services architecture that allows the application tier to scale horizontally. This session will cover various aspects of Docker and the eco system – registry, machine, compose along with getting an exposure of the various container services from cloud providers.

Prerequisites

1) Applicable for Developers / Designers / Technical enthusiasts

2) Who do programming in any language (Java preferred)

3) Familiarity with containers like Tomcat, database like MySQL

4) And have some exposure/understanding in setting up deployment environments
5) Having Experience > 3 years

Lab setup

This training has hands-on sessions that has the following dependencies –
Hardware
1. Ubuntu desktop version with internet access (or access to a Debian environment)
2. Intel I3 processor or equivalent or above
3. 8GB RAM or above + 2GB free disk space or more

For both Windows and Mac download VirtualBox from https://www.virtualbox.org/wiki/Downloads
and install ubuntu 16.04 Xenial mini, download from https://help.ubuntu.com/community/Installation/MinimalCD

  • Optional setup of a Docker environment on the cloud (AWS and/or Google). Participants need to have their own cloud accounts.

Practicals

1. Install Docker from scratch

2. Build images of applications, database

3. Create multiple containers on the host

4. Deploy images to a container service by a cloud provider (optional)

Part 1 – Warm up!

1. Benefits

2. Introduction to containers

3. Containers vs Virtual Machines

4. Overall process flow

5. Docker engine

6. Registry

7. Creating containers

8. Orchestration overview – machine, swarm, compose

Part 2 – Setup and Installation

9. Install docker from the ground up

10. Docker Images

11. Docker Hub & searching for images

12. Create multiple containers and explore the process of container creation

13. Commands to work with containers

14. Listing, starting, stopping and deleting containers
15. Creating and removing images

16. Looking inside a container / shell into a container
17. Exploring the ephemeral nature of containers

18. Discuss the best practice of saving data

19. Docker container and OS pid 1 relationship

Part 3 – Docker Engine

20. Dockerize a web application

21. See logs of a container

22. Mapping ports from container to the host
23. Creating a mount point

24. Creating a custom image

25. Introduction and explore dockerfile and build process

26. Explore the key dockerfile commands (from, run, cmd, env, expose)

27. Introduction to layers & optimizing layers in a Docker image

28. Dockerize MySQL

29. Create a custom schema and create an image
30. Access the MySQL from any MySQL client and create data

31. Exporting and importing images

32. Container linking (old way)

33. Docker network (new way)

34. Building a multi-container application

Part 4 – Cloud and container providers

35. Creating a private repository in DockerHub

36. Publish custom images to the private repository on DockerHub

37. Explore the models of DockerHub and CI

38. Deploy the custom image to a cloud provider
39. Managing containers and instances that run containers

40. Defining horizontal elasticity rules

Part 5 – Operations & Orchestration

41. Docker daemon maintenance operations
42. Private registry – setup, push an image
43. Understanding Docker machine
44. Understanding Docker swarm
45. Understanding Docker compose