FYI... since you are using nested docker containers, networking is just a tad borked....
Add:
# [rpc]
# Accept command line and JSON-RPC commands.
server=1
# Bind to all interfaces to listen for JSON-RPC connections.
rpcbind=0.0.0.0
rpcallowip=localnetwork/24
to /data/bitcoin/bitcoin.conf and all the sudden.... Boom!
curl -v --user umbrel --data-binary '{"jsonrpc": "1.0", "id":"curltest", "method": "getblockchaininfo", "params": [] }' -H 'content-type: text/plain;' http://localnetwork:8332/
Enter host password for user 'umbrel':
* Trying localnetwork:8332...
* Connected to localnetwork (local network) port 8332
* Server auth using Basic with user 'umbrel'
> POST / HTTP/1.1
> Host: localnetwork:8332
> Authorization: Basic dW1icmVsOmUwT0JhRHhYSkVPOXVkOE4wRGg2Rm1Vc0xycTB4MmhYX190STU2Y19mblE9
> User-Agent: curl/8.4.0
> Accept: */*
> content-type: text/plain;
> Content-Length: 81
>
< HTTP/1.1 200 OK
< Content-Type: application/json
< Date: Wed, 10 Jan 2024 16:24:22 GMT
< Content-Length: 451
<
{"result":{"chain":"main","blocks":391790,"headers":825158,"bestblockhash":"00000000000000000615c63c8e0a94b77414cd06b60ab45cb5cf6b3adfa1ef5a","difficulty":103880340815.4559,"time":1451952411,"mediantime":1451949990,"verificationprogress":0.1118299839171059,"initialblockdownload":true,"chainwork":"0000000000000000000000000000000000000000000e7c88ecddb0a466ea274e","size_on_disk":62876754237,"pruned":false,"warnings":""},"error":null,"id":"curltest"}
/data/bitcoin/bitcoin.conf
and all the sudden.... Boom!