Fundermental Concepts
- Bare Metal: Refers to physical hardware, like a server, without any virtualization or abstraction layers. (Personal computer for an example)
- Operating System (OS): Software that manages hardware resources and provides an interface for applications to interact with the hardware.
- Kernel: The core component of an OS, responsible for managing system resources and executing processes.
- Client-Server Architecture: A network architecture where a client requests services from a server.
- Scaling: The process of increasing the capacity of a system to handle increased load.
- Vertical Scaling: Increasing the capacity of a single server by adding more resources like CPU, RAM, or storage.
- Horizontal Scaling: Adding more servers to a system to distribute the load.
- Virtual Machine (VM): A software emulation of a physical computer, allowing multiple OSes to run on a single physical machine.
- Hypervisor: Software that creates and manages virtual machines.
Docker-Specific Concepts
- Docker Engine: The core component of Docker, responsible for building, running, and managing containers.
- Dockerfile: A text document that contains instructions on how to build a Docker image.
# Use an official Node.js image as a base image
FROM node:16
# Set the working directory inside the container
WORKDIR /app
# Copy package.json and package-lock.json files
COPY package*.json ./
# Install dependencies
RUN npm install
# Copy the rest of the application code
COPY . .
# Expose the application port
EXPOSE 3000
# Command to run the application
CMD ["npm", "start"]
- Docker Image: A read-only template that contains a software application and its dependencies.
- Docker Container: A running instance of a Docker image.
- Docker Desktop: A desktop application for Windows, Mac, and Linux that provides a user-friendly interface for working with Docker.
- Docker CLI: The command-line interface for interacting with Docker.
- Docker Hub: A public registry for storing and sharing Docker images.
- Docker Compose: A tool for defining and running multi-container Docker applications.
- Docker Pull : The docker pull command is used to download a container image from a registry to your local machine.
docker pull [OPTIONS] IMAGE[:TAG|@DIGEST]
docker pull nginx:latest // example
- Docker Push : The docker push command uploads an image from your local system to a Docker registry.
docker push [OPTIONS] NAME[:TAG]
docker push your-dockerhub-username/my-app:1.0
Advanced Docker Concepts
- Docker Compose : A tool for managing multi container applications.
- Kubernetes : Kubernetes is a system for automating the deployment, scaling, and management of containerized applications, often using Docker to package and run the containers.
More About Kubernetes >>> Kubernetes 101