Tools: Docker Basics : Problem Statement, Concepts & Commands

Tools: Docker Basics : Problem Statement, Concepts & Commands

Source: Dev.to

Problem Statement - What Problem Does Docker Solve? ## Why does this happen? ## Example Scenario ## Challenges ## Installation of Docker CLI & Docker Desktop ## Understanding Images vs Containers ## Docker Images ## Docker Containers ## Running Ubuntu Image in a Container ## Useful Docker Commands ## List Containers ## List Images ## Enter an Existing Running Container ## Multiple Containers ## Key Concept ## Port Mapping ## Environment Variables ## Dockerization of a Node.js Application ## Summary “Same code works on my machine but not on yours.” Environment Replication Issues Docker solves this by standardizing environments so applications run the same everywhere. Download Docker Desktop from: https://www.docker.com/products/docker-desktop/ Docker Desktop includes: If the image is not available locally, Docker pulls it from Docker Hub automatically. Allows access to container services from local machine. Used to configure applications dynamically inside containers. Initialize Node Project: As if now the img is avaialbel locally to push to hub.docker.com you need to run the following coommands Tag your image with latest ✍️ Author: Omkar Sharma 📬 Feel free to connect on LinkedIn or explore more on GitHub Templates let you quickly answer FAQs or store snippets for re-use. Are you sure you want to hide this comment? It will become hidden in your post, but will still be visible via the comment's permalink. Hide child comments as well For further actions, you may consider blocking this person and/or reporting abuse COMMAND_BLOCK: docker run -it <image_name> Enter fullscreen mode Exit fullscreen mode COMMAND_BLOCK: docker run -it <image_name> COMMAND_BLOCK: docker run -it <image_name> COMMAND_BLOCK: docker run -it ubuntu Enter fullscreen mode Exit fullscreen mode COMMAND_BLOCK: docker run -it ubuntu COMMAND_BLOCK: docker run -it ubuntu COMMAND_BLOCK: docker container ls -a Enter fullscreen mode Exit fullscreen mode COMMAND_BLOCK: docker container ls -a COMMAND_BLOCK: docker container ls -a COMMAND_BLOCK: docker image ls Enter fullscreen mode Exit fullscreen mode COMMAND_BLOCK: docker image ls COMMAND_BLOCK: docker image ls COMMAND_BLOCK: docker exec -it <container_name> bash Enter fullscreen mode Exit fullscreen mode COMMAND_BLOCK: docker exec -it <container_name> bash COMMAND_BLOCK: docker exec -it <container_name> bash COMMAND_BLOCK: docker start <container_name> Enter fullscreen mode Exit fullscreen mode COMMAND_BLOCK: docker start <container_name> COMMAND_BLOCK: docker start <container_name> COMMAND_BLOCK: docker stop <container_name> Enter fullscreen mode Exit fullscreen mode COMMAND_BLOCK: docker stop <container_name> COMMAND_BLOCK: docker stop <container_name> COMMAND_BLOCK: docker run -it -p <local_machine_port>:<container_port> <image_name> Enter fullscreen mode Exit fullscreen mode COMMAND_BLOCK: docker run -it -p <local_machine_port>:<container_port> <image_name> COMMAND_BLOCK: docker run -it -p <local_machine_port>:<container_port> <image_name> COMMAND_BLOCK: docker run -it -p 3000:3000 omkarsharma2821/omkar-node-app Enter fullscreen mode Exit fullscreen mode COMMAND_BLOCK: docker run -it -p 3000:3000 omkarsharma2821/omkar-node-app COMMAND_BLOCK: docker run -it -p 3000:3000 omkarsharma2821/omkar-node-app COMMAND_BLOCK: docker run -it -e PORT=4000 -p 4000:4000 <image_name> Enter fullscreen mode Exit fullscreen mode COMMAND_BLOCK: docker run -it -e PORT=4000 -p 4000:4000 <image_name> COMMAND_BLOCK: docker run -it -e PORT=4000 -p 4000:4000 <image_name> COMMAND_BLOCK: npm init Enter fullscreen mode Exit fullscreen mode COMMAND_BLOCK: npm install express Enter fullscreen mode Exit fullscreen mode COMMAND_BLOCK: npm install express COMMAND_BLOCK: npm install express COMMAND_BLOCK: docker build -t omkar-node-app . Enter fullscreen mode Exit fullscreen mode COMMAND_BLOCK: docker build -t omkar-node-app . COMMAND_BLOCK: docker build -t omkar-node-app . COMMAND_BLOCK: docker login Enter fullscreen mode Exit fullscreen mode COMMAND_BLOCK: docker login COMMAND_BLOCK: docker login COMMAND_BLOCK: docker tag <local_image_name>:latest <dockerhub_username>/<repo_name>:latest Enter fullscreen mode Exit fullscreen mode COMMAND_BLOCK: docker tag <local_image_name>:latest <dockerhub_username>/<repo_name>:latest COMMAND_BLOCK: docker tag <local_image_name>:latest <dockerhub_username>/<repo_name>:latest COMMAND_BLOCK: docker tag omkar-nodejs:latest omkarsharma2821/omkar-node-app:latest Enter fullscreen mode Exit fullscreen mode COMMAND_BLOCK: docker tag omkar-nodejs:latest omkarsharma2821/omkar-node-app:latest COMMAND_BLOCK: docker tag omkar-nodejs:latest omkarsharma2821/omkar-node-app:latest COMMAND_BLOCK: docker push <dockerhub_username>/<repo_name>:latest Enter fullscreen mode Exit fullscreen mode COMMAND_BLOCK: docker push <dockerhub_username>/<repo_name>:latest COMMAND_BLOCK: docker push <dockerhub_username>/<repo_name>:latest COMMAND_BLOCK: docker push omkarsharma2821/omkar-node-app:latest Enter fullscreen mode Exit fullscreen mode COMMAND_BLOCK: docker push omkarsharma2821/omkar-node-app:latest COMMAND_BLOCK: docker push omkarsharma2821/omkar-node-app:latest - You worked on a project for the past 3 months. - During development, you installed multiple dependencies, libraries, and packages. - Now you want to onboard another developer. - You shared the source code and asked them to install dependencies with exact versions. - Hard to remember specific versions over time. - New developers may install latest versions instead of required ones. - Latest versions may introduce breaking changes. - Suppose you put extra effort to remember the version and dependencies but what if they are using diff OS in that case if Windows CLI you are using will not work in MAC. - Example: Your project uses Node.js 14.x Another developer installs Node.js 18.x Result: Application may break or behave differently. - Your project uses Node.js 14.x - Another developer installs Node.js 18.x - Result: Application may break or behave differently. - Your project uses Node.js 14.x - Another developer installs Node.js 18.x - Result: Application may break or behave differently. - Docker Engine - Docker Compose - GUI Dashboard - Preconfigured read-only templates. - Include: Base OS (optional) Runtime (Node, Python, Java, etc.) Dependencies Application setup - Base OS (optional) - Runtime (Node, Python, Java, etc.) - Dependencies - Application setup - Used to create containers. - Images act as blueprints. - Base OS (optional) - Runtime (Node, Python, Java, etc.) - Dependencies - Application setup - Running instances of Docker Images. - Package application and dependencies together. - Lightweight compared to VMs. - Share host OS kernel (not a full OS like VMs). - Containers are running applications created from images. - Multiple containers can run from the same image. - Each container has an isolated environment. - Example: Create directory in Container 1 Create directory in Container 2 Both remain isolated from each other. - Create directory in Container 1 - Create directory in Container 2 - Both remain isolated from each other. - Create directory in Container 1 - Create directory in Container 2 - Both remain isolated from each other. - Docker ensures consistent environments across machines. - Images are templates. - Containers are running instances. - Supports isolated environments, easy onboarding, and scalable deployments. - Essential for modern development workflows and microservices architecture.