$ /bin # ls, cp, ps — essential executables
/sbin # init, shutdown — system executables
/etc # config files for system services
/lib # libraries used by executables
/usr # user apps, utilities, docs
/var # logs, spool files, temp files
/root # home directory of root user
/bin # ls, cp, ps — essential executables
/sbin # init, shutdown — system executables
/etc # config files for system services
/lib # libraries used by executables
/usr # user apps, utilities, docs
/var # logs, spool files, temp files
/root # home directory of root user
/bin # ls, cp, ps — essential executables
/sbin # init, shutdown — system executables
/etc # config files for system services
/lib # libraries used by executables
/usr # user apps, utilities, docs
/var # logs, spool files, temp files
/root # home directory of root user
Docker CLI (-weight: 500;">docker) ← you type commands here │ sends API requests to ▼
Docker Daemon (dockerd) ← the core -weight: 500;">service ├── manages → Images ├── manages → Containers ├── manages → Networks └── manages → Volumes │ communicates with ▼
Docker Registry (DockerHub / Quay.io / private)
Docker CLI (-weight: 500;">docker) ← you type commands here │ sends API requests to ▼
Docker Daemon (dockerd) ← the core -weight: 500;">service ├── manages → Images ├── manages → Containers ├── manages → Networks └── manages → Volumes │ communicates with ▼
Docker Registry (DockerHub / Quay.io / private)
Docker CLI (-weight: 500;">docker) ← you type commands here │ sends API requests to ▼
Docker Daemon (dockerd) ← the core -weight: 500;">service ├── manages → Images ├── manages → Containers ├── manages → Networks └── manages → Volumes │ communicates with ▼
Docker Registry (DockerHub / Quay.io / private)
Dockerfile ──-weight: 500;">docker build──▶ Image ──-weight: 500;">docker run──▶ Container │ -weight: 500;">docker push │ ▼ Registry
Dockerfile ──-weight: 500;">docker build──▶ Image ──-weight: 500;">docker run──▶ Container │ -weight: 500;">docker push │ ▼ Registry
Dockerfile ──-weight: 500;">docker build──▶ Image ──-weight: 500;">docker run──▶ Container │ -weight: 500;">docker push │ ▼ Registry
-weight: 600;">sudo -weight: 500;">apt -weight: 500;">update
-weight: 600;">sudo -weight: 500;">apt -weight: 500;">install -weight: 500;">docker.io -y
-weight: 600;">sudo -weight: 500;">apt -weight: 500;">update
-weight: 600;">sudo -weight: 500;">apt -weight: 500;">install -weight: 500;">docker.io -y
-weight: 600;">sudo -weight: 500;">apt -weight: 500;">update
-weight: 600;">sudo -weight: 500;">apt -weight: 500;">install -weight: 500;">docker.io -y
# Check daemon -weight: 500;">status
-weight: 600;">sudo -weight: 500;">systemctl -weight: 500;">status -weight: 500;">docker # Start daemon if not running
-weight: 600;">sudo -weight: 500;">systemctl -weight: 500;">start -weight: 500;">docker # Add your user to the -weight: 500;">docker group (replace 'ubuntu' with your username)
-weight: 600;">sudo usermod -aG -weight: 500;">docker ubuntu
# Check daemon -weight: 500;">status
-weight: 600;">sudo -weight: 500;">systemctl -weight: 500;">status -weight: 500;">docker # Start daemon if not running
-weight: 600;">sudo -weight: 500;">systemctl -weight: 500;">start -weight: 500;">docker # Add your user to the -weight: 500;">docker group (replace 'ubuntu' with your username)
-weight: 600;">sudo usermod -aG -weight: 500;">docker ubuntu
# Check daemon -weight: 500;">status
-weight: 600;">sudo -weight: 500;">systemctl -weight: 500;">status -weight: 500;">docker # Start daemon if not running
-weight: 600;">sudo -weight: 500;">systemctl -weight: 500;">start -weight: 500;">docker # Add your user to the -weight: 500;">docker group (replace 'ubuntu' with your username)
-weight: 600;">sudo usermod -aG -weight: 500;">docker ubuntu
-weight: 500;">docker run hello-world
-weight: 500;">docker run hello-world
-weight: 500;">docker run hello-world
-weight: 500;">git clone https://github.com/iam-veeramalla/Docker-Zero-to-Hero
cd examples
-weight: 500;">git clone https://github.com/iam-veeramalla/Docker-Zero-to-Hero
cd examples
-weight: 500;">git clone https://github.com/iam-veeramalla/Docker-Zero-to-Hero
cd examples
-weight: 500;">docker login
# Enter your DockerHub username and password when prompted
-weight: 500;">docker login
# Enter your DockerHub username and password when prompted
-weight: 500;">docker login
# Enter your DockerHub username and password when prompted
-weight: 500;">docker build -t yourusername/my-first--weight: 500;">docker-image:latest .
-weight: 500;">docker build -t yourusername/my-first--weight: 500;">docker-image:latest .
-weight: 500;">docker build -t yourusername/my-first--weight: 500;">docker-image:latest .
Successfully built 960d37536dcd
Successfully tagged yourusername/my-first--weight: 500;">docker-image:latest
Successfully built 960d37536dcd
Successfully tagged yourusername/my-first--weight: 500;">docker-image:latest
Successfully built 960d37536dcd
Successfully tagged yourusername/my-first--weight: 500;">docker-image:latest
-weight: 500;">docker images
-weight: 500;">docker images
-weight: 500;">docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
yourusername/my-first--weight: 500;">docker-image latest 960d37536dcd 26 seconds ago 467MB
ubuntu latest 58db3edaf2be 13 days ago 77.8MB
hello-world latest feb5d9fea6a5 16 months ago 13.3kB
REPOSITORY TAG IMAGE ID CREATED SIZE
yourusername/my-first--weight: 500;">docker-image latest 960d37536dcd 26 seconds ago 467MB
ubuntu latest 58db3edaf2be 13 days ago 77.8MB
hello-world latest feb5d9fea6a5 16 months ago 13.3kB
REPOSITORY TAG IMAGE ID CREATED SIZE
yourusername/my-first--weight: 500;">docker-image latest 960d37536dcd 26 seconds ago 467MB
ubuntu latest 58db3edaf2be 13 days ago 77.8MB
hello-world latest feb5d9fea6a5 16 months ago 13.3kB
-weight: 500;">docker run -it yourusername/my-first--weight: 500;">docker-image
-weight: 500;">docker run -it yourusername/my-first--weight: 500;">docker-image
-weight: 500;">docker run -it yourusername/my-first--weight: 500;">docker-image
Hello World
Hello World
Hello World
-weight: 500;">docker push yourusername/my-first--weight: 500;">docker-image
-weight: 500;">docker push yourusername/my-first--weight: 500;">docker-image
-weight: 500;">docker push yourusername/my-first--weight: 500;">docker-image - A container bundles your app + libraries + minimal OS into a portable, isolated unit
- Containers share the host kernel — making them ~100× lighter than VMs
- Docker is the toolchain that builds, runs, and distributes containers
- The lifecycle is three commands: -weight: 500;">docker build → -weight: 500;">docker run → -weight: 500;">docker push
- DockerHub is the default public registry for sharing images - Your application code
- All required libraries and dependencies
- The minimum system dependencies needed to run - Kernel & system calls — the container calls out to the host kernel for CPU, memory, I/O
- Networking stack — for connectivity, using host networking or a virtual network
- Linux namespaces — creates isolation for file system, PID, and network per container
- Control groups (cgroups) — limits how much CPU/memory/I/O each container can use - Build container images from a simple text file (Dockerfile)
- Run those images as containers on any machine
- Push and pull images from public/private registries like DockerHub - Containers bundle app + dependencies + minimal OS into a portable unit
- They're lightweight because they share the host kernel via namespaces & cgroups
- Container base images are ~100× smaller than equivalent VM images
- Docker is the platform: build images → run containers → push to registries
- The Docker Daemon is the core -weight: 500;">service; the CLI is just a client talking to it
- DockerHub is the default public registry for sharing and pulling images
- The three lifecycle commands are build, run, and push - Docker Compose — define and run multi-container applications with a single YAML file
- Docker Volumes — persist data beyond the container lifecycle
- Multi-stage builds — drastically shrink production image sizes
- Kubernetes — orchestrate containers at scale across clusters