Come configurare il server DNS con Docker Container
Un Dockerfile viene utilizzato per creare un’immagine del contenitore Docker, questo verrà utilizzato per creare il server DNS. Un modo semplice per configurare un server DNS di base con Docker consiste nell’utilizzare il server DNS BIND insieme all’interfaccia Webmin. In questo tutorial tratteremo come distribuire il server DNS utilizzando il contenitore docker.
BIND è un software open source che implementa i protocolli DNS (Domain Name System) per Internet. È un’implementazione di riferimento di questi protocolli, ma è anche un software di produzione, adatto per l’uso in applicazioni ad alto volume e ad alta affidabilità.
Le build automatiche delle immagini sono prontamente disponibili su Hub Docker ed è il metodo di installazione consigliato
docker pull sameersbn/bind:9.9.5-20170129
In alternativa, puoi creare tu stesso l’immagine.
docker build -t sameersbn/bind github.com/sameersbn/docker-bind
Per avviare un server DNS BIND, eseguire:
docker run --name bind -d --restart=always --publish 53:53/tcp --publish 53:53/udp --publish 10000:10000/tcp --volume /srv/docker/bind:/data sameersbn/bind:9.9.5-20170129
In alternativa, puoi utilizzare il file docker-compose.yml di esempio per avviare il contenitore utilizzando Docker Compose.
Quando il contenitore viene avviato, viene avviato anche il servizio Webmin ed è accessibile dal browser Web all’indirizzo http://localhost:10000. Accedi a Webmin con il nome utente e la password di root. Specifica –env ROOT_PASSWORD=secretpassword nel comando docker run per impostare una password a tua scelta.
L’avvio di Webmin può essere disabilitato aggiungendo –env WEBMIN_ENABLED=false al comando docker run. Si noti che il parametro ROOT_PASSWORD non ha effetto quando l’avvio di Webmin è disabilitato.
Test del server DNS
È possibile personalizzare il comando per avviare il server BIND specificando gli argomenti a named nel comando docker run. Ad esempio, il seguente comando stampa il menu di aiuto del comando indicato:
docker run --name bind -it --rm
--publish 53:53/tcp --publish 53:53/udp --publish 10000:10000/tcp
--volume /srv/docker/bind:/data
sameersbn/bind:9.9.5-20170129 -h
Affinché BIND mantenga il proprio stato durante l’arresto e l’avvio del contenitore, è necessario montare un volume in /data.
Gli utenti di SELinux dovrebbero aggiornare il contesto di sicurezza del punto di montaggio dell’host in modo che funzioni bene con Docker:
mkdir -p /srv/docker/bind
chcon -Rt svirt_sandbox_file_t /srv/docker/bind
Implementazione e manutenzione
Per aggiornare l’immagine Docker DNS BIND
Scarica l’immagine Docker aggiornata:
docker pull sameersbn/bind:9.9.5-20170129
Arresta l’immagine attualmente in esecuzione:
docker stop bind
Rimuovere il contenitore bloccato
docker rm -v bind
Eseguire l’immagine aggiornata
docker run -name bind -d [OPTIONS] sameersbn/bind:9.9.5-20170129
Apri il tuo browser Web su https://172.17.42.1:10000 e accedi a webmin come utente root e password SecretPassword. Questo ti darà la possibilità di configurare il tuo server DNS utilizzando l’interfaccia utente di Webmin.
Conclusione
Per scopi di debug e manutenzione, potresti voler accedere alla shell del contenitore. Se utilizzi Docker versione 1.3.0 o successiva, puoi accedere a una shell del contenitore in esecuzione avviando bash utilizzando docker exec:
docker exec -it bind bash
Esegue il server DNS Docker.