Week 5
Tuesday
- Meeting Cancelled in the interest of high attendance at Career Fair
Thursday
🎥 Meeting Recording:
🚩 Agenda
- Sign in with attendance code
- Presentation by Matthew Harper
- Questions
- Break for Pizza
- Shift to Hands-on section
🪄 Meeting Resources
Github Repo A place to find popular community Docker images: Docker Hub
Presentation:
📓 Meeting Notes
Virtual: 1
In-Person: 25
Introduction to Docker
Presentor
- Mathew Harper
- Graduate Student with a keen interest in embedded systems & low level development
Installation:
- Window/Mac
- Look at the docker reference for docker engine
- Spin up an EC2 instance and use the Linux guide
- Remember to set up the security groups correctly
- Linux
- Follow install guide
- Use the Docker install script (Github Repo)
- Docker group
sudo usermod -aG docker <user>
sudo -u $(logname) newgrp docker
Containerization - The Basics
- Machine Virtualization
- High overhead
- An entire OS to host each application
- Containers
- Isolate processes
- Using container engine Virtual machines have a lot of overhead. Using docker containers, you can reduce the overhead of having to host a full OS. The container is capable of being a self sustained image to run the application and nothing more.
Very easy to deploy and manage across platform, universal platform.
Container Engines
- These are the programs that users often (prefer) to interface with
- What do they do for us?
- Interprate GUI, CLI, or API calls to the lower levels
- Pull and manage Container images
- Interface with lower level programs
- Manage copy-on-write memory of a container
Container Runtime
- This is the software responsible for the creation and management of processes
- Resources
- images
- Permissions
- Leverages the host operating system and kernel often through runc
System Constructs
- Dynamic & Static linking
- Static - Libraries are compiled into the exe
- Dynamic - Loading and linking handled by OS to shared libraries
- Container might not have access resources for dynamic linking, must be static
Terminology
- Namespaces
- Provide isolation between processes
- Cgroups
- Control Amount of resources assigned to a process
- Capabilities
- Control the privileges assigned to a process
Container Constructs
- Images
- Static and (relatively) unchanging
- Built off of DockerFile (or equivalent)
- Containers
- Running instances of images
- Changes are not (necessarily) persistent
- Volumes
- Named or Bind Mounts to a location host filesystem
- Networks
- Defined by docker - separate from the host but routed through the host
Other:
- Docker Socket
- Management interface
- Rootless docker
- Docker running processes with uid > 0
- Daemon
- Generally, some background management process
Docker Files:
- Named Dockerfile
- They contain the basic instructions used to construct an image
- Built layer by layer
Docker Alternatives:
- LXC
- Images are different
- Can use
systemctl
- Additional isolation
Provided a short demo using Docker with explaination it's outputs
🧑💻 Hands on Section
Guided Group: 9
Work on the activity with help from E-Board with guided explainations for each step.
Self-guided Group: 8
Worked independently on PhotoSky & other personal projects
🚀 Next Meeting
- Presentation by Andrew Aiken regarding AWS Topics & Kubernetes
- Continuing work on PhotoSky and introducing other large scale club projects