> For the complete documentation index, see [llms.txt](https://ai-community-iitb-organization.gitbook.io/10-days-realtime-llm-bootcamp/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://ai-community-iitb-organization.gitbook.io/10-days-realtime-llm-bootcamp/hands-on-development/dropbox-retrieval-app-in-15-minutes/understanding-docker.md).

# Understanding Docker

This module will help you build the previous file if you're new to Docker and are struggling to install dependencies on your machine.&#x20;

**First off, a quick recap.**&#x20;

Think of Docker as a shipping container for your app. Just as a shipping container can hold all sorts of goods (clothes, electronics, etc.) and be transported anywhere in the world, Docker bundles your app and everything it needs to run into a '**container**.' This makes it easy to share and run your app on any computer.

Given the complexities and manual effort involved in resolving dependency issues in your system, Docker can be a beneficial tool to standardize the development environment among all students.

\
**Why Use Docker?**

* **Standardized Environment**: Everyone gets the same set of dependencies, reducing "it works on my machine" issues.
* **Isolated**: Doesn't interfere with other projects or system-wide settings.
* **Ease of Use**: Running the project becomes much simpler once set up.

### Understanding Key Docker Terminologies

* **Docker Image**: Consider this a blueprint or a container snapshot, including the application and its dependencies. You build an image once and use it to create multiple containers.
* **Docker Container**: A container is a running instance of an image. It's a lightweight, stand-alone, executable software package with everything needed to run the code.
* **CMD**: In Docker, the `CMD` instruction specifies the command to execute when the container starts up.
* **Docker Compose:** A tool for defining and running multi-container Docker applications. Using a YAML file (`docker-compose.yml`), it allows you to specify how different containers interact with each other, making it easier to manage multiple containers as a single service.

### Resources to Understand Docker Better

* Basic Tutorial on Dockerfile: [Here](https://youtu.be/0eMU23VyzR8)
* Basic Tutorials on Docker Compose: [Part 1 using (Single Container)](https://youtu.be/600SC33F6Ag), [Part 2 (using 2 Containers)](https://youtu.be/WBqHr2kPc_A)
* Blog on using ChatGPT to build an optimized Docker Image: [3-Minute Read](https://collabnix.com/when-chatgpt-meet-docker-for-the-first-time/)

Now let's see the step-by-step implementation.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://ai-community-iitb-organization.gitbook.io/10-days-realtime-llm-bootcamp/hands-on-development/dropbox-retrieval-app-in-15-minutes/understanding-docker.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
