Skip to main content

Week 5

Tuesday

  • Meeting Cancelled in the interest of high attendance at Career Fair

Thursday

🎥 Meeting Recording:

🚩 Agenda

  1. Sign in with attendance code
  2. Presentation by Matthew Harper
  3. Questions
  4. Break for Pizza
  5. 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