Added a bunch of content

This commit is contained in:
Mike Conrad
2025-05-07 20:46:50 -04:00
parent 486aa9af7c
commit 0224ac472b

130
slides.md
View File

@ -54,17 +54,17 @@ transition: fade-out
Mike Conrad Mike Conrad
- 📝 **Text-based** - focus on the content with Markdown, and then style them later ## 2 Truths and a lie
- 🎨 **Themable** - themes can be shared and re-used as npm packages
- 🧑‍💻 **Developer Friendly** - code highlighting, live coding with autocompletion - I have 4 cats, 4 chickens, 2 goats, 2 kids, a wife and a dog
- 🤹 **Interactive** - embed Vue components to enhance your expressions <br>
- 🎥 **Recording** - built-in recording and camera view
- 📤 **Portable** - export to PDF, PPTX, PNGs, or even a hostable SPA - I went 7 years with a temporary crown after getting a root canal
- 🛠 **Hackable** - virtually anything that's possible on a webpage is possible in Slidev <br>
<br>
- I was in hardcore/punk bands in my early 20's
<br> <br>
Read more about [Why Slidev?](https://sli.dev/guide/why)
<!-- <!--
You can have `style` tag in markdown to override the style for the current page. You can have `style` tag in markdown to override the style for the current page.
@ -175,7 +175,7 @@ transition: fade-out
## Containers are just processes ## Containers are just processes
If you don't take anything else away from this talk, I hope you walk away with a better understanding of this fundamental. As far as the OS* is concerned, a container is just another process/set of processes to the operating system. If you don't take anything else away from this talk, I hope you walk away with a better understanding of this fundamental. As far as the OS is concerned, a container is just another process/set of processes to the operating system.
<br /> <br />
<br /> <br />
@ -185,7 +185,88 @@ If you don't take anything else away from this talk, I hope you walk away with a
<br /> <br />
<br /> <br />
<p style="font-size:10px;max-width:20vw;line-height:1.3em;">*This is only strictly true on Linux. Running Docker on Mac/Windows requires Docker Desktop which actually creates and manages a Linux VM. Your containers actually run inside of this VM.</p> ---
transition: fade-out
---
# Container runtimes vs. container engines
> While a container runtime is responsible for running containers, a container engine is a broader system that manages even more of the life cycle of containers, including image distribution, container orchestration, and runtime management.
> One common misconception is that Docker and container runtimes are the same. While Docker Engine includes a container runtime, it also offers a suite of tools for building, shipping, and running containerized applications, making it much more than just a runtime. [source wiz.io](https://www.wiz.io/academy/container-runtimes)
---
transition: fade-out
---
# Docker: Runtime or engine?!?
Docker Engine uses containerd for managing the container lifecycle, which includes creating, starting, and stopping containers. By default, containerd uses runc as its container runtime.
<br/>
## Wait, aren't they all runtimes? If docker engine uses containerd and containerd uses runc, whats the deal?
<br >
<small><em>**Chatgpt generated content below</em></small>
### 🔧 High-Level Definitions
- Runtime = Low-level component that actually creates and runs containers.
- Engine = Higher-level component that manages the full container lifecycle (build, run, network, volume, etc.) and talks to the runtime.
---
transition: fade-out
---
# Breakdown
Docker CLI & Docker API rely on Docker Engine under the hood
-> Docker Engine is an engine (High level functionality like managing networking, images, registries, etc)
-> Docker Engine relies on `containerd` runtime to manage lifecyle of containers
-> `containerd` uses `runc` as the runtime to run containers
## Super clear?!
The `engine` is the higher level component responsible for orchestration and lifecycle management.
The `runtime` is a component responsible for the low level process execution/isolation.
---
transition: fade-out
---
# Popular Runtimes
## - [containerd](https://containerd.io/): An industry-standard container runtime with an emphasis on simplicity, robustness and portability. <span style="font-size:12px;font-style:italic;">CNCF Graduated Project. Default runtime used by Docker Engine. By default, containerd uses runc as its container runtime.</span>
## -[cri-o](https://cri-o.io/): Lightweight container runtime for Kubernetes. <span style="font-size:12px;font-style:italic;"> CNCF Graduated Project</span>
## - [runc](https://github.com/opencontainers/runc): CLI tool for spawning and running containers on Linux according to the OCI specification. <span style="font-size:12px;font-style:italic;">Open Container Initiative</span>
---
transition: fade-out
---
# What is Docker Desktop?
Docker Desktop is an integrated container development environment for Windows and macOS. It's a packaged product that includes several components:
| Component | Description |
| ------------------------------ | --------------------------------------------------------------------------- |
| **Docker Engine** | The actual engine that runs and manages containers. |
| **containerd** + **runc** | The container runtime stack used by Docker Engine. |
| **VM (e.g. `docker-desktop`)** | On macOS and Windows, Linux containers need to run inside a lightweight VM. |
| **Docker CLI** | Command-line tool to interact with Docker Engine. |
| **Docker Compose** | Tool for defining and running multi-container apps. |
| **GUI** | Visual interface for managing containers, volumes, settings, etc. |
| **Kubernetes** (optional) | Comes with optional single-node K8s cluster for testing. |
| **Networking components** | Manages host-to-VM and container networking. |
---
transition: fade-out
---
# Alternatives to Docker
- Podman
- Firecracker - AWS
- LXC/LXD - Canonical (Ubuntu)
- Buildah - Redhat
--- ---
transition: fade-out transition: fade-out
layout: two-cols-header layout: two-cols-header
@ -319,3 +400,30 @@ Commercial support is available at
</html> </html>
``` ```
```` ````
---
transition:fade-out
---
## Topics
- `docker events`
- `docker exec`
- `docker logs`
- `docker container logs --filter name=[regexmatch]`
- ENTRYPOINT vs CMD in Dockerfile
- Multistage Dockerfile
- Layer caching
- Networking between containers and with host
- Containers are just processes
- Debugging containers by attaching to namespaces
- Docker compose
- Example of frontend/backend/database/proxy
- EnvironmentPerPr
- Docker swarm
- Setting up logging properly
- Tagging images
- Security
- Optimizing images
- What are containers?
- What is Docker (set of tooling to make things easier)
- Difference between runtimes
- git clone https://github.com/docker/getting-started-todo-app