前言
- 使用
Rancher + Docker
部署应用/服务非常简单的,很多应用/服务的镜像都可以从docker hub上直接获得。 - 但是在实际环境中,还是需要在基镜像的基础上进行相关的设置,或编写Dockerfile build出符合要求的镜像,才能满足具体的使用需求。
- 本文是docker应用系列的开始,本文介绍一个最简单的DNS服务器部署过程
部署DNS服务
- 登陆Rancher(1.6.18),编排工具用的是默认的Cattle
- 应用 - 用户 - 添加应用 - 名称:[DNS] - 创建
添加服务 - 在添加服务页面添写配置如下信息 - 创建
名称: 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
配置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 #--------------------------------------------------------