Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Cannot access docker host from macos

Tags:

docker

I am trying to access my host system from a docker container

have tried all the following instead of 127.0.0.1 and localhost:

gateway.docker.internal, docker.for.mac.host.internal, host.docker.internal , docker.for.mac.host.internal, docker.for.mac.localhost,

but none seem to work.

If I run my docker run command with --net=host, I can indeed access localhost however none of my port mappings get exposed and in accessible from outside docker.

I am using Docker version 20.10.5, build 55c4c88

some more info. I am running a piece of software called impervious (a layer on top of the bitcoin lightning network). It needs to connect to my local Polar lightning node on localhost:10001. Here is the config file the tool itself uses(see lnd section):

# Server configurations
server:
  enabled: true # enable the GRPC/HTTP/websocket server
  grpc_addr: 0.0.0.0:8881 # SET FOR DOCKER
  http_addr: 0.0.0.0:8882 # SET FOR DOCKER
# Redis DB configurations
sqlite3:
  username: admin
  password: supersecretpassword # this will get moved to environment variable or generated dynamically
###### DO NOT EDIT THE BELOW SECTION#####
# Services
service_list:
  - service_type: federate
    active: true
    custom_record_number: 100000
    additional_service_data:
  - service_type: vpn
    active: true
    custom_record_number: 200000
    additional_service_data:
  - service_type: message
    active: true
    custom_record_number: 400000
    additional_service_data:
  - service_type: socket
    active: true
    custom_record_number: 500000
    additional_service_data:
  - service_type: sign
    active: true
    custom_record_number: 800000
    additional_service_data:
###### DO NOT EDIT THE ABOVE SECTION#####

# Lightning
lightning:
  lnd_node:
    ip: host.docker.internal 
    port: 10001 #GRPC port of your LND node
    pub_key: 025287d7d6b3ffcfb0a7695b1989ec9a8dcc79688797ac05f886a0a352a43959ce #get your LND pubkey with "lncli getinfo"
    tls_cert: /app/lnd/tls.cert # SET FOR DOCKER
    admin_macaroon: /app/lnd/admin.macaroon # SET FOR DOCKER
federate:
  ttl: 31560000 #Federation auto delete in seconds
  imp_id: YOUR_IMP_ID #plain text string of your IMP node name
vpn:
  price: 100 #per hour
  server_ip: http://host.docker.internal #public IP of your VPN server
  server_port: 51820 #port you want to listen on
  subnet: 10.0.0.0/24 #subnet you want to give to your clients. .1 == your server IP.
  server_pub_key: asdfasdfasdf #get this from your WG public key file
  allowed_ips: 0.0.0.0/0 #what subnets clients can reach. Default is entire world.
  binary_path: /usr/bin/wg #where your installed the "wg" command.
  dns: 8.8.8.8 #set your preferred DNS server here.
socket:
  server_ip: 1.1.1.1 #public IP of your socket server

I run impervious using the following docker comand:

docker run -p8881:8881 -p8882:8882  -v /Users/xxx/dev/btc/impervious/config/alice-config-docker.yml:/app/config/config.yml -v /Users/xxx/.polar/networks/1/volumes/lnd/alice/tls.cert:/app/lnd/tls.cert -v /Users/xxx/.polar/networks/1/volumes/lnd/alice/data/chain/bitcoin/regtest/admin.macaroon:/app/lnd/admin.macaroon  -it impant/imp-releases:v0.1.4

but it just hangs when it tries to connect to the node at host.docker.internal

like image 777
1977 Avatar asked Sep 13 '25 20:09

1977


2 Answers

You can use host.docker.internal which gives the localhost of the macos.

https://docs.docker.com/desktop/networking/#i-want-to-connect-from-a-container-to-a-service-on-the-host

The host has a changing IP address (or none if you have no network access). We recommend that you connect to the special DNS name host.docker.internal which resolves to the internal IP address used by the host. This is for development purpose and does not work in a production environment outside of Docker Desktop.

like image 88
Mohit Kumar Avatar answered Sep 15 '25 10:09

Mohit Kumar


Host networking is also supported on Docker Desktop version 4.29 and later for Mac, Windows, and Linux as a beta feature. To enable this feature, navigate to the Features in development tab in Settings, and then select Enable host networking.

The reference is here

like image 37
iku Avatar answered Sep 15 '25 11:09

iku