A lightweight sidecar container that automatically exposes Docker containers as DNS entries, making container discovery and inter-container communication seamless.
coredock monitors your Docker daemon for running containers and automatically:
services:
coredock:
image: ghcr.io/ad-on-is/coredock
restart: always
container_name: coredock
environment:
- COREDOCK_DOMAINS=docker.lan
- COREDOCK_IP_PREFIXES=10,192 # [either] (recommended) only expose A records for these IP prefixes
- COREDOCK_IGNORE_IP_PREFIXES=172 # [or] (recommended) ignore these IP prefixes
- COREDOCK_NETWORKS=vlan40,vlan10 # (optional) auto-connect containers to these networks
- COREDOCK_NAMESERVERS=10.0.0.2:53 # (optional) other coredock hosts
volumes:
- /var/run/docker.sock:/run/docker.sock
ports:
- 53:53
- 53:53/udp
services:
app-to-ignore:
image: example/app:latest
container_name: app-to-ignore
restart: always
labels:
coredock.ignore: true # will not be handled by coredock
app:
image: example/app:latest
container_name: app
restart: always
labels:
coredock.srv: 80 # will create _http._tcp.app.domain.com SRV record
coredock.srv--api: 3000 # will create _http._tcp.api.domain.com SRV record
coredock.srv--_http._tcp.websocket: 6000 # will create _http._tcp.websocket.domain.com SRV record
coredock.alias: my-alias
coredock.ignore: true - Ignores the containercoredock.srv: 3000 - Creates an SRV record with _http._tcp.containername pointing to port 3000coredock.srv--alias: 3000 Creates an SRV record with _http._tcp.alias pointing to port 3000. Useful when containers come with a
backend-service and a frontend-service running on different ports.coredock.srv--_<service>._<proto>.alias: 3000 - Allows you to specify custom service and protocol for the SRV record.coredock.alias: foo,bar - Comma separated list to create CNAME records of the service.dig app.docker.lan
# ;; ANSWER SECTION:
# app.docker.lan. 10 IN A 10.0.0.2
dig my-alias.docker.lan
# ;; ANSWER SECTION:
#my-alias.docker.lan. 10 IN CNAME app.docker.lan.
# app.docker.lan. 10 IN A 10.0.0.2
dig _http._tcp.api.docker.lan SRV
#;; ANSWER SECTION:
# _http._tcp.api.docker.lan. 10 IN SRV 10 5 3000 app.docker.lan.
# ;; ADDITIONAL SECTION:
# app.docker.lan. 10 IN A 10.0.0.2
dig -x 10.0.0.2
# ;; ANSWER SECTION:
# 2.0.0.10.in-addr.arpa. 10 IN PTR app.docker.lan.
Automatically proxy all requests <name>.example.com to <name>.docker.lan and their corresponding SRV port.
example.com {
@srv_lookup {
header_regexp host Host ^([^.]+)\.examle\.com$
}
handle @srv_lookup {
reverse_proxy {
dynamic srv _http._tcp.{http.regexp.host.1}.docker.lan
}
}
}
MIT
$ claude mcp add coredock \
-- python -m otcore.mcp_server <graph>