Skip to content

Local DNS server for exposing docker containers on bridge networks

License

Notifications You must be signed in to change notification settings

nhairs/docker-container-domain-connector

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

DCDC: Docker Container Domain Connector

PyPi PyPI - Status Python Versions License

DCDC provides a local DNS server for exposing docker containers on bridge networks.

This allows you to easily reference containers by name instead of exposing and binding IP addresses / ports on the localhost. Names are in the form of container-name.compose-project-name.dcdc

% dig mysql.my-project.dcdc

; <<>> DiG 9.18.18-0ubuntu0.22.04.2-Ubuntu <<>> mysql.my-project.dcdc
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 59483
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 65494
;; QUESTION SECTION:
;mysql.my-project.dcdc.	IN	A

;; ANSWER SECTION:
mysql.my-project.dcdc. 51	IN	A	192.168.144.3

;; Query time: 0 msec
;; SERVER: 127.0.0.53#53(127.0.0.53) (UDP)
;; WHEN: Fri May 10 20:56:11 AEST 2024
;; MSG SIZE  rcvd: 71

Setup

Install DCDC

# TODO: upload to pypi
pip install docker-container-domain-conenctor

Configure systemd-resolved

Edit /etc/systemd/resolved.conf

[Resolve]
DNS=127.0.0.1:9953#dcdc

Run DCDC

dcdc

Restart systemd-resolved

sudo systemctl restart systemd-resolved

Test

dig some.container.dcdc

Usage

The main application is provided by the dcdc command.

usage: dcdc [-h] [-v] [--log-dir PATH] [--version] [--host HOST] [--port PORT] [--tcp | --udp]
            [--root-domain ROOT_DOMAIN]

dcdc (Docker Container Domain Connector) is a dns server that allows mapping docker containers to their currently running bridge ip address.

options:
  -h, --help            show this help message and exit
  -v, --verbose         Increase logging verbosity
  --log-dir PATH        Set where log files should be stored. Defaults to /var/tmp
  --version             show program's version number and exit
  --host HOST           Host (IP) to bind to. Use --ips to see available. Defaults to localhost.
  --port PORT           Port to bind to. Defaults to 9953.
  --tcp                 Use TCPv4 socket for transport.
  --udp                 Use UDPv4 socket for transport. (default)
  --root-domain ROOT_DOMAIN
                        Root domain for queries (e.g. <query>.<root>). Does not have to be a TLD, can
                        be any level of domain. Defaults to ".dcdc".

This package also provies the dcdc-ips utility command which will print available IP addresses.

Licence

This project is licenced under the MIT Licence - see LICENCE.

Authors

A project by Nicholas Hairs - www.nicholashairs.com.

About

Local DNS server for exposing docker containers on bridge networks

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages