- Notifications
You must be signed in to change notification settings - Fork73
Access your Docker for Mac's internal networks from your macOS host machine
License
wojas/docker-mac-network
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
This solution allows you to access yourDocker for Mac's internal networks directly from your macOS host machine, using OpenVPN.
To access your Docker networks:
- InstallTunnelblick (open source macOS OpenVPN client that sits in your menubar)
- Run
docker-compose up
. The first time it will take up to a minute to startup, because it needs to generate keys. - Doubleclick the generated
docker-for-mac.ovpn
in Finder (or runopen docker-for-mac.ovpn
in your terminal) to add it to Tunnelblick. You will find it in the current folder. - In Tunnelblick, connect to your new docker-for-mac profile.
You will now be able to access the internal Docker networks from macOS.
The Compose configuration consists of two services, both based on the tiny Alpine Linux distribution.
The OpenVPN image used iskylemanna/openvpn.
Both server-side and client-side configuration are automatically generated byhelpers/run.sh
, which calls the helper scripts in original image and adjust configuration for accessing the Docker for Mac networks only.
This service runs on TCP port 1194 usinghost networking, which means it has access to all Docker networks in the host VM.
Only the172.16.0.0/20
private network is routed to Docker for Mac by the generated config. No DNS servers are set on the host.
The OpenVPN configuration (/etc/openvpn/*
) is stored locally in./config/
so that it survives Docker filesystem resets and allows for easy customization.
Since containers running in host networking mode in Docker for Mac cannot bind ports to make them accessible from macOS, we need an extra TCP proxy. This image uses socat to forward port 13194 to the OpenVPN container.
- Add
restart: always
to both services indocker-compose.yml
to have them automaticaly restart. - To route extra subnets, add extra
route
statements in yourdocker-for-mac.ovpn
- To setup static IP addresses for containers, check the
app_net
examples in theCompose file reference - To regenerate all files, remove
config/*
anddocker-for-mac.ovpn