Learn how to adopt GIT and use it to manage your source control while becoming familiar with Docker and the benefits of containerization for both systems and application design. This course will provide the fundamental knowledge needed to use Docker to speed up development and application deployment.

Audience: Software developers, DevOps, system administrators moving to GIT.
Course Duration: 2 days
Course Objectives:
  • Understand how to build and manage containers
  • Design, build and deploy fully functional applications
  • Guide the application of these tools in the company
Course Outline:

GIT

  • Review of Basic revision control concepts

 

  • Introduction to GIT
    • History of GIT
    • Whose Using GIT
    • Core GIT Concepts
    • Adopting GIT

 

  • Setting Up GIT
    • Installing GIT
    • Configuring GIT
    • Accessing GIT

 

  • Working with GIT
    • Understanding the Repository Structure
    • Adding, Committing and Viewing Commits
    • Renaming, Moving and Removing Files
    • Analyzing Logs and History

 

  • Advanced Source Control Concepts
    • Creating and Managing Branches
    • Merging Branches
    • Analyzing Diffs and Their Options
    • Resolving and Merging Conflicts

 

  • Remote Repositories
    • Working with A Remote Repository
    • Setting Up / Publishing A Repository
    • Understanding the Repository Structure
    • Working with Multiple Repositories
    • Working with GitHub

 

Docker

  • Introduction to Containers and Docker
    • Background and History
      • Virtualization, Docker, Coreos, etc.
    • Levels of Virtualization
      • Difference between VMWare Style and LXC Style
    • Value of an LXC Wrapper
    • Introduction to Images and Containers
      • Format, Contents, Specs
    • Runtime Environment / Constraints
    • Building and Running Containers
    • Daemon Hosting Model
    • Contents of Running Containers
    • Exploring the Host
    • Managing Container Execution
      • Start, Stop, SSH, Exit, Terminate, Lifecycles
    • File Systems
      • Host vs. Container and OS Options / Benefits
    • Managing Images

 

  • Expanding Beyond the Container
    • Image Repositories
      • Public vs. Private
    • Networking
      • Between Local Containers, Between Machines, etc.
    • Application Considerations for Networking and File System
    • Strategies and Considerations for Designing Apps in this Model
    • Managing Volumes
    • Orchestrating Multiple Containers
    • Responding to Topology and Binary Changes
      • Automate Build and Deploy
    • Remote Management
      • Manage Servers in Deployed Scenarios
    • Security Considerations
    • Tools: etcd, systemd, etc.

 

  • Moving to Production
    • Best Practices and Tools
    • Mesos, Kubernetes, Fleet
    • Load Balancing, Networking Changes for Scale, etc.
    • Labs, Demos and Discussion

 

  • Bonus – Quick Introduction to Jenkins CI with Docker and GIT