🐳 What is Docker?
🤖 For Robots
Docker is an open-source platform that allows you to automate the deployment, scaling, and management of applications using containerization. Containerization is a lightweight alternative to full machine virtualization, where applications are packaged along with their dependencies and run in isolated environments called containers.
👨👨👧 For People
Simply put, Docker is a tool that allows us to package up application code, and all of the things it needs to run into a lightweight format that will run on any system that has Docker installed. Its simple format and small size make very easy to run many instances of an application quickly
Packaging, deploying and operating applications via containers has become the norm for many digital products. While there are a number of container technologies out there, Docker is by far the most popular and has become a ubiquitous technology for digital engineers.
Don’t believe us? Check out this DEV article on Why Every Developer should Learn Docker in 2023
👨👩👧👦Who is this for?
This course is designed for people entering a digital engineering field that helps create digital products via software. This includes but is not limited to:
- Software Engineers
- Web Developers
- Systems Administrators
- System Engineers
- DevOps Engineers
- Site Reliability Administrators
- Cloud Engineers
This course, like many of our courses dive deep into a specific technology. While you may be able to grasp the concepts of the technology, to get the most out of this course its best you have learned or performed the following:
- Solid Linux/Unix command line skills. No need to be an expert but you should be able to navigate the directory tree, create files and directories and maybe have installed a program or two via the CLI
- Have configured a software application to run via CLI. Some examples might be a react application, a ruby on rails application or a python application
📆 Class Structure
This is not a self-paced bootcamp. Many people start self-paced bootcamps enthusiastically but end up dropping it before they finish. Our classes are live streamed to give you that extra bit of accountability you’ll need to learn your stuff!
- Classes are live streamed once per week (see the signup form for specific day)
- The live stream will start around 6:30PM eastern time
- Ask questions in chat and get answers in real time!
- Weekly homework assignments and occasional quizzes
- Office hours 1-2 times per week
- Asynchronous QnA through Discord
- Introduction to Containerization What are containers? History of containerization Differences between virtualization and containerization
- Docker Basics Docker architecture Docker Engine Docker Client and Server Docker Daemon Docker Images and Containers Installing Docker (on different platforms) Docker's Command Line Interface (CLI) Basic Docker commands (run, ps, logs, stop, rm, etc.)
- Docker Images Image basics Understanding Dockerfiles Writing a basic Dockerfile Dockerfile instructions (FROM, RUN, CMD, COPY, etc.) Building images with docker build Docker Image Layers Managing images (docker images, docker rmi, etc.) Pushing and pulling images with Docker Hub and other registries
- Docker Containers Container lifecycle Interacting with containers Managing container resources (CPU, memory, etc.) Persistent storage with Docker Bind mounts Volumes tmpfs mounts Container networking
- Docker Compose Why use Docker Compose? Compose YAML structure Building multi-container applications Networking in Docker Compose Managing application stacks
- Advanced Docker Networking Bridge, Host, and Overlay networks Docker Swarm and networking Network plugins and extensions
- Docker Storage Solutions Deep dive into storage drivers (overlay2, aufs, etc.) Optimizing storage in Docker Docker volume plugins
- Docker in Development Setting up a development environment using Docker Dockerizing applications in different programming languages Debugging applications in Docker
- Docker in Production Deploying Docker at scale Best practices for running containers in production Monitoring and logging in Docker Security considerations Scanning images for vulnerabilities Securing Docker daemon and containers
- Orchestrating with Docker Swarm Setting up a Swarm cluster Deploying applications in Swarm Service scaling and updates Swarm networking and storage solutions
- Introduction to Kubernetes (as a comparison) Basics of Kubernetes architecture Differences between Docker Swarm and Kubernetes Deploying a basic application in Kubernetes
- Continuous Integration/Continuous Deployment (CI/CD) with Docker Building CI/CD pipelines with Docker Integration with tools like Jenkins, Travis CI, and GitLab CI
- Advanced Topics & Integrations Docker plugins system Docker API and SDK Integrating Docker with cloud platforms (AWS ECS, Azure AKS, etc.) Docker security tools and best practices (using tools like Docker Bench)
- Best Practices and Tips Image optimization Debugging common Docker issues Resources and communities to follow
- Future of Docker & Containerization Emerging trends in containerization Other container runtimes (Podman, containerd, etc.) Labs and Practical Sessions: Throughout the curriculum, hands-on labs and practical sessions should be integrated to provide learners with real-world experience.