Docker Engine / Troubleshooting

Docker Published Port Works Locally but Is Unreachable from the LAN

Compare the working local endpoint with the failing LAN endpoint before investigating publication, application listening context or filtering.

A working local request is a starting observation, not proof that the intended LAN-facing port is published. Record where that request went: host loopback, host LAN address, container address or a proxy.[1]

This is an evidence-first comparison, not a firewall repair recipe. Unknown observations lead to a handoff rather than a guessed cause.[2]

Applicability

Products
Docker Engine
Scope
For rootful Docker Engine on Linux, bridge networking, IPv4 NAT-style publication and one TCP service. A host-local request succeeds while a LAN request fails. The main path is scoped to Engine 28.0.0 or newer; older versions need version-specific review. Excludes Desktop/WSL/macOS, rootless, host/macvlan/ipvlan, Swarm, IPv6-only, direct routing, other gateway modes and VPN access.[1][2]
Last verified

Symptoms

  • A non-destructive application request still works locally, but the same intended service cannot be reached from another authorized LAN device.[1]

Quick diagnosis

Gather current evidence before choosing a branch. Unknown observations do not establish a failed component.

Read-only

Record both endpoints

Write down the successful request's execution context, address, TCP port and any proxy, then the failing client's destination. Keep addresses and full outputs private. Do not compare a container port with a different host port as though they were the same endpoint.[1]

Read-only

Inspect actual publication

With existing authorized Docker CLI access, replace <container> with the intended container name or ID. Read the TCP mapping and host address; no matching TCP entry is not a LAN firewall diagnosis.[6]

docker container port <container>
Safe / low risk

Repeat only a normal read operation

Use the application's existing non-destructive request. Record whether it responds now; do not create records, run jobs or change configuration as a connectivity test.[1]

Interactive troubleshooter

Your answers stay in this browser tab. The tool does not connect to your systems or send diagnostic results.

Guided check / step 1

Safe diagnostic guidance

Is this the supported Linux bridge case?

Confirm the stated scope and Engine version. Do not apply this tree to another networking model.[3][1]

Read the complete diagnostic tree without using the controls
  1. Is this the supported Linux bridge case?

    Confirm the stated scope and Engine version. Do not apply this tree to another networking model.[3][1]

    • Yes, supported bridge IPv4 caseDoes the claimed local request still work?
    • No, or topology is uncertainUse the installed network model's documentation
  2. Does the claimed local request still work?

    Repeat only a non-destructive application request and record its context.[1]

    • Yes, local success is reproducibleIs the intended TCP port actually published?
    • No, it no longer respondsRe-establish application health first
    • I cannot reproduce it safelyCollect evidence without widening access
  3. Is the intended TCP port actually published?

    Compare the actual mapping with the intended service and protocol.[6]

    • Yes, TCP mapping matchesDoes the published address cover the intended endpoint?
    • Missing mapping or wrong port/protocolReview the missing or mismatched publication
    • Mapping is unknownCollect evidence without widening access
  4. Does the published address cover the intended endpoint?

    Compare the actual bind address with the client's host-LAN destination; do not substitute a container address.[1]

    • Yes, address matches the intended endpointDoes the intended host-LAN endpoint work from the host?
    • No, the published address differsReview the publication address
    • Address scope is unclearCollect evidence without widening access
  5. Does the intended host-LAN endpoint work from the host?

    Use the same safe request. Success only inside the container or through a proxy is not this result.[1][3]

    • Yes, the intended host endpoint worksWhich Docker firewall backend is established?
    • No, only a different local context worksInvestigate the local listening context
    • I cannot distinguish the contextsCollect evidence without widening access
  6. Which Docker firewall backend is established?

    Inspect existing daemon and policy evidence with the owner; do not change the backend.[5][4]

    • Documented iptables backendIs there matching evidence of filtering this request?
    • nftables or another/unknown backendRequest backend-specific policy review
  7. Is there matching evidence of filtering this request?

    Use the installed backend's rule ordering and address translation. No log entry is not proof of acceptance.[4]

    • Yes, a matching denial is establishedGive matching filter evidence to the policy owner
    • No matching denial is establishedWhat does another authorized LAN client show?
    • Policy evidence is unavailableCollect evidence without widening access
  8. What does another authorized LAN client show?

    Compare the same endpoint and safe request. A difference narrows the next owner without proving one cause.[2]

    • Another LAN client succeedsInvestigate the failing client's LAN path
    • The failure remains or evidence is inconclusiveCollect evidence without widening access
  9. Use the installed network model's documentation

    Record the actual environment first. Do not switch to host mode or alter a firewall to force this page's assumptions.[3]

  10. Re-establish application health first

    The required local success is absent. Investigate the application/container with its owner before diagnosing LAN-only access.[3]

  11. Review the missing or mismatched publication

    Send the mapping and intended TCP endpoint to the deployment owner; use the mapping handoff below.[6]

  12. Review the publication address

    The intended and actual address scopes differ. Request a bounded exposure review, not an all-interface bind.[1]

  13. Investigate the local listening context

    Identify which process/context responded. Consult application-specific documentation; this result alone does not prove a listener defect.[3]

  14. Request backend-specific policy review

    Provide the Engine version and backend evidence. The nftables implementation is experimental and is not an iptables rule recipe.[5]

  15. Give matching filter evidence to the policy owner

    Preserve the rule/context and test timestamp. Use the disruptive-change boundary below before any separately approved correction.[4][2]

  16. Investigate the failing client's LAN path

    Provide the working and failing client comparisons to the LAN owner. Client isolation or routing is a hypothesis to inspect, not a diagnosed cause.[2]

  17. Collect evidence without widening access

    Keep exact endpoints, mapping, backend and current results. Ask the relevant owner for a targeted investigation; do not relax security to obtain a result.[6][2]

