Docker and other containerization tools have taken the devops world by storm. Knowing at least the basics of docker has become mandatory for any role of software development you are in. However, for devops engineers/ site reliability engineers, a more detailed understanding of docker and other containerization technologies are desired. It does not entirely cut it to know just how to run basic commands on docker and make it work.
This course focuses on how docker works under the hood. It will guide you through the internal workings of the docker daemon and it’s interaction with the linux operating system step by step and explain how docker uses various linux kernel functionalities to make and run containers.
Besides a look at how docker operates under the hood, we will also take a look at basic docker commands, structure of build files etc-. We will also take a look at how to use docker compose to stand up a basic development environment for micro services. We will also look at building minimal container images to save on network throughput, disk size and also faster deployments. We will also be looking at what container orchestrators are and will have a hands-on session about the amazon ECS container orchestrator.
A bit of networking and linux knowledge is assumed for this course. Linux knowledge will help you all throughout the course and networking knowledge will come in handy when we cover the concepts pertaining to networking namespaces.
- Introduction and why we chose linux for the course.
- Description on what docker is and why we use it
- Birds eye view of various components in docker and it’s interaction with OS
- Differerence between user-space and kernel-space
- Difference between containers and virtual machines.
- Dockerfile, Docker images, Base image, docker pull
- docker build, Running docker without root privileges
- docker history command, From construct, ENV construct
- Label construct, RUN construct, WORKDIR construct
- ADD construct, COPY construct, EXPOSE construct, ENTRYPOINT construct, CMD construct, docker run command
- docker repositories,docker hub, docker push,How is traffic routed to docker container?
- docker ps command, sending signals to a process( docker kill, dockerstop)
- How docker containers handle signals.
- Introduction to how docker works under the hood
- Introduction to cgroups
- Cgroups cpu- hands on 1
- Cgroups cpu- hands on 2
- Cgroups cpu- hands on 3(cpu shares)
- Cgroups cpu- hands on 4( cpuset + cpu share)
- How docker restricts cpu using cgroups.
- Introduction to cgoups memory subsystem
- Cgroups memory subsystem hands-on
- Introduction to namespaces
- Basic networking and tcpdump
- Ip subnetting and arp
- ip,veth pairs, linux software bridge
- Hands-on networking namespace.
- How docker uses networking namespace
- Pid namespaces hands-on
- Mount namespaces hands-on
- User namespaces hands-on
- Introduction to linux capabilities + hands on
- Capabilities in docker
- Running docker containers as root
- Docker compose introduction
- Bringing up an application
- Embedded dns, docker networks
- Introduction to overlayfs
- How docker uses overlayfs
- How to take advantage of caching in docker builds
- Building minimal containers in docker
- Container orchestrators introduction
- Overview of ECS orchestrator
- Hands on(part 1)
- Hands on(part 2)
- ECS under the hood.
- Introduction to docker daemon
- Communicating to docker daemon over tcp/unix socket.
Who this course is for:
- Devops Engineers looking to get deep into what docker is and actually understanding how it works
- Anyone curious about the whole of docker ecosystem and how it works
- System Administrators
- Cloud Infrastructure Engineers
- Developers looking to increase their productivity
- Developers looking to understand how Docker works
- Beginning and advanced Docker users looking to improve their skills
- Network admins looking to break into the world of Docker development
- Intermediate knowledge of linux
- Basic understanding of programming
- Basic understanding of aws will help in the section about ECS