Docker
Docker vs VM
- There is only one shared kernel
- Container is like a packaged userspace applications
- There is no separate kernel in container
- Normal or containerized applications (via syscall) same shared Linux kernel. It is host’s kernel
- Docker engine check to support host kernel
- If host’s kernel is changed, will the old container continue to work properly?
- Not sure
- In non-linux, what is the kernel to share? Technically via a Linux VM
- Docker for Windows uses Linux VM (Hyper-V), or Linux Subsystem in Win10
- Docker for MacOS uses xhyve Virtual Machine
- There is Windows Container, which could share Window kernel
Docker overview
Docker engine includes:
- Docker daemon (
dockerd
): act as a server - REST API: provides interface to docker daemon
- CLI (
docker
command): uses REST API
Image, container, docker hub/registry.
Using docker
- Image and Container
- Service
- Swarm
- Stack