Detailed diagnosis

Read-only

1. Establish the network model

Confirm version, rootful Engine and bridge NAT configuration from existing deployment records. Host mode ignores published-port options and is outside this page. Do not switch modes to make the test pass.[3][1]

Read-only

2. Separate publication from application access

Compare the mapping with the intended host LAN address and TCP port. Localhost publication is distinct from LAN-address publication. Docker warns that pre-28.0.0 same-L2 peers can reach localhost-published ports; this is not a security guarantee for old installations.[1][6]

Safe / low risk

3. Test the intended LAN endpoint from the host

Make the same safe request to the intended host-LAN-IP and published port from the Docker host. If only a container-local request works, record that narrower result. Do not diagnose an application listener without inspecting its actual runtime configuration.[1][3]

Read-only

4. Inspect the actual backend

Read the running daemon's existing configuration and the applicable rules with the host owner. Docker's nftables support is documented as experimental since Engine 29.0.0 and has no equivalent DOCKER-USER chain. Unknown/nftables details require backend-specific review, not an iptables fix.[5]

Read-only

5. Require matching filtering evidence

For the iptables backend, user filtering in DOCKER-USER is evaluated before Docker's forwarding chains, after destination translation. Ask for evidence matching this request, including translated addresses where relevant. Do not infer a denial from an unrelated rule or from absent logs.[4]

Safe / low risk

6. Compare another authorized LAN client

Repeat the same non-destructive request from another client on the intended LAN. HomeLabFix uses the contrast to prioritize a client/LAN owner, not to prove a unique router or firewall cause. Docker's published traffic does not follow ordinary ufw INPUT/OUTPUT expectations.[2]

Supported scenarios

These observations narrow the next investigation; they do not establish a unique cause.

The mapping and intended endpoint differ

A missing TCP mapping or a different published address leaves the local and LAN tests incomparable.[1][6]

How to check: Compare the actual mapping with both recorded requests.[6]

The local success covers a different context

A proxy or container-local success may leave the intended direct service path untested. This is an isolation inference, not a confirmed listener fault.[3][1]

How to check: Identify the responding process/context before consulting its application-specific listener documentation.[3]

A host or LAN boundary still needs evidence

Docker-managed bridge rules and the surrounding host policy both matter. A failed request alone does not locate a denial.[2]

How to check: Compare backend-specific evidence and another authorized client's result.[4][5]

Next actions and procedure boundaries

Read-only

Mapping or address mismatch: deployment-owner review

Provide the actual and intended mapping to the deployment owner. Request only a separately authorized correction that preserves intended exposure; do not blindly recreate the container or broaden the bind address.[6][1]

Read-only

Local context mismatch: application-owner review

Provide the exact successful and failed contexts and ask the application owner to verify its listener against that application's documentation. There is no universal listener setting in this page.[3]

Read-only

Matching filter or LAN evidence: network-owner review

Give the policy owner the installed backend, relevant matching evidence and controlled client comparison. Do not flush rules, disable firewall management or substitute host networking.[2][4][5]

Potentially disruptive

Before any separately authorized exposure change

Planning boundary only: configuration and firewall changes can interrupt service or expose it beyond the intended clients. The responsible deployment/network owner must approve the exact change; this page supplies no mutation command.[2]

Before changing anything

Risk
A mapping, network-mode or firewall change can affect service availability and exposure.[2]
Safer check
Confirm the mapping and a matching observation before considering a change.[6]
Expected result
A scoped plan should state which intended clients should gain access and which should remain excluded; verify both after any separate change.[2]
Backup / recovery access
HomeLabFix requires saved deployment settings, confirmed persistent-data recovery and independent host management access before disruptive work.[2]
Rollback
There is no universal rollback recipe here. The owner must verify restoration of the prior deployment and policy for this installation; if recovery is not established, stop.[2]
Read-only

Unresolved: assemble a targeted evidence packet

Keep the version, topology, endpoint comparison, mapping and time-correlated observations. Share only sanitized excerpts with the appropriate application or network owner; missing evidence is a reason to investigate, not permission to weaken security.[6][2]

Warnings and boundaries

Do not disable the firewall, disable Docker rule management, flush rules or expose all addresses as a generic test. Docker-managed rules are part of bridge networking.[2]
Host networking is a different architecture, not a safe replacement for diagnosing this bridge publication.[3]

Sources

Links were reviewed on 2026-09-05. Reachability and automated validation do not replace editorial verification of each claim.

  1. Port publishing and mapping
    Docker · Tier A · accessed 2026-09-05
  2. Packet filtering and firewalls
    Docker · Tier A · accessed 2026-09-05
  3. Host network driver
    Docker · Tier A · accessed 2026-09-05
  4. Docker with iptables
    Docker · Tier A · accessed 2026-09-05
  5. Docker with nftables
    Docker · Tier A · accessed 2026-09-05
  6. docker container port
    Docker · Tier A · accessed 2026-09-05