Notes
  • Notes
  • JavaScript
    • URL processing
    • Numbers
  • Python
    • python random notes
    • Python Resources
  • Setup
    • Mac Setup
  • Command Line
    • Basics
    • Linux basics
    • Bash script
    • Create temp files
    • awk
    • sed
    • make
    • ssh
    • gzip
    • Command line tools
    • ffmpeg
    • at and crontab - scheduling commands
  • Web Developement
    • Chrome Dev Tools
    • HTML
    • Markdown
    • CSS
    • Rails
    • Hugo
    • REST APIs
  • Soft Skills
    • Listening Skills
    • Public Speaking
  • Containers
  • Career
    • Resume
    • Interview
    • Promotion
    • Keeping Track of Your Work
    • Decide What to Work On
  • Ergonomics
    • Work Env Setup
    • Pain Relieve
  • Digest / Writing Ideas
    • Books
      • Antifragile
      • Anti-Intellectualism in American Life 美国的反智传统
    • Economy / Society
    • How to spend your time
    • Life
    • Higher education
  • Misc
    • Regex
    • Don't Make Me Think
    • Microsoft Excel
    • AdTech 101
  • Resources
    • web
    • Vim
    • Tools
    • System Design
    • Design Pattern
    • Load Balancer
    • References
    • Hardware
    • Algorithm Resources
    • Command Line Resources
  • Git
    • Pro Git
  • Non-Tech
    • 化学科普 - 拿破仑的纽扣
    • 人生经验 - If I Knew Then
    • 哲学
      • Harvard - Justice
    • 宗教
      • Introduction to the New Testament History and Literature
      • 蔡志忠 - 漫画东方圣经
    • 人文
      • Open Yale Course - 心理学导论
  • Spark
  • VS Code
Powered by GitBook
On this page
  • Virtual Machines
  • Containers (e.g. Docker)
  • Container Orchestration: Kubernetes
  • Microservices
  • References

Was this helpful?

Containers

PreviousPublic SpeakingNextCareer

Last updated 5 years ago

Was this helpful?

Virtual Machines

Virtual machines (VMs) are simulated computers, for example, we can have a MacOS virtual machine on a Windows PC.

Containers (e.g. Docker)

Starting a Docker container is much faster than starting a VM, because no guest operating system has to be booted, which reduces the overhead. The containers share the kernel of the host OS, but have their own file system, users, network and processes. When we run a Docker container, from the perspective of the host OS we just start another process. This significantly speeds up the startup of a container while still providing a good isolation of the containers.

Note: containers can share common bins/libs

Docker also help to manage dependencies, so the app will behave exactly the same way on any computer that has Docker installed.

A Dockerfile contains all the commands needed to build the image and run your app. This enables "infrastructure as code", therefore it is easier for automation.

Container Orchestration: Kubernetes

Deploying and scaling containers.

Microservices

Separate the traditional monolith application into smaller apps, which communicate with each other with well defined APIs, usually HTTP.

Pros:

  • Language independent

  • Fast interaction

  • Small teams

  • Fault isolation

  • Pair well with containers => dynamically scalable at runtime (BIG PLUS, scale down to save money)

Cons:

  • Complex networking

  • Overhead: databases, servers

References

MIT Hacker Tools
Discussing Docker. Pros and Cons.
Introduction to Microservices, Docker, and Kubernetes