How to Solve: “docker: Error response from daemon: Ports are not available”

The error “Ports are not available: exposing port TCP 0.0.0.0:5000 -> 0.0.0.0:0: listen tcp4 0.0.0.0:5000: bind: address already in use” occurs when another process is already using port 5000, preventing your Docker container from binding to the port. Here’s how you can resolve it.


1. Identify the Process Using the Port

To find out which process is using port 5000, you can run the following command:

</>
Copy
lsof -i :5000

This will show the process ID (PID) of the application occupying the port. Once you have the PID, you can stop the process using:

</>
Copy
kill -9 

Replace <PID> with the process ID found earlier. This will terminate the process using the port.

2. Check for Docker Containers Using the Port

If Docker itself is using the port, list all running Docker containers with the following command:

</>
Copy
docker ps

Look for any containers that might be using port 5000. If you find one, stop it by running:

</>
Copy
docker stop 

Replace <container_id> with the ID of the container. This will free up the port for your application.

3. Restart Docker

If the issue persists, it may be helpful to restart Docker to clear up any issues with port binding:

  • Click the Docker Desktop icon in the menu bar.
  • Go to Preferences > Restart Docker.

4. Change the Port Number

If port 5000 is being used by another application and you don’t want to terminate it, you can change the port that your Docker container uses. Modify the Dockerfile or the command used to run the Docker container to map a different port:

</>
Copy
docker run -p 5001:5000 

This command maps port 5001 on your host to port 5000 inside the container. You can replace 5001 with any available port.

5. Verify Your Changes

After following the steps above, verify that the issue is resolved by running the Docker container again. Use the following command to check that the port is correctly bound:

</>
Copy
docker ps

Ensure that the container is now running and that port 5000 (or whichever port you chose) is properly exposed.


By following these steps, you should be able to resolve the “port already in use” error and successfully run your Docker container with the desired port.