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.
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.
Add tooling and configuration to enable improved developer experience when working with containers.
•Developer Experience Wishlist
Deploy containerized applications to production using a variety of approaches.
We want to run tests in an environment as similar as possible to production, so it only makes sense to do so inside of our containers!
We will take advantage of the ability to specify multiple docker compose yaml files (as described in the previous lesson) to create a custom test configuration.
All we need to do is include commands to override the defaults that execute our test suite(s):
services:
api-node:
command:
- "npm"
- "run"
- "test"
api-golang:
command:
- "go"
- "test"
- "-v"
- "./..."
To execute the tests we can then run the following docker compose commands:
docker-compose -f docker-compose-dev.yml -f docker-compose-test.yml run --rm api-node
docker-compose -f docker-compose-dev.yml -f docker-compose-test.yml run --rm api-golang
These commands will overlay the test configuration on the development configuration, run the tests for each service, and remove the containers after the tests are executed.