Docker学习笔记_09 docker应用 - 部署DNS服务

前言

  • 使用Rancher + Docker部署应用/服务非常简单的,很多应用/服务的镜像都可以从docker hub上直接获得。
  • 但是在实际环境中,还是需要在基镜像的基础上进行相关的设置,或编写Dockerfile build出符合要求的镜像,才能满足具体的使用需求。
  • 本文是docker应用系列的开始,本文介绍一个最简单的DNS服务器部署过程

部署DNS服务

  1. 登陆Rancher(1.6.18),编排工具用的是默认的Cattle
  2. 应用 - 用户 - 添加应用 - 名称:[DNS] - 创建
  3. 添加服务 - 在添加服务页面添写配置如下信息 - 创建

    名称: DNS
    选择镜像: 10.240.4.159/app/dnsmasq
    端口映射: 53:53/tcp  53:53/udp
    
    卷 - 添加卷: /etc/localtime:/etc/localtime:ro
                 /docker_mnt/dns/dnsmasq.d:/etc/dnsmasq.d
                 /docker_mnt/dns/dnsmasq.conf:/etc/dnsmasq.conf   # 卷需要先创建并启动容器后将配置文件拷出,升级时再添加)
    
    网络 - 主机名: dns
    
    安全主机 - 内核能力:  NET_ADMIN
    
    调度 - 在指定主机上运行全部容器: docker159
    
    
    # 下载andyshinn/dnsmasq镜像,并上传到私有镜像仓库步骤
    docker pull andyshinn/dnsmasq
    docker tag andyshinn/dnsmasq 10.240.4.159/app/dnsmasq
    docker push 10.240.4.159/app/dnsmasq
    
    # dnsmasq官方说明:https://hub.docker.com/r/andyshinn/dnsmasq/
    # dnsmasq requires NET_ADMIN capabilities to run correctly
    # docker run -p 53:53/tcp -p 53:53/udp --cap-add=NET_ADMIN andyshinn/dnsmasq
    
    docker ps -a | grep DNS | awk '{print $1}'
    1732e50096e1
    
    # 格式:docker cp 容器名/ID:要拷贝的文件在容器里面的路径 要拷贝到宿主机的相应路径
    mkdir -p /docker_mnt/dns/dnsmasq.d
    docker cp 1732e50096e1:/etc/dnsmasq.conf /docker_mnt/dns
    
  4. 配置dns

    # 以下为方便在宿主机上执行
    # 配置上行的真正的dns服务器地址,毕竟只是个本地代理,不了解外部规则
    vi /docker_mnt/dns/dnsmasq.d/resolv.dnsmasq
    #--------------------------------------------------------
    nameserver 202.97.224.68
    nameserver 114.114.114.114
    nameserver 8.8.8.8
    #--------------------------------------------------------
    
    # 配置本地解析规则
    vi /docker_mnt/dns/dnsmasq.d/dnsmasqhosts
    #--------------------------------------------------------
    10.240.4.160 gitlab gitlab.ydgw.cn
    #--------------------------------------------------------
    
    # 修改dnsmasq配置文件,指定使用上述两个自定义的配置文件,注意地址是容器内地址
    vi /docker_mnt/dns/dnsmasq.conf
    #--------------------------------------------------------
    resolv-file=/etc/dnsmasq.d/resolv.dnsmasq
    addn-hosts=/etc/dnsmasq.d/dnsmasqhosts
    #--------------------------------------------------------
    
    # 在rancher中重启容器
    # 通过dig命令查看
    dig gitlab
    #--------------------------------------------------------
    ; <<>> DiG 9.10.3-P4-Ubuntu <<>> gitlab
    ;; global options: +cmd
    ;; Got answer:
    ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 64453
    ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
    
    ;; OPT PSEUDOSECTION:
    ; EDNS: version: 0, flags:; udp: 4096
    ;; QUESTION SECTION:
    ;gitlab.                                IN      A
    
    ;; ANSWER SECTION:
    gitlab.                 0       IN      A       10.240.4.160
    
    ;; Query time: 0 msec
    ;; SERVER: 10.240.4.159#53(10.240.4.159)
    ;; WHEN: Wed Jul 11 16:17:39 CST 2018
    ;; MSG SIZE  rcvd: 51
    #--------------------------------------------------------
    
文章目录
  1. 1. 前言
  2. 2. 部署DNS服务