Toolman 100% local

Port 2376 — Docker API (TLS)

TCP registered

What runs on port 2376

The Docker daemon API with TLS client certificate authentication.

The Docker daemon API with TLS and client-certificate authentication. This is the supported way to reach a daemon remotely, and the certificate requirement is the entire point — without it the API grants root, as port 2375 demonstrates. Even so, an SSH tunnel is usually simpler to operate and easier to audit than distributing and rotating client certificates.

Security considerations

Still grants full host control to whoever holds a certificate. Treat those certificates like root passwords.

Checking whether something is listening

# Linux / macOS — what is bound to the port
sudo lsof -i :2376
sudo ss -lntp | grep :2376

# Windows
netstat -ano | findstr :2376
Get-NetTCPConnection -LocalPort 2376

# is it reachable from outside?
nc -zv example.com 2376
curl -v telnet://example.com:2376

Freeing the port

# find the process, then stop it
sudo lsof -ti :2376 | xargs kill        # Linux / macOS
netstat -ano | findstr :2376            # note the PID, then:
taskkill /PID <pid> /F                    # Windows

Should this port be open to the internet?

Usually not. Expose it only if a specific external client needs it, and restrict by source address where you can.

Opening or blocking port 2376

Finding the port is usually the first half of the job. Start narrow — the second rule is there for services that genuinely serve the public, and most do not:

# ufw — Debian, Ubuntu
sudo ufw allow from 10.0.0.0/8 to any port 2376 proto tcp
sudo ufw allow 2376/tcp                   # only if it genuinely serves the public

# firewalld — RHEL, Fedora, CentOS
sudo firewall-cmd --permanent --add-rich-rule='rule family=ipv4 source address=10.0.0.0/8 port port=2376 protocol=tcp accept'
sudo firewall-cmd --reload

# iptables, if you are still there
sudo iptables -A INPUT -p tcp --dport 2376 -s 10.0.0.0/8 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 2376 -j DROP

# Windows
New-NetFirewallRule -DisplayName "Docker API (TLS) 2376" -Direction Inbound -Protocol TCP -LocalPort 2376 -RemoteAddress 10.0.0.0/8 -Action Allow

10.0.0.0/8 stands in for a private range — substitute your own. Note that a firewall rule does not undo a service bound to 0.0.0.0; it only stops packets reaching it, and a misconfigured or disabled firewall then exposes it immediately.

Quick reference

Port2376
ProtocolTCP
ServiceDocker API (TLS)
RangeRegistered (1024–49151) — any user process may bind

Frequently asked questions

What is port 2376 used for?

The Docker daemon API with TLS client certificate authentication.

Is it safe to open port 2376?

Still grants full host control to whoever holds a certificate. Treat those certificates like root passwords.

How do I check if port 2376 is open?

Locally, sudo lsof -i :2376 on macOS or Linux, or netstat -ano | findstr :2376 on Windows. From outside, nc -zv host 2376 tells you whether anything answers.

Why do I get "address already in use" on port 2376?

Another process is bound to it — often a previous run of your own program that did not exit cleanly. Find it with lsof -ti :2376 and stop it, or configure your application to use a different port.

Can I change the port this service uses?

Almost always yes, in the service's configuration. Moving off a default port reduces automated scan noise, but it is obfuscation rather than security — a real attacker scans all 65,535.

Other common ports

All port numbers