Docker for Developers
© Elephant Scale
2022 January
Overview
Containerization is one of the most important developments in application deployment in many years, and paves the way for many other exciting possibilities in dev/ops.
Docker is the industry-standard container format and Docker tools are the cross-platform standard for creating containers.
This course teaches containerization, docker and docker development to participants.
What you will learn
- Containerization technologies
- Docker and its ecosystem
- Using Docker images
- Building custom docker images
- Packaging applications into containers
- Publishing images to registry
- Docker networking
- Orchestration with docker compose
- Troubleshooting tips
Audience
Developers, Architects, DevOps
Duration
3 days
Format
Lectures and hands-on labs. (50%, 50%)
Prerequisites
- Must-have: comfortable with Linux environment.
- Previous development experience in popular languages (Java, Python, Javascript) is recommended.
Lab environment
A cloud based lab environment will be provided.
Students will need the following
- A reasonably modern laptop with unrestricted connection to the Internet. Laptops with overly restrictive VPNs or firewalls may not work properly
- Chrome browser
- SSH client for your platform
Detailed Outline
Containerization Introduction
- Monolithic apps vs. microservices
- Deploy issues faced by developers
- Virtual machines vs containers
- Containerization technologies
Docker Intro
- Docker architecture
- Docker internals
- Running docker
- Docker concepts: images, containers, registries
- Introduction to Dockerhub
- Labs
Working with Docker Containers
- Downloading Docker images
- Running docker containers
- Managing container life cycle
- Labs
Building Custom Docker Images
- Bundling our applications in a container
- Introducing the Dockerfile
- Building an image from a Dockerfile
- Understanding layers and commands
- Labs
Working with the Registry
- Introduction to container registries
- Introduction to DockerHub
- Creating a repository on DockerHub,
- Publishing custom images to registry
- Dev setup with a private container registry
- Wrap-up
- Labs
Networking
- Understanding Docker networking
- Various networking options for Docker
- Bridge vs Host networking
- Exposing ports
Storage
- Persistent storage in Docker
- Using binds and volumes
- Defining and using storage volumes
- Storage backup and restore
- Labs
Docker Compose
- Orchestrating containers
- Docker compose concepts
- First application with docker compose
- Developing complex applications using docker compose
- Labs
Troubleshooting and Debugging
- Inspecting docker logs
- Docker daemon logging
- Container logging
- Troubleshooting and optimizing builds
- Cleanup and maintenance
Next Steps
- Discuss projects, use cases and next steps