Course Outline
Introduction
- Overview of advanced Docker concepts and operational workflows
- Refresher on containerization principles and real-world use cases
- Key Docker terminology and essential components
- Course objectives and an overview of the hands-on lab environment
Docker Features and Architecture Overview
- The Docker Engine and its constituent parts
- Understanding the client, daemon, images, containers, and registries
- Docker architecture and the container lifecycle
- Docker Hub and the management of private registries
- Essential Docker CLI commands for advanced users
- Strategies for managing Docker resources and configurations
Docker Setup
- Installation of Docker Community Edition
- Configuration of the Docker environment
- Verification of a successful Docker installation
- Optimizing Docker settings for development and testing scenarios
- Handling Docker configuration files and storage options
- Basic techniques for troubleshooting Docker environments
Creating Custom Docker Images
- Understanding the structure of Docker images and layers
- Authoring efficient and effective Dockerfiles
- Best practices for Dockerfile instructions
- Managing the build context effectively
- Processes for building and tagging images
- Utilizing
.dockerignorefiles - Techniques for optimizing image size and build speed
- Version control and tagging strategies for images
- Implementing multi-stage Docker builds
- Publishing images to container registries
Managing Multi-Container Applications with Docker Compose
- Introduction to Docker Compose functionality
- Defining services via Compose configuration files
- Setting up networks and data volumes
- Handling environment variables
- Managing service dependencies and startup sequences
- Scaling and operating multiple services concurrently
- Building application images using Compose
- Managing application-level configurations
- Debugging techniques for multi-container setups
- Best practices for writing Compose files
Challenges in Deploying Large-Scale Docker Applications
- Orchestrating containers across multiple hosts
- Ensuring application scalability and high availability
- Implementing service discovery mechanisms
- Distributing load effectively
- Managing configurations and sensitive data
- Addressing persistent storage complexities
- Monitoring and logging in high-volume environments
- Executing rolling updates and deployment strategies
- Recovering from failures at the container or host level
Maintaining Control Through Container Orchestration
- Foundations of container orchestration
- Analyzing the benefits and constraints of orchestration
- Comparison of Docker Swarm, Kubernetes, and alternative solutions
- Workload scheduling and management
- Service discovery and network connectivity
- Achieving automatic scaling and self-healing capabilities
- Performing rolling deployments and rollbacks
- Resource management and workload isolation
- Criteria for selecting the right orchestration platform
Practical Kubernetes Implementation
- Kubernetes architecture and primary components
- Understanding Pods, nodes, and clusters
- Managing Deployments and ReplicaSets
- Services and service discovery mechanisms
- Using ConfigMaps and Secrets for configuration
- Organizing resources with Namespaces
- Strategies for application scaling
- Executing rolling updates and rollbacks
- Core concepts in Kubernetes networking
- Handling persistent storage solutions
- Implementing health checks for resilience
- Deploying Docker applications onto Kubernetes
- Debugging Kubernetes workloads
Advanced Docker Networking
- Architectural overview of Docker networking
- Exploring Bridge, host, overlay, and other network drivers
- Enabling communication between containers
- Connecting containers to external systems
- Creating custom Docker networks
- Implementing network isolation
- Utilizing service discovery within networks
- Managing port publishing and exposure
- Networking considerations in multi-host setups
- Techniques for diagnosing networking issues
Docker Security
- Fundamental principles of Docker security
- Container isolation and defining security boundaries
- Running containers with least-privilege principles
- Managing users and permissions within containers
- Understanding Linux capabilities and security controls
- Hardening Docker images
- Scanning images for vulnerabilities
- Secure handling of secrets
- Protecting Docker registries
- Implementing network security and isolation
- Securing the Docker daemon
- Adhering to container security best practices
Establishing a CI Workflow for Docker Applications
- Introduction to CI for containerized workloads
- Automating the build process for Docker images
- Automated testing of images and containers
- Strategies for image tagging and versioning
- Linking source control systems with Docker builds
- Automating vulnerability scans on images
- Automated publishing to registries
- Managing build artifacts
- Incorporating automated quality gates
- Designing a reproducible Docker CI pipeline
Integrating Docker into Existing Workflows
- Fitting Docker into established development processes
- Containerizing legacy or existing applications
- Connecting Docker with CI/CD platforms
- Managing Dev, Test, Staging, and Production environments
- Implementing automated deployment strategies
- Managing configuration across different environments
- Integrating with container registries
- Handling deployment approvals and release management
- Monitoring application release status
- Ensuring consistency across all environments
Best Practices for Containers and Orchestration
- Designing Docker images for long-term maintainability
- Optimizing container startup times and performance
- Managing the container lifecycle effectively
- Efficient resource allocation strategies
- Defining logging and monitoring strategies
- Best practices for configuration and secret management
- Achieving high availability and fault tolerance
- Scaling containerized applications successfully
- Deploying containers securely
- Versioning and release management strategies
- Best practices for orchestration architecture
Troubleshooting
- Diagnosing container startup errors
- Analyzing application and container logs
- Inspecting the state of containers and images
- Resolving networking connectivity issues
- Fixing storage and volume-related problems
- Identifying causes of image build failures
- Debugging Docker Compose application issues
- Investigating resource constraints and performance bottlenecks
- Basic principles of Kubernetes troubleshooting
- Hands-on troubleshooting drills
Summary and Conclusion
- Recap of essential Docker concepts
- Review of image creation and container management techniques
- Recap of deploying multi-container applications
- Summary of orchestration concepts and Kubernetes features
- Review of Docker networking and security measures
- Recap of CI/CD integration practices
- Key takeaways on containerization and orchestration best practices
- Final practical exercise
- Open floor for questions and discussion
Requirements
- Prior practical experience working with Docker containers.
Target Audience
- Software Developers
- DevOps Engineers
- System Administrators
Testimonials (7)
The trainer's broad knowledge, his abilities to solve issues that spontaneously occurred during the practice sessions. Also, the exercises themselves are adequate to help fix the subjects contained in the course.
Cosmin - Ness Digital Engineering
Course - Advanced Docker
The pace and the fact that we went in depth really quickly but I think we could went more in depth even from first day (considering that it is a docker advanced training, we suppose that some basic docker knowledge is there).
SORIN ROMAN - Ness Digital Engineering
Course - Advanced Docker
the trainer is a nice person and explained everything very well, in a structured way that makes sense and flows. cool exercises for practice
Andreas - Ness Digital Engineering
Course - Advanced Docker
The training had a good pace, tailored to the experience of every participant. Also, it has a nice balance of theoretical notions and practical exercises.
Laurentiu - Ness Digital Engineering
Course - Advanced Docker
The structure and the way it was presented. To me, this training was like a journey: from app to docker containers, to kubernetes. The exercises were engaging and on point
Andrei - Ness Digital Engineering
Course - Advanced Docker
The simple explanation and that the course was didactic
Diana Martinez - AT&T
Course - Advanced Docker
The instructor is a well-experienced developer with Docker and he likes to share his experiences with the group. DaDesktop is a very nice platform to work with.