DEV Community

Cover image for Starting with Docker: Why I'm Finally Giving It a Try
Daniel Azevedo
Daniel Azevedo

Posted on

Starting with Docker: Why I'm Finally Giving It a Try

Hi devs.

So, I’ve been hearing a lot about Docker for a while now. I’m sure many of you have too, especially with all the talk about containers and how they simplify deployment. Until recently, Docker seemed like one of those tools I’d eventually get around to, but I wasn’t quite sure where it would fit into my workflow or why I really needed it. Now that I’ve finally decided to dive in, I thought I’d share some insights for anyone else considering learning Docker for the first time.

What Exactly Is Docker?

Docker allows you to containerize applications. That means you can package your app along with all its dependencies (libraries, settings, etc.) into a single, portable unit known as a container. This container can then run consistently across any environment—whether it’s your local machine, a test server, or in production.

In simple terms: imagine having the same environment wherever your app goes. You won’t need to worry about "it works on my machine" issues because it’ll behave the same everywhere.

Why Did I Finally Start Using Docker?

I’m just starting out with Docker, but the initial reason that caught my attention is how it helps solve environment consistency. I’ve had those moments where an app runs perfectly on my local setup, but once deployed on a different machine, things break. Docker helps eliminate that issue by ensuring the environment is exactly the same across the board.

Another reason is how Docker simplifies deployment. You don’t need to worry about configuring the server manually, installing dependencies one by one, or setting up environments for each project. With Docker, you package everything into a container and can deploy it with just a few commands.

Getting Started: My First Docker Steps

If you’re like me and just getting started, it can feel a bit overwhelming at first, but the basics are actually pretty straightforward. Let me share the steps I took to get my first container up and running:

  1. Install Docker: The first step is to install Docker on your machine. Just head to the Docker website, and you’ll find downloads for Windows, macOS, and Linux.

  2. Create a Simple Dockerfile: A Dockerfile is basically a set of instructions Docker uses to build your container. Here’s a simple example I played around with using a basic web app:

    # Use an official image as a base
    FROM node:14
    
    # Set the working directory
    WORKDIR /app
    
    # Copy package.json and install dependencies
    COPY package.json .
    RUN npm install
    
    # Copy the rest of the app files
    COPY . .
    
    # Expose the app's port
    EXPOSE 3000
    
    # Command to run the app
    CMD ["npm", "start"]
    

    This example uses Node.js as the base image, copies the application code into the container, installs dependencies, and exposes port 3000 for the app to run. The CMD line specifies the command Docker runs when the container starts (npm start in this case).

  3. Build and Run the Container: After writing your Dockerfile, the next step is building and running your container. Here’s how I did it:

- To build the Docker image:
Enter fullscreen mode Exit fullscreen mode
  ```bash
  docker build -t my-app .
  ```
Enter fullscreen mode Exit fullscreen mode
- Then, to run the container:
Enter fullscreen mode Exit fullscreen mode
  ```bash
  docker run -p 3000:3000 my-app
  ```
Enter fullscreen mode Exit fullscreen mode
The `-p` flag maps the container’s port (3000) to the host machine’s port (also 3000), so you can access your app at `http://localhost:3000`.
Enter fullscreen mode Exit fullscreen mode
  1. Deploy Anywhere: Once your app is containerized, you can deploy it to various platforms that support Docker containers, like AWS, Azure, or Google Cloud, without worrying about environment configurations. That’s the real power of Docker—write once, run anywhere.

First Impressions of Docker

While I’m still in the early stages of using Docker, I can already see the benefits of a more streamlined development workflow. No more worrying about dependencies or things working differently on different machines.

If you’re on the fence about learning Docker like I was, I’d definitely say it’s worth it. It has the potential to save a lot of headaches down the road, especially when dealing with larger projects or complex deployments.

What’s Next?

Now that I’ve got the basics down, I’m planning to dig deeper into Docker’s more advanced features, like docker-compose for managing multi-container applications and using Docker for continuous integration and delivery (CI/CD) pipelines.

If anyone has tips or experiences they’d like to share, I’m all ears! Docker is new territory for me, but I’m excited to keep learning. Let’s see where this takes me!

Top comments (0)