Course Outline
Introduction
- Fundamentals of advanced Docker concepts and workflows
- Recap of containerization principles and applicable use cases
- Essential Docker terminology and core components
- Overview of course objectives and the hands-on environment
Overview of Docker Features and Architecture
- The Docker Engine and its constituent parts
- Docker client, daemon, images, containers, and registries
- Docker architecture and the container lifecycle
- Docker Hub and private registry management
- Advanced Docker CLI operations
- Managing Docker resources and configurations
Setting up Docker
- Installing Docker Community Edition
- Configuring the Docker operating environment
- Verifying the correctness of the Docker installation
- Optimizing Docker setup for development and testing phases
- Managing Docker configuration files and storage backends
- Initial steps in troubleshooting the Docker environment
Building Your Own Docker Images
- Understanding the structure of Docker images and layers
- Crafting effective Dockerfiles
- Dockerfile instructions and industry best practices
- Managing the build context efficiently
- Building and tagging images for version control
- Utilizing
.dockerignorefiles - Optimizing image size and build speed
- Managing image versions and tagging strategies
- Implementing multi-stage Docker builds
- Publishing images to container registries
Running Multi-Container Docker Applications with Docker Compose
- Introduction to Docker Compose functionality
- Defining services via Compose files
- Configuring networks and volume mounts
- Handling environment variables effectively
- Managing service dependencies and startup sequences
- Running and scaling multiple interconnected services
- Building application images through Compose
- Managing application-level configurations
- Debugging multi-container application issues
- Best practices for using Docker Compose
The Challenges of Deploying Many Docker Applications
- Managing containers distributed across multiple hosts
- Ensuring application scaling and availability
- Implementing service discovery mechanisms
- Configuring load balancing strategies
- Managing configuration and sensitive data
- Addressing persistent storage challenges
- Implementing monitoring and logging at scale
- Executing rolling updates and application deployments
- Recovering from container and host failures
How Container Orchestration Helps You Maintain Control
- Foundations of container orchestration
- Analyzing the benefits and limitations of orchestration
- Comparing Docker Swarm, Kubernetes, and alternative solutions
- Scheduling workloads and managing resources
- Service discovery and networking in orchestrated environments
- Scaling applications and implementing self-healing features
- Performing rolling deployments and rollbacks
- Resource management and workload isolation
- Selecting the most appropriate orchestration platform
Kubernetes in Action
- Kubernetes architecture and core components
- Understanding Pods, nodes, and clusters
- Managing Deployments and ReplicaSets
- Configuring Services and service discovery
- Utilizing ConfigMaps and Secrets
- Organizing resources with Namespaces
- Scaling applications within a cluster
- Implementing rolling updates and rollbacks
- Basics of Kubernetes networking
- Handling persistent storage in Kubernetes
- Configuring health checks and application resilience
- Deploying Docker applications to Kubernetes clusters
- Troubleshooting Kubernetes workloads
Advanced Docker Networking
- Docker networking architecture overview
- Bridge, host, overlay, and other network drivers
- Facilitating container-to-container communication
- Enabling communication between containers and external systems
- Creating custom Docker networks
- Implementing network isolation
- Configuring service discovery in networks
- Port publishing and exposure strategies
- Networking considerations in multi-host environments
- Troubleshooting Docker networking issues
Docker Security
- Fundamentals of Docker security
- Container isolation and security boundaries
- Running containers with appropriate privilege levels
- Managing users and permissions within containers
- Applying Linux capabilities and security controls
- Securing the Docker image build process
- Conducting image vulnerability scans
- Secure management of secrets
- Protecting Docker registries
- Implementing network security and isolation
- Hardening the Docker daemon
- Adopting container security best practices
Setting up a Continuous Integration Workflow for Docker Applications
- Introduction to CI for containerized workloads
- Automating the build of Docker images
- Automated testing of Docker images and containers
- Managing image tagging and versioning
- Linking source control with Docker builds
- Automating image vulnerability scanning
- Automating the publication of images to registries
- Managing build artifacts
- Implementing automated quality assurance checks
- Designing a reproducible Docker CI pipeline
Integrating Docker Applications into an Existing Workflow
- Aligning Docker with existing development workflows
- Containerizing legacy or existing applications
- Integrating Docker with CI/CD platforms
- Managing dev, test, staging, and production environments
- Implementing automated deployment strategies
- Managing configuration across multiple environments
- Integrating with image registries
- Handling deployment approvals and release management
- Monitoring application deployments
- Maintaining environment consistency
Container and Orchestration Best Practices
- Designing maintainable Docker images
- Optimizing container startup times and performance
- Managing the container lifecycle
- Efficient resource allocation strategies
- Developing logging and monitoring strategies
- Best practices for configuration and secret management
- Ensuring high availability and fault tolerance
- Scaling containerized applications effectively
- Deploying containers securely
- Implementing versioning and release strategies
- Orchestration architecture best practices
Troubleshooting
- Diagnosing container startup failures
- Analyzing application and container logs
- Inspecting container and image internals
- Resolving networking configuration issues
- Fixing storage and volume-related problems
- Diagnosing image build failures
- Troubleshooting Docker Compose setups
- Investigating resource utilization and performance bottlenecks
- Basics of Kubernetes troubleshooting
- Practical troubleshooting exercises
Summary and Conclusion
- Review of core Docker concepts
- Recap of image creation and container management
- Review of multi-container application deployment
- Summary of orchestration concepts and Kubernetes
- Review of Docker networking and security measures
- Recap of CI/CD integration methods
- Best practices for containerization and orchestration
- Final hands-on exercise
- Q&A and final discussion
Requirements
- Prior hands-on experience with Docker containers.
Target Audience
- 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.