# Install dig and nslookup dependencies on Docker Containers

> How to install dig on Ubuntu, ArchLinux, OpenSuse and Alpine.

Source: https://curiouslychase.com/engineering/install-dig-and-nslookup-dependencies-on-docker-containers/

In the dynamic world of containerized applications, Docker has become a paramount player.

[Docker](https://curiouslychase.com/engineering/docker/) containers offer incredible flexibility and consistency, making them an ideal choice for software development and deployment. 

However, even the most advanced tools have their unique set of challenges.

If you're like many developers who frequently work interactively within Docker containers, you've likely encountered a common stumbling block: the absence of key utilities such as `dig` and `nslookup`. 

These utilities, crucial for network troubleshooting and DNS lookups, are typically not included in basic Docker images. 

And to add to the frustration, they aren't standalone packages, but part of larger collections, which can often lead to confusion about how to install them.

But fret not. This guide is designed to navigate this very predicament. 

Whether you're a Docker novice or an experienced sailor on the container seas, this tutorial will provide you with the information you need to install `dig` and `nslookup` using a variety of Linux package managers. 

Dive in to decode the Docker dilemma and discover how to turn your container into a more powerful networking tool.

# Prerequisites

Before we begin, make sure you meet the following requirements:

1. **Basic Linux Knowledge:** Familiarity with Linux command line interface (CLI) and basic Linux commands is a must as we'll be dealing with Linux-based Docker images and package managers.
2. **Docker Installed:** You should have Docker installed on your machine. If you're new to Docker, you can find installation instructions for your specific operating system on the [Docker website](https://docs.docker.com/get-docker/).
3. **Understanding of Docker Commands:** You need to understand basic Docker commands to work interactively with Docker containers. If you need a refresher, you might find this [Docker command cheat sheet](https://www.docker.com/sites/default/files/d8/2019-09/docker-cheat-sheet.pdf) handy.
4. **Internet Access:** The Docker container will need internet access to download the necessary packages.

Armed with these prerequisites, you're all set to conquer the challenge of installing `dig` and `nslookup` in your Docker containers. Let's dive right in!

# Objective

Our goal in this guide is clear and focused: to equip you with the knowledge to successfully install `dig` and `nslookup` utilities within Docker containers. 

These essential tools play a pivotal role in network troubleshooting and domain name system (DNS) queries, but are often absent from base Docker images.

To make this guide universally useful, we'll cover a diverse range of popular Linux distributions as the base for our Docker images:
- Ubuntu (Debian)
- ArchLinux
- OpenSUSE
-  Alpine. 

By the end of this post, you'll be able to effortlessly install `dig` and `nslookup` in Docker containers irrespective of the base Linux distribution you opt for.

Let's embark on this journey to enrich our Docker container with these critical network diagnostic tools, bringing an end to the guesswork and confusion that surrounds their installation process.

# Step-by-Step Instructions for Installing dig and nslookup

With our objective clearly defined, we are now ready to embark on the practical part of our guide: the step-by-step installation of `dig` and `nslookup` utilities in Docker containers.

In the following sections, we will explore the process for four different Linux distributions - Ubuntu (Debian), ArchLinux, OpenSuse, and Alpine. 

Each distribution will be covered in its dedicated section, providing an organized and easy-to-follow flow.

Remember, it's not just about following the steps; it's also about understanding them. 

Hence, each step will be accompanied by an explanation of its purpose and impact on the overall objective. 

This will not only help you replicate the process but also equip you with the knowledge to troubleshoot any issues that might arise.

## Install dig and nslookup on Ubuntu (Debian)

First, we need a running Ubuntu container. If you don't have one already, you can quickly start a new one using the following command:

```bash
docker run -it ubuntu bash
```

Next, you need to update the list of packages known to your Ubuntu system. This ensures you have the latest information about what software you can install and from where:

```bash
apt-get update
```

`dig` and `nslookup` are in `dnsutils` on Ubuntu (debian):

```shell
apt-get install dnsutils -y
```

The `-y` flag is used to automatically say yes to prompts and run non-interactively.

If you want to update and install in one command, you can do it like this:

```bash
apt-get update && apt-get install dnsutils -y
```

Now you can [verify your installation.](#verify-install)

## Install dig and nslookup on ArchLinux

ArchLinux, known for its simplicity and full control to the users, is another popular choice for Docker containers. Let's dive into the steps to install `dig` and `nslookup` in an ArchLinux-based Docker container.

To get started, you need a running ArchLinux container. If you don't have one already, use the following command to start a new one:

```bash
docker run -it archlinux bash
```

Once inside the container, the first thing you want to do is to update the package database. This ensures your system has the latest package references. Here's how to do it:

```bash
pacman -Sy
```

On ArchLinux, the `dig` and `nslookup` utilities are part of the `bind-tools` package. To install it, use the following command:

```bash
pacman -S bind-tools
```

If you want to update and install in one command, you can do it this way:

```bash
pacman -Sy && pacman -S bind-tools
```

Now you can [verify your installation.](#verify-install)

## Install dig and nslookup on OpenSUSE

OpenSUSE is another robust and versatile choice for Docker containers. Here, we'll walk through the steps to install `dig` and `nslookup` in an OpenSUSE-based Docker container.

First off, you need a running OpenSUSE container. If you don't have one at hand, you can quickly start a new one using the following command:

```bash
docker run -it opensuse/leap bash
```

Once you're inside your OpenSUSE Docker container, it's a good practice to refresh all repositories to ensure you have the latest information about the packages.

```bash
zypper refresh
```

In OpenSUSE, the `dig` and `nslookup` utilities are included in the `bind-utils` package. To install it, use the following command:

```bash
zypper install bind-utils
```

Now you can [verify your installation.](#verify-install)

If you want to refresh and install in one shot, you can do it this way:

```shell
zypper refresh && zypper install bind-utils
```

## Install dig and nslookup on Alpine

Alpine Linux is an incredibly lightweight Linux distribution, making it a popular choice for Docker containers. Let's examine the steps to install `dig` and `nslookup` in an Alpine-based Docker container.

First, you need a running Alpine container. You can start one up with:

```bash
docker run -it alpine sh
```

Inside the Alpine container, first, you'll want to update the list of available packages. This will ensure you have the latest versions and dependencies tracked. Here's the command:

```bash
apk update
```

On Alpine Linux, `dig` and `nslookup` utilities are a part of the `bind-tools` package. To install it, run the following command:

```bash
apk add bind-tools
```

If you want to update and install `dig` and `nslookup`  in the same time on Alpine:

```shell
apk update && apk add bind-tools
```

Now you have successfully installed the `bind-tools` package, which includes the `dig` and `nslookup` utilities, into your Alpine Docker container. 

This marks a critical step towards turning your lightweight Alpine Docker container into a powerful network diagnostic tool. Now let's move forward to verify these installations.

# Verify Install

Now that they're installed you can run `dig -v` and `nslookup -v` to verify they're present.

## Verification

To verify the successful installation of `dig`, you can run:

```bash
dig -v
```

To verify the successful installation of `nslookup`, you can run (you'll have to `CTRL + C` to get out of it):

```bash
nslookup
```

These commands should return the version of `dig` and a `nslookup` command prompt, respectively.

# Wrapping Up Installing dig and nslookup

In this guide, we journeyed through the process of installing `dig` and `nslookup` utilities in Docker containers based on various Linux distributions: Ubuntu (Debian), ArchLinux, OpenSUSE, and Alpine. 

We started with understanding the importance of these tools and set our objective of installing them in different environments.

From launching the specific Docker containers, updating the package lists, to installing the relevant packages that include `dig` and `nslookup`, we have navigated each step carefully.

Now, you are equipped with the knowledge and steps to transform your Docker containers into powerful network diagnostic tools, irrespective of the base Linux distribution. 

No longer will the absence of these utilities in your Docker images be a hindrance.

With this newfound capability, you can troubleshoot network issues and perform DNS lookups more efficiently, aiding you in your journey towards mastering containerized applications. 

As you continue to work with Docker, remember the skills you've acquired here are not limited to just these utilities. 

They can be applied to the installation of other utilities as well, expanding your Docker capabilities.

In the world of Docker, the more tools at your disposal, the smoother your sail on the container seas.
