Troubleshooting in Docker

Troubleshooting frequently-occurring issues in Docker

If you have followed all the instructions in every chapter, you will definitely have a running app now. However, you should keep in mind that sometimes, not going by the book will make you learn better. So, if you have been giving it a try and trying out different things so far, you may face some issues and that is okay.

In this lesson, we will see the troubleshooting of frequently-occurring issues.

For system or compatibility issues, check out Docker system support.

Frequently-faced issues

Here, we will see the errors and associated troubleshooting.

Wrong build path

$ docker build .
unable to prepare context: unable to evaluate symlinks in Dockerfile path: lstat /Users/venkateshachintalwar/Documents/Online_Projects/Dockerfile: no
such file or directory

If you are accidentally not in the directory where Dockerfile is located, Docker will throw an error. cd into the directory where Dockerfile is located and that should solve the error.

Permission issues

WARNING: Error loading config file: /home/user/.docker/config.json -
stat /home/user/.docker/config.json: permission denied

If you face this kind of permission issues, you should either run the command with sudo or do the following:

$ sudo groupadd docker
$ sudo usermod -aG docker $USER

This will add the current user to the Docker group which gives the current user the entire super-user level access for Docker.

Port issues

$ docker run -p 5000:5000 flask_app:1.0
docker: Error response from daemon: driver failed programming external connectivity on endpoint wizardly_ramanujan (d51f0d6f47ed3d559e767191adcd3b71fc364d3d4ae3433787e0e2555948dcc8): Bind for failed: port is already allocated.

This happens when you try to map an already-occupied host port to a container port.

There are two ways to solve this:

  1. Type docker ps which will list all the running containers on the machine.
$ docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS                    NAMES
a15ad5a56847        flask_app:1.0       "flask run"         14 hours ago        Up 14 hours>5000/tcp   festive_ganguly

If you notice the ports column, you can see the 5000 port is already in use. Stop the container using docker stop <CONTAINER ID> and then retry.

  1. When you don’t see the port in docker ps command output, it means the port is used by some other application. Use lsof -i TCP:<PORT>

This will print all the services using the specified port, then, you can kill one of them using pkill utility, but take precautions before killing a process.

$ lsof -i TCP:5000
COMMAND     PID                 USER   FD   TYPE             DEVICE SIZE/OFF NODE NAME
com.docke   999 venkateshachintalwar   43u  IPv6 0xa23249e6f915f25b      0t0  TCP *:commplex-main (LISTEN)
Python    43184 venkateshachintalwar    9u  IPv4 0xa23249e6f91699a3      0t0  TCP *:commplex-main (LISTEN)

Space issues (critical)

This issue is very critical and you will face it in production systems frequently if you are building images on production machines.

When building an image, Docker pulls a lot of prebuilt images from the Docker registry and stores them on the local machine. Building images frequently makes Docker pull a lot of images and can result in space issues on the disk.

There are a couple of ways to tackle this problem:

  1. Figure out how much space is used by Docker. Type docker system df. This will print space used by Docker in a human-readable format.
$ docker system df
TYPE                TOTAL               ACTIVE              SIZE                RECLAIMABLE
Images              36                  6                   12.19GB             11.48GB (94%)
Containers          18                  1                   28.31MB             28.06MB (99%)
Local Volumes       33                  0                   1.818GB             1.818GB (100%)
Build Cache         0                   0                   0B                  0B

This is my system’s stat. Notice the total reclaimable column. We can reclaim that much space for Docker.

  1. Type docker system prune. This will prompt you to notify what it should remove.
$ docker system prune
WARNING! This will remove:
  - all stopped containers
  - all networks not used by at least one container
  - all dangling images
  - all dangling build cache

Are you sure you want to continue? [y/N] y
Deleted Containers:

Deleted Networks:

Deleted Images:
deleted: sha256:de8d20e77a70ab59f09b4759f3b7476f2bc14f78a3d213c23451f903cdb88b55
deleted: sha256:f4fc298e9bb0571cef34c9ce1de942fc7e961f3a599cdffdf98587a9da8436d5
deleted: sha256:2f5311bdf41c3f6066909657cdd20bd176323dc92456dfebdf3912508ec3e19a
deleted: sha256:10970d749df66bb9aa8fbe690cb2afe9f02c9634bd4f2981c68d3a965262160b
deleted: sha256:92bb211bea7b830ef840e71d713c228899c5e3410f9c42680b9b8ac20f2768c4
deleted: sha256:87abf541af47de9df2dcb2ea24d809e4588ee66e4962cc9ac9be80dd47485b74
deleted: sha256:707ec6b5f54e3797b9916c7bc654e7f3eee4a556feb0d8f02a8c80b42e05480b
deleted: sha256:083a31255590627b3f64364f128aa9b90ad0edc4b69e6a2e6c8a4b0f3cb5ae1b
deleted: sha256:b57b59de4d92dc7817f9b9230362e8332ac1ced766d42b13d70eddb414bc8bab
deleted: sha256:523ad4323258b87b8bfb5c585aa79d9283ab70032ff98b05ac898a9869caedff
deleted: sha256:b534b45d73504d93eabdc10540d8b7c6781bd8d64077b09639290d19e2f6001c
deleted: sha256:7b2fdc416c1e55101dc4f5a9ec0a3e35c408379007138d1dffc7a97dd7db5044
deleted: sha256:3edb8369bc83bd9a9d5700eacdd02282cf14c4f19973a096ff4b35531a3ccd93
deleted: sha256:7d7b1f45aa5f36c47dc589b30ab0d3370b038700040c1f3598512e8f5744b24d
deleted: sha256:713884aa1af94fc2fc3b4af347db41874717902ee14098901c6e972213677321
deleted: sha256:f7635a5ae625be3c4d171ac1c9d154be6be257a283f10512faffcf93973b0dec
deleted: sha256:fe76f6800d31e5234eb9e7cea8d0205da005ee9b57a1c4878c043389dedb4baa
deleted: sha256:1b87706e8a423c21bbbca5b57fb538009519fefca8a00746e783c3fcdc81dfd7
deleted: sha256:f5ee99cd316966014e42cdf25cfeb4d77cea2fe245c2e7639ad0d2d9062aa7e9
deleted: sha256:c78f6d2f8c7d325a29e3aa798581c4bdcd87d48a9fd7af1f2cf830cc1fe1f623
deleted: sha256:e68f780397b50ef63c1fcc1ec835df7e5e93a139d825eb941b1f248816a5a5fa

Total reclaimed space: 1.356GB

Get hands-on with 1200+ tech skills courses.