docker 搭建 dnsmasq 服务

Dockerfile 编写

mkdir -p /data/docker/dns && cd /data/docker/dns && vim Dockerfile

FROM centos:centos7.9.2009 as builder

ENV GOROOT=/usr/local/go
ENV GOBIN=/usr/local/go/bin
ENV GOPATH=/usr/local/go/gopath
ENV GOPROXY=https://goproxy.cn,https://goproxy.io,direct
ENV PATH=$PATH:$GOBIN:$GOPATH/bin

WORKDIR /opt

RUN  yum -y update && yum -y install wget git \
&& wget --progress=bar:force https://studygolang.com/dl/golang/go1.19.5.linux-amd64.tar.gz \
&& tar -zxvf go1.19.5.linux-amd64.tar.gz -C /usr/local \
&& rm -f go1.19.5.linux-amd64.tar.gz \
&& git clone https://github.com/jpillora/webproc.git \
&& cd webproc \
&& go build -o webproc -v .

FROM centos:centos7.9.2009

MAINTAINER traynordou@163.com

ENV DNSMASQ_CONF=/etc/dnsmasq.conf

COPY docker-entrypoint.sh /docker-entrypoint.sh
RUN chmod +x /docker-entrypoint.sh
COPY --from=builder  /opt/webproc/webproc /usr/bin/webproc

RUN yum -y install dnsmasq \
&& cp /etc/dnsmasq.conf /etc/dnsmasq.conf.default

EXPOSE 8080
EXPOSE 53

ENTRYPOINT ["/docker-entrypoint.sh"]

docker-entrypoint.sh 编写

vim docker-entrypoint.sh

#!/bin/bash
systemctl start dnsmasq
webproc -c /etc/dnsmasq.conf -c /etc/hosts -- dnsmasq --no-daemon

编译镜像

vim build.sh

#!/bin/bash
docker build -t dnsmasq:latest .

编译

sh build.sh

docker-compose.yml 编写

vim docker-compose.yml

version: '3'

networks:
  app-tier:
    driver: bridge

services:
  etcd:
    image: 'dnsmasq:latest'
    container_name: "dns"
    restart: always
    ports:
      - 8080:8080
      - 53:53/tcp
      - 53:53/udp
    volumes:
      - /etc/hosts:/etc/hosts
      - /data/docker_volumes/dns/dnsmasq.conf:/etc/dnsmasq.conf
      - /data/docker_volumes/dns/logs/dnsmasq.log:/va/log/dnsmasq.log
      - /etc/resolv.conf:/etc/resolv.conf
    networks:
      - app-tier

挂载路径创建

创建挂载

mkdir -p /data/docker_volumes/dns/logs && touch /data/docker_volumes/dns/logs/dnsmasq.log

创建 dnsmasq.conf

vim /data/docker_volumes/dns/dnsmasq.conf
尾部写入:

# Include all files in /etc/dnsmasq.d except RPM backup files
conf-dir=/etc/dnsmasq.d,.rpmnew,.rpmsave,.rpmorig

# dns log
log-facility=/va/log/dnsmasq.log

完整内容查看:dnsmasq.conf

运行镜像

docker-compose up -d

查看

浏览器输入: ip:8080

dnsmasq-web-ui

客户端配置

在需要域名访问的机器上配置 DNS 地址,dns 地址为你搭建 dnsmasq 服务的地址。
以下为例子:

windows

windows-dns

centOS

linux-dns

macOS

macos-dns

域名访问

配置完成后即可按照你配置的域名进行访问,如上例,可以在浏览器输入 : myweb.com访问网站。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值