<p><a href="https://en.wikipedia.org/wiki/Docker_%28software%29" rel="nofollow noreferrer">Docker</a> is a technology that allows you to create OS-level virtualization for software delivery.  There are <a href="https://www.zdnet.com/article/what-is-docker-and-why-is-it-so-darn-popular/" rel="nofollow noreferrer">many</a>, <a href="https://www.linode.com/docs/applications/containers/when-and-why-to-use-docker/" rel="nofollow noreferrer">many</a> articles written about what this technology is, how it can help developers and companies, and tutorials on how to <a href="https://docs.docker.com/get-started/" rel="nofollow noreferrer">get started</a>.</p>

<p>To answer your question of why as a developer you may care (non-exhaustive list):</p>

<ul>
<li>Building an application that is immediately ready for deployment.</li>
<li>Removing cumbersome installs for quick prototyping and testing.  I use it all the time to setup a <a href="https://docs.microsoft.com/en-us/sql/linux/quickstart-install-connect-docker?view=sql-server-ver15&amp;pivots=cs1-bash" rel="nofollow noreferrer">SQL server</a> to test scripts before deploying them.</li>
<li>Removes the "It works on my machine" since all the application dependencies are in a "container".</li>
<li>Allows you to easily run and port services that usually would require several minutes of installations and configurations.</li>
</ul>

<p>For your AWS example, imagine not having to SSH into a server, pull source down, and setup the environment <strong>every time</strong> you want to scale up or out.  Most cloud providers now have options to deploy your containers and not worry about all those steps (see <a href="https://aws.amazon.com/ecs/" rel="nofollow noreferrer">AWS ECS</a>).</p>

<p>The <a href="https://docs.docker.com/compose/" rel="nofollow noreferrer">Docker-Compose</a> you mentioned is slightly different in that it is a way to easily run multiple containerized services together.</p>

CC BY-SA 4.0
2019-10-24T15:58:09.503Z
2019-10-24T15:58:09.503Z
Wesley Rolnick
<p>I'm a jr. developer and I'm being required to learn docker. I googled around and read a bunch of articles about docker but couldn't really understand what it was for, what problem does it solve.</p>

<p>Example about GIT. When I was at university when we had our thesis, my groupmates and I use facebook messenger or email to pass parts of the code, we indicate what file is it for and on what line, so I understand how GIT resolves a problem. but what about docker? When I deployed to AWS, I ssh thru the server, git clone your repo, do an npm install, so whats the difference? I still have to do that right but with one command? <code>docker compose run</code> or something? so thats it? hope someone can explain it to me. thank you and have a good day.</p>

CC BY-SA 4.0
2019-10-24T15:30:55.757Z
I post as a comment 'cause many people here will be able to give you a full overview of what docker is and what it does solve, but here is my 2 cents: Docker allows one to ship a application in a independent form factor, that is the docker container. Instead of shipping a war or any other form of software packaging for which you may need to install dependencies and other fun stuff like this, you just ship the container which has been built by dev team with all required dependencies. This way allow ops to deploy the container as is without having to even think about the fun stuff
Pier
CC BY-SA 4.0
2019-10-24T18:01:18.833Z
@Pier can you give a example on how we dev ops used to do it? without docker?
aRtoo
CC BY-SA 4.0
2019-11-05T22:34:20.943Z
For future reference try explaining which parts you dont understand instead. I refuse to believe that you read even a single article about what docker is the way you phrase your question. :P
Birb
CC BY-SA 4.0
2019-11-05T22:50:37.420Z
some of it I read but they don't explain what it is for. so i cant really see the purpose. I found a video explaining how devops deploy before without docker vs with docker and it really helps. and i guess im exaggerating. :) lol
aRtoo
<docker>
What is docker? what problems does it solve?
aRtoo
# What is docker? what problems does it solve?

(Asked by: username_0 on 2019-10-24)

I'm a jr. developer and I'm being required to learn docker. I googled around and read a bunch of articles about docker but couldn't really understand what it was for, what problem does it solve.

Example about GIT. When I was at university when we had our thesis, my groupmates and I use facebook messenger or email to pass parts of the code, we indicate what file is it for and on what line, so I understand how GIT resolves a problem. but what about docker? When I deployed to AWS, I ssh thru the server, git clone your repo, do an npm install, so whats the difference? I still have to do that right but with one command? `docker compose run` or something? so thats it? hope someone can explain it to me. thank you and have a good day.

**Tags:** docker

> **Comments:**
> **username_1**: I post as a comment 'cause many people here will be able to give you a full overview of what docker is and what it does solve, but here is my 2 cents: Docker allows one to ship a application in a independent form factor, that is the docker container. Instead of shipping a war or any other form of software packaging for which you may need to install dependencies and other fun stuff like this, you just ship the container which has been built by dev team with all required dependencies. This way allow ops to deploy the container as is without having to even think about the fun stuff  
> **username_0**: @username_1 can you give a example on how we dev ops used to do it? without docker?  
> **username_2**: For future reference try explaining which parts you dont understand instead. I refuse to believe that you read even a single article about what docker is the way you phrase your question. :P  
> **username_0**: some of it I read but they don't explain what it is for. so i cant really see the purpose. I found a video explaining how devops deploy before without docker vs with docker and it really helps. and i guess im exaggerating. :) lol  

---

## 1 answers

### Answer by username_3 on 2019-10-24. Score: 0 | Accepted answer

[Docker](https://en.wikipedia.org/wiki/Docker_%28software%29) is a technology that allows you to create OS-level virtualization for software delivery. There are [many](https://www.zdnet.com/article/what-is-docker-and-why-is-it-so-darn-popular/), [many](https://www.linode.com/docs/applications/containers/when-and-why-to-use-docker/) articles written about what this technology is, how it can help developers and companies, and tutorials on how to [get started](https://docs.docker.com/get-started/).

To answer your question of why as a developer you may care (non-exhaustive list):

* Building an application that is immediately ready for deployment.
* Removing cumbersome installs for quick prototyping and testing. I use it all the time to setup a [SQL server](https://docs.microsoft.com/en-us/sql/linux/quickstart-install-connect-docker?view=sql-server-ver15&pivots=cs1-bash) to test scripts before deploying them.
* Removes the "It works on my machine" since all the application dependencies are in a "container".
* Allows you to easily run and port services that usually would require several minutes of installations and configurations.

For your AWS example, imagine not having to SSH into a server, pull source down, and setup the environment **every time** you want to scale up or out. Most cloud providers now have options to deploy your containers and not worry about all those steps (see [AWS ECS](https://aws.amazon.com/ecs/)).

The [Docker-Compose](https://docs.docker.com/compose/) you mentioned is slightly different in that it is a way to easily run multiple containerized services together.


---

