Docker

Linux containers are changing the way companies think about service development and deployment. Containers play a vital role in the modern data-center, and Docker is leading the way. This course covers all the core features of Docker including: container creation and management, interacting with Docker hub, using Dockerfile to create and manage custom images, advanced Docker networking (how to safely expose container services to the world, and link containers), the use of Docker volumes to manage persistent data, and Docker Compose to build multi-container applications. Emphasis is placed on best practices and how to secure Docker installations and containers. Course culminates with comprehensive labs where students use Docker, Git, and a continuous integration server to automate the testing of containerized applications.

Course Outline

CONTAINER TECHNOLOGY OVERVIEW

  • Application Management Landscape

  • Application Isolation

  • Container Resource Control & Security

  • Container Types

  • Container Ecosystem


LAB TASKS




  • Containers via libvirt-lxc


FUNDAMENTALS

  • Installing Docker

  • Docker Control Socket

  • Creating a New Container

  • Listing Containers

  • Viewing Container Operational Details

  • Running Commands in an Existing Container

  • Interacting with a Running Container

  • Stopping, Starting, and Removing Containers


LAB TASKS




  • Docker Basics


IMAGES

  • Docker Images

  • Listing and Removing Images

  • Searching for Images

  • Downloading Images

  • Committing Changes

  • Uploading Images

  • Export/Import Images

  • Save/Load Images


LAB TASKS




  • Docker Images


DOCKERFILE

  • Dockerfile

  • Caching

  • docker build

  • Dockerfile Instructions

  • Defining Container Executable

  • Running Commands

  • Getting Files into the Image

  • ENV and WORKDIR

  • Best Practices


LAB TASKS




  • Dockerfile Fundamentals


NETWORKING

  • Overview

  • Data-Link Layer Details

  • Network Layer Details

  • Hostnames and DNS

  • Local Host <--> Container

  • Container <--> Container

  • Container <--> Container: Links

  • Remote Host <--> Container


LAB TASKS




  • Docker Networking

  • Docker Ports and Links


VOLUMES

  • Volume Concepts

  • Creating and Using Volumes

  • Changing Data in Volumes

  • Removing Volumes

  • Backing up Volumes


LAB TASKS




  • Docker Volumes


DOCKER COMPOSE

  • Concepts

  • Compose CLI

  • Defining a Service Set


LAB TASKS




  • Docker Compose


CONTINUOUS INTEGRATION WITH GITLAB, GITLAB CI, AND DOCKER LAB TASKS

  • GitLab and GitLab CI Setup

  • Unit and Functional Tests

Audience

Proficiency with the Linux CLI. A broad understanding of Linux system administration.