Course Outline
Introduction
- Exploration of advanced Docker concepts and workflows
- Revisiting containerization principles and practical use cases
- Key Docker terminology and essential components
- Overview of course goals and the hands-on learning environment
Overview of Docker Features and Architecture
- The Docker Engine and its constituent parts
- Understanding the client, daemon, images, containers, and registries
- Docker architecture and the lifecycle of a container
- Docker Hub and the use of private registries
- Advanced Docker CLI capabilities
- Managing Docker resources and configuration settings
Setting up Docker
- Installation of Docker Community Edition
- Configuring the Docker operating environment
- Verification of the Docker installation
- Setup for development and testing purposes
- Management of Docker configuration and storage
- Basic strategies for troubleshooting the Docker environment
Building Your Own Docker Images
- Comprehending Docker images and their layered structure
- Authoring efficient Dockerfiles
- Applying Dockerfile instructions and best practices
- Managing the build context
- Constructing and tagging images
- Utilizing
.dockerignore - Optimizing image size and build efficiency
- Handling image versions and tagging strategies
- Implementing multi-stage Docker builds
- Publishing images to a container registry
Running Multi-Container Docker Applications with Docker Compose
- Introduction to Docker Compose
- Defining services within Compose files
- Configuring networks and data volumes
- Handling environment variables
- Managing service dependencies and startup sequences
- Running and scaling multiple services concurrently
- Building application images using Compose
- Managing application configuration settings
- Debugging multi-container setups
- Best practices for using Docker Compose
The Challenges of Deploying Many Docker Applications
- Managing containers across multiple hosts
- Ensuring application scaling and high availability
- Implementing service discovery mechanisms
- Load balancing strategies
- Managing configurations and sensitive secrets
- Addressing persistent storage challenges
- Monitoring and logging at scale
- Executing rolling updates and application deployments
- Recovering from container or host failures
How Container Orchestration Helps You Maintain Control
- Foundations of container orchestration
- Benefits and constraints of orchestration platforms
- Comparing Docker Swarm, Kubernetes, and alternative solutions
- Scheduling and workload management
- Service discovery and networking protocols
- Scaling and self-healing capabilities for applications
- Performing rolling deployments and rollbacks
- Resource management and workload isolation
- Selecting the right orchestration platform
Kubernetes in Action
- Kubernetes architecture and core components
- Understanding Pods, nodes, and clusters
- Deployments and ReplicaSets
- Services and service discovery
- Utilizing ConfigMaps and Secrets
- Organizing resources with Namespaces
- Scaling applications
- Executing rolling updates and rollbacks
- Foundational Kubernetes networking
- Implementing persistent storage
- Health checks and ensuring application resilience
- Deploying Docker applications onto Kubernetes
- Troubleshooting Kubernetes workloads
Advanced Docker Networking
- Docker networking architecture
- 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
- Utilizing service discovery
- Port publishing and exposure strategies
- Networking in multi-host environments
- Troubleshooting Docker networking issues
Docker Security
- Fundamentals of Docker security
- Container isolation and defining security boundaries
- Running containers with appropriate privilege levels
- Managing users and permissions within containers
- Linux capabilities and security controls
- Securing Docker images
- Scanning images for vulnerabilities
- Secure management of secrets
- Protecting Docker registries
- Network security and isolation techniques
- Harden the Docker daemon
- Best practices for container security
Setting up a Continuous Integration Workflow for Docker Applications
- Introduction to CI for containerized applications
- Automating the building of Docker images
- Automated testing of Docker images and containers
- Managing image tagging and versioning
- Linking source control with Docker builds
- Automated vulnerability scanning of images
- Publishing images to registries
- Managing build artifacts
- Implementing automated quality checks
- Designing a repeatable Docker CI pipeline
Integrating Docker Applications into an Existing Workflow
- Integrating Docker with current development workflows
- Containerizing legacy or existing applications
- Connecting Docker with CI/CD platforms
- Managing development, testing, staging, and production environments
- Implementing automated deployment strategies
- Configuration management across various environments
- Registry integration
- Managing deployment approvals and releases
- Monitoring application deployments
- Maintaining consistency across all environments
Container and Orchestration Best Practices
- Designing maintainable Docker images
- Optimizing container startup time and performance
- Managing the container lifecycle
- Effective resource allocation
- Strategies for logging and monitoring
- Configuration and secret management
- Achieving high availability and fault tolerance
- Scaling containerized applications
- Secure deployment of containers
- Versioning and release strategies
- Best practices for orchestration architecture
Troubleshooting
- Diagnosing container startup failures
- Analyzing application and container logs
- Inspecting containers and images
- Resolving networking issues
- Fixing storage and volume problems
- Diagnosing image build failures
- Troubleshooting Docker Compose applications
- Investigating resource and performance bottlenecks
- Basics of Kubernetes troubleshooting
- Practical troubleshooting exercises
Summary and Conclusion
- Recap of key Docker concepts
- Review of image creation and container management
- Review of multi-container application deployment
- Review of orchestration concepts and Kubernetes
- Review of Docker networking and security
- Review of CI/CD integration
- Containerization and orchestration best practices
- Final hands-on exercise
- Open 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.