Mastering Docker – For Container Automation

מק"ט: #35650 | משך קורס: 32 שעות אק'
| מספר מפגשים: 4

What if you could throw containers at a cluster of nodes as easily as a single node ?
Docker and containers are a new way of developing and delivering applications and IT infrastructure. Docker containers are used to automate other containers and servers.
Learn how to integrate Docker into your development workflow and the benefits it offers.
This course will teach how you can control a cluster with all the simplicity of managing a single Docker engine thanks to Docker Swarm Mode.

לפרטים נוספים, מלא את פרטיך או התקשר 03-7100673
*שדות חובה
PDF version


  • Integrate Docker for day to day uses
  • Setup Docker Cluster
  • Delivery for Containers Orchestration

קהל יעד

  • OOP Developers.
  • CMs.
  • Developers involved in DevOps projects
  • Developers that want to use Docker for container automation

תנאי קדם

  • Microservices Basic Knowledge
  • Linux Open source Familiarity 


Docker Basics

  • What is Docker?
  • Docker Mission, Infrastructure, and Workflow
  • DockerFiles and Images
  • DockerFile Best Practices, Union File System, and Image Layers


Docker for Mac and Windows

  • Getting Started with Docker
  • Installing Docker, Building an Image, and Running Containers
  • Docker options and --help
  • Docker Machine and Docker Toolbox
  • Docker Workflow for a Developer
  • Docker Maven Plugin

Running Multi-Container Application Using Docker Compose

  • Docker Compose: Defining Services
  • Reducing Impedance Mismatch Between Dev/Prod
  • Service Discovery with Application Server and Database


Why Multiple Container Hosts?

  • The Magic of Docker should Work on Multiple Machines Too
  • What are some of the Concerns When Moving to Multiple Machines
  • What if as Single Container Isn’t Enough
  • Scaling Capacity by Scaling Containers
  • What About Balancing Load Across Containers on Different Nodes
  • What Happens when a Container Fails
  • What Happens When a Node Fails
  • What About Internal Communication
  • User Defined Networks to Connect Containers on a Single Node
  • Docker-Compose Simplifies Complex Containers and Networking
  • What About Scaling Internal Application Dependencies


Creating a Swarm and Running a Service

  • Preparing a single Node to Follow Along
  • Enabling Experimental Features
  • Enabling Swarm Mode by Initializing a New Swarm
  • Listing and Inspecting Nodes
  • Creating a Nginx Service
  • A Service is a Definition of an Application
  • Services Lead to Tasks
  • Removing a Service
  • Updating a Service to Scale the Number of Containers
  • Swarm Manager Ensure the Desired State is Maintained
  • The Scheduling Process
  • Creating a Second Service to our Customer API
  • The Swarm Mode Routing Mesh
  • Testing Throughput on a Scaled Service


Adding Nodes

  • Moving to Multiple Nodes
  • Destroying the Single Node Swarm
  • Creating and Managing VMs with Docker Machine
  • Accessing my lab Setup Vagrantfile
  • Launching 3 VMs with Vagrant up
  • Accessing the Docker Engine Inside the Vagrant VMs
  • Docker Swarm init –advertise-addr
  • Joining Worker Nodes to the Swam
  • Creating a Service to Visualize Our Cluster State
  • What happens when a node is Shut Down
  • Creating and Scaling a Second Service
  • The Spread Strategy and Testing Throughput of the Scaled Service
  • Inspecting Nodes and Clustering Gotha’s
  • Listing Tasks Per Node
  • Promoting a Worker to a Manager and Demoting Too
  • Draining a Node to Perform Maintenance
  • One Container Per Node with Global Services
  • Swarm Mode is Incredibly Easy to Setup


Ingress Routing and Publishing Ports

  • Routing External Traffic to Cluster Services
  • Published Ports Provide External Access to Services
  • The Ingress Overlay Network
  • Options for Routing External Traffic to Nodes
  • Host Publishing Mode Instead of Ingress Mode
  • Ingress Publish Mode Routes to a Random Container
  • Removing a Published Port on an Existing Service
  • Adding a Host Mode Published Port
  • Publishing a Random Port


