Skip to main content

Local DNS server for exposing docker containers on bridge networks

Project description

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.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

docker_container_domain_connector-0.1.1.tar.gz (16.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

File details

Details for the file docker_container_domain_connector-0.1.1.tar.gz.

File metadata

File hashes

Hashes for docker_container_domain_connector-0.1.1.tar.gz
Algorithm Hash digest
SHA256 41279dda82570b418cbd323a222e1012102bc88d9f8f927e9e6954ce054f73de
MD5 5bbe94e43fe611f23f8c910621481a96
BLAKE2b-256 1d27cbde7c4eadbbfbcd9c088a294b760272788f7ec132822335eed07c73c817

See more details on using hashes here.

File details

Details for the file docker_container_domain_connector-0.1.1-py3-none-any.whl.

File metadata

File hashes

Hashes for docker_container_domain_connector-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 10c30e1882898f169251f0cd8388d058f57b59f4e8143ccad024762340a680ce
MD5 f4404d97d3634b7483531fa2f74024ae
BLAKE2b-256 31e4ece8d5f52d9a55c06a7e81a4cd70c6d39c4456fc277fb36295abf49d2dc3

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page