如何使用Docker容器设置DNS服务器

时间:2020-03-05 15:25:25  来源:igfitidea点击:

Dockerfile用于创建Docker容器图像,这将用于创建DNS服务器。
使用Docker设置基本DNS服务器的简单方法是使用与Webmin接口捆绑的绑定DNS服务器。
在本教程中,我们介绍如何使用Docker容器实现DNS服务器。

绑定是一个开源软件,它为Internet实现域名系统(DNS)协议。
它是这些协议的参考实施,但它也是生产级软件,适用于大容量和高可靠性应用。

DockerHub上容易提供图像的自动构建,是推荐的安装方法

docker pull sameersbn/bind:9.9.5-20160129

或者,我们可以自己构建图像。

docker build -t sameersbn/bind github.com/sameersbn/docker-bind

要启动绑定我们执行的DNS服务器:

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-20160129

或者,我们可以使用示例Docker组件。
yml文件使用docker撰写启动容器。

当容器启动时,还启动WebMin服务,可从HTTP://localhost:10000的Web浏览器访问。
使用用户名root和密码密码登录webmin。
指定--env root_password = docker运行命令的secrypassword以设置我们选择的密码。

通过向Docker Run命令添加--env webmin_enabled = false,可以禁用Webmin的启动。
请注意,root_password参数在禁用Webmin的启动时无效。

测试DNS服务器

我们可以通过指定Docker Run命令上命名的参数来自定义Bind Server的启动命令。
例如,以下命令打印命名命令的帮助菜单:

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-20160129 -h

对于绑定以跨容器关闭和启动保留其状态,我们应该在/数据上安装卷。

Selinux用户应该更新主机安装点的安全上下文,以便与Docker播放:

mkdir -p /srv/docker/bind
chcon -Rt svirt_sandbox_file_t /srv/docker/bind

部署和维护

升级绑定DNS Docker图像

下载更新的Docker图片:

docker pull sameersbn/bind:9.9.5-20160129

停止当前运行的图像:

docker stop bind

删除停止的容器

docker rm -v bind

启动更新的图像

docker run -name bind -d \ [OPTIONS] \ sameersbn/bind:9.9.5-20160129

将Web浏览器打开到HTTPS://172. 17. 42. 1:10000并登录Webmin作为用户root和password secretpassword。
这将使我们可以使用Webmin UI配置DNS服务器。