Examine the evolution of virtualization technologies from bare metal, virtual machines, and containers and the tradeoffs between them.
Explores the three core Linux features that enable containers to function (cgroups, namespaces, and union filesystems), as well as the architecture of the Docker components.
Install and configure Docker Desktop
Use publicly available container images in your developer workflows and learn how about container data persistence.
Building out a realistic microservice application to containerize.
Write and optimize Dockerfiles and build container images for the components of the example web app.
β’NodeJS API
β’Golang API
β’React Client
Use container registries such as Dockerhub to share and distribute container images.
Use Docker and Docker Compose to run the containerized application from Module 5.
Learn best practices for container image and container runtime security.
Explore how to use Docker to interact with containers, container images, volumes, and networks.
β’Images
β’Containers
β’Volumes
β’Networks
Add tooling and configuration to enable improved developer experience when working with containers.
β’Developer Experience Wishlist
β’Debuggers
β’Tests
Deploy containerized applications to production using a variety of approaches.
Dockerfiles generally have steps that are similar to those you would use to get your application running on a server.
1. Start with an Operating System
2. Install the language runtime
3. Install any application dependencies
4. Set up the execution environment
5. Run the application
Note: We can often jump right to #3 by choosing a base image that has the OS and language runtime preinstalled.
Here are some of the techniques demonstrated in the Dockerfiles within this repo:
--link
option was added to the COPY
command in march 2022. It allows you to improve cache behavior in certain situations by copying files into an independent image layer not dependent on its predecessors.In general, these techniques impact some combination of (1) build speed, (2) image security, and (3) developer clarity. The following summarizes these impacts:
Legend:
π Security
ποΈ Build Speed
ποΈ Clarity