Reconciling a Desired State

  • Reconciling a Desired State
  • What Happens when we add a Node to Swarm
  • Creating a Pending Service and Inspecting Task Status]
  • Joining a New Node to Fulfill a Pending Service
  • What Happens to a Service When We Lose the Only Compatible Node
  • Cleaning up Nodes that Have Failed
  • Remove Vestigial Services
  • If App Fails then the Corresponding Task Will Be Shutdown
  • Scale a Service to Zero to stop it Without Removing It
  • Desired State Reconciliation Affords SRP


Rolling Updates

  • How Do We Update an Application?
  • Updates Seem to Happen All at Once
  • Updates Are Incremental
  • Running a Docker Command on Every Node in the Cluster
  • Specifying an Image Tag When Creating a Service
  • Adding Delay Between Task Updates
  • Updating Multiple Tasks Concurrently with –update-parallelism
  • Cleaning up Task History when Learning
  • Recap on Update Delay and Parallelism
  • Using Watch to Visualize Updates in a Terminal
  • Slowing Down the Update Process to Visualize Updates
  • Rollout Mode and Other Update Settings are WIP
  • Inspecting the UpdateConfig Policy Per Service
  • Watching the UpdateConfig Policy as it is Updated
  • Inspecting Task Errors
  • Rolling Back to the Previous Service Definition
  • Configuring Rollback Policies
  • Use –force to Test Changes to Update Policies
  • Watching UpdateStatus During a Service Update
  • Simulating and Monitoring an Update Failure
  • Resuming a Paused Update


Container to Container Networking

  • Internal Container to Container Scenario
  • Ingress Network Is Special Purpose for Publishing Ports
  • Our New Network Topology
  • Creating an Overlay Network
  • Inspecting Overlay Networks
  • Attaching a New Service to Our Overlay Network
  • Adding a Second Service to Our Overlay Network
  • Viewing Service Logs
  • Adding an Environment Variable to an Existing Service
  • Docker exec to Check Service Discovery on the Overlay Network
  • Spelunking Service Discovery as We Scale Services
  • Adding an Environment Variable to an Existing Service
  • Docker exec to Check Service Discovery on the Overlay Network
  • Spelunking Service Discovery as We Scale Services
  • Using Curl to Validate Internal Load Balancing
  • Validating External Load Balancing via the Ingress Network
  • Docker service inspect for Finding the Virtual IPs for a Service
  • Use DNS Round Robin Instead of a Virtual IP
  • Networks Are Lazily Extended to Worker Nodes
  • A Few Last Things


Deploying with Stacks

  • Enough with All the Flags Already
  • Remove All Services
  • The New Compose Version 3 Format
  • Creating a Compose File for Our Viz Service
  • Deploying a Stack with a Compose File
  • Updating a Service with a Stack Is as Easy as Creating It
  • Removing a Stack
  • Creating and Deploying a Multi Service Stack
  • Specifying Replicas in Compose File
  • Quiz and Key Course Takeaway
  • The Trifecta Services - Networks and Volumes


Health Checking

  • A Running Process Is Not Necessarily Ready for Traffic
  • Deploying a Cowsay Stack
  • What Happens if We Break a Container?
  • Automatic Service Recovery with Health Checks
  • Manually Forcing a Corrupted Service to Restart
  • Options for Adding Health Checks
  • Adding a Health Check to a Stack Compose File
  • Configuring Interval and Timeout and Retries
  • Deploying Health Checks and Inspecting Container Health
  • Monitoring When Testing Health Checks
  • Monitoring Service Auto Recovery from Health Check Failure
  • Adjust the Health Check Interval When Learning
  • Health Checks Prevent Traffic to a Container That Is Starting
  • Health Checks Prevent Traffic to Unhealthy Containers
  • Health Checking with Docker run
  • Adding a Health Check to a Dockerfile
  • Disable Health Checking


Protecting Secrets

  • Environment Variables Can Leak Passwords
  • Creating a Secret for a MySQL Password
  • Granting a Service Access to a Secret
  • Troubleshooting a Failing Service
  • Accessing Secrets in a Container via the Filesystem
  • Using a Secret to Provide a MySQL Root Password
  • Steps to Use Secrets
  • _FILE Image Secrets Convention
  • Removing Secrets
  • A Convention for Updating a Secret
  • The End