Course Outline
Introduction
- Explore advanced Docker concepts and typical workflows
- Revisit fundamental containerization principles and real-world use cases
- Key Docker terminology and essential components
- Course goals and an overview of the hands-on environment
Docker Features and Architecture Overview
- The Docker Engine and its internal components
- Understanding the client, daemon, images, containers, and registries
- Docker architecture and the container lifecycle
- Docker Hub and the use of private registries
- Advanced Docker CLI usage
- Managing Docker resources and configuration settings
Setting Up Docker
- Installation of Docker Community Edition
- Configuring the Docker environment
- Validating the installation
- Tuning Docker for development and testing purposes
- Handling Docker configuration and storage
- Basics of troubleshooting the Docker environment
Creating Custom Docker Images
- Comprehending Docker images and layering
- Authoring effective Dockerfiles
- Dockerfile instructions and industry best practices
- Managing the build context
- Building and tagging images
- Utilizing
.dockerignore - Optimizing image size and build speed
- Managing image versions and tags
- Implementing multi-stage Docker builds
- Publishing images to a container registry
Managing Multi-Container Applications with Docker Compose
- Getting started with Docker Compose
- Defining services through Compose files
- Setting up networks and volumes
- Handling environment variables
- Managing service dependencies and startup sequences
- Running and scaling multiple services
- Building application images using Compose
- Managing application configurations
- Debugging multi-container setups
- Docker Compose best practices
Challenges in Deploying Numerous Docker Applications
- Managing containers across multiple hosts
- Ensuring application scaling and availability
- Implementing service discovery
- Configuring load balancing
- Managing configurations and secrets
- Addressing persistent storage challenges
- Monitoring and logging at scale
- Performing rolling updates and application deployments
- Recovering from container and host failures
Maintaining Control via Container Orchestration
- Introduction to container orchestration
- Advantages and constraints of orchestration
- Comparison of Docker Swarm, Kubernetes, and other platforms
- Scheduling and workload management
- Service discovery and networking
- Scaling and self-healing capabilities
- Executing rolling deployments and rollbacks
- Resource management and workload isolation
- Choosing the right orchestration platform
Kubernetes in Practice
- Kubernetes architecture and core elements
- Pods, nodes, and cluster structure
- Deployments and ReplicaSets
- Services and service discovery
- ConfigMaps and Secrets
- Namespaces and resource organization
- Application scaling
- Rolling updates and rollbacks
- Foundations of Kubernetes networking
- Persistent storage solutions
- Health checks and application resilience
- Deploying Docker applications to Kubernetes
- Troubleshooting Kubernetes workloads
Advanced Docker Networking
- Docker networking architecture
- Bridge, host, overlay, and other network drivers
- Container-to-container communication
- Interactions between containers and external systems
- Creating custom Docker networks
- Network isolation strategies
- Service discovery mechanisms
- Port publishing and exposure
- Networking in multi-host setups
- Troubleshooting Docker networking issues
Docker Security
- Foundations of Docker security
- Container isolation and security boundaries
- Running containers with appropriate privileges
- Managing users and permissions within containers
- Linux capabilities and security controls
- Securing Docker images
- Scanning for image vulnerabilities
- Secure management of secrets
- Protecting Docker registries
- Network security and isolation
- Docker daemon security
- Best practices for container security
Establishing a Continuous Integration Workflow for Docker
- Introduction to CI for containerized apps
- Automating Docker image builds
- Automated testing of images and containers
- Image tagging and version control
- Linking source control with Docker builds
- Automated vulnerability scanning
- Publishing images to registries
- Managing build artifacts
- Implementing automated quality checks
- Designing reproducible Docker CI pipelines
Integrating Docker Applications into Existing Workflows
- Embedding Docker into current development workflows
- Containerizing legacy applications
- Connecting Docker with CI/CD platforms
- Managing dev, test, staging, and production environments
- Automated deployment strategies
- Configuration management across environments
- Registry integration
- Deployment approvals and release management
- Monitoring application deployments
- Ensuring consistency across environments
Best Practices for Containers and Orchestration
- Designing maintainable Docker images
- Optimizing container startup and performance
- Container lifecycle management
- Effective resource allocation
- Logging and monitoring strategies
- Configuration and secret management
- High availability and fault tolerance
- Scaling containerized applications
- Secure container deployment
- Versioning and release strategies
- Orchestration architecture best practices
Troubleshooting
- Diagnosing container startup failures
- Analyzing application and container logs
- Inspecting containers and images
- Troubleshooting network issues
- Resolving 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
- Best practices for containerization and orchestration
- Final hands-on exercise
- Q&A and discussion
Requirements
- Prior hands-on experience working 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.