最开始我是在MacOs系统上安装docker(下载地址),但是macOS无法直接访问docker容器的IP(官网上也有说明,有知道的朋友麻烦告知),最终在Centos7系统安装docker,我安装的是CE版本(下载及安装说明地址).
安装docker 最终在Centos7系统安装docker,我安装的是CE版本(下载及安装说明地址). 安装docker-compose 使用curl下载 将下载的文件权限修改为可执行权限 将docker-compose移入/usr/bin目录,以便在终端直接执行 具体参考官方安装文档 编写 dockerfile Docker下载完成之后,编写dockerfile文件,下载centos7镜像,此处要注意,由于以后我们要使用systemctl,所以需要特殊处理,如下: FROM centos:7 ENV container docker RUN (cd /lib/systemd/system/sysinit.target.wants/; for i in *; do [ $i == \ systemd-tmpfiles-setup.service ] || rm -f $i; done); \ rm -f /lib/systemd/system/multi-user.target.wants/*;\ rm -f /etc/systemd/system/*.wants/*;\ rm -f /lib/systemd/system/local-fs.target.wants/*; \ rm -f /lib/systemd/system/sockets.target.wants/*udev*; \ rm -f /lib/systemd/system/sockets.target.wants/*initctl*; \ rm -f /lib/systemd/system/basic.target.wants/*;\ rm -f /lib/systemd/system/anaconda.target.wants/*; VOLUME [ "/sys/fs/cgroup" ] CMD ["/usr/sbin/init"] 具体情况请参考官方文档说明 DNS 我计划安装两台DNS服务器,一台Master,一台Slave,Master配置IP与域名的正向与反向对应关系,Slave进行同步。 编写docker-compose.yml 假定上面下载的centos image的名称为centos,标签为latest version: "3" services: dns_master: image: centos:latest container_name: dns_master hostname: dns_master privileged: true dns: 192.168.254.10 networks: br0: ipv4_address: 192.168.254.10 dns_slave: image: centos:latest container_name: dns_slave hostname: dns_slave privileged: true dns: - 192.168.254.10 - 192.168.254.11 networks: br0: ipv4_address: 192.168.254.11 networks: br0: driver: bridge ipam: driver: default config: - subnet: 192.168.254.0/24 从docker-compose.yml文件可知我选择了bridge桥接网络模式,并为dns master和dns slave分别分配了ip. 在docker-compose.yml文件所在目录运行 docker-compose up 命令,创建名称分别为dns_master和dns_slave的容器。 配置DNS Master服务器 1.我们进入dns_master容器 docker exec -it dns_master /bin/bash 2.安装bind9 dns package yum install bind bind-utils -y 3.修改配置文件named.conf vim /etc/named.conf 注意以双星号(**)包围的内容,只是为了强调,实际配置时应去掉 options { listen-on port 53 { 127.0.0.1; **192.168.254.10;** }; //Master Dns Ip listen-on-v6 port 53 { ::1; }; directory "/var/named"; dump-file "/var/named/data/cache_dump.db"; statistics-file "/var/named/data/named_stats.txt"; memstatistics-file "/var/named/data/named_mem_stats.txt"; recursing-file "/var/named/data/named.recursing"; secroots-file "/var/named/data/named.secroots"; allow-query { localhost; **192.168.254.0/24;** }; // IP Ranges allow-transfer { localhost; **192.168.254.11;**}; // Slave Ip ...... .... zone "." IN { type hint; file "named.ca"; }; ** zone "elong.com" IN { type master; file "forward.yanggy"; // 正向解析文件 allow-update { none; }; }; zone "254.168.192.in-addr.arpa" IN { type master; file "reverse.yanggy"; // 反向解析文件 allow-update { none;}; }; ** include "/etc/named.rfc1912.zones"; include "/etc/named.root.key"; 配置正向解析文件forward.yanggy vim /var/named/forward.yanggy $TTL 86400 @ IN SOA masterdns.yanggy.com. root.yanggy.com. ( 2019011201 ;Serial 3600 ;Refresh 1800 ;Retry 64800 ;Expire 86400 ;Minimum TTL ) @ IN NS masterdns.yanggy.com. @ IN NS slavedns.yanggy.com. @ IN A 192.168.254.10 @ IN A 192.168.254.11 masterdns IN A 192.168.254.10 slavedns IN A 192.168.254.11 4.配置反向解析文件 vim /var/named/reverse.yanggy $TTL 86400 @ IN SOA masterdns.yanggy.com. root.yanggy.com. ( 2019011301 ;Serial 3600 ;Refresh 1800 ;Retry 604800 ;Expire 86400 ;Minimum TTL ) @ IN NS masterdns.yanggy.com. @ IN NS slavedns.yanggy.com. @ IN PTR yanggy.com. masterdns IN A 192.168.254.10 slavedns IN A 192.168.254.11 10 IN PTR masterdns.yanggy.com. 11 IN PTR slavedns.yanggy.com. 5.检查配置文件的正确性 named-checkconf /etc/named.conf named-checkzone yanggy.com /var/named/forward.yanggy named-checkzone yanggy.com /var/named/reverse.yanggy 第一条命令如果没错误,什么都不会输出,后面两条命令如果没错误,则输出内容包含OK. 6.启动named服务 systemctl enable named systemctl start named 7.配置相关文件所属用户和组 chgrp named -R /var/named chown -v root:named /etc/named.conf restorecon -rv /var/named restorecon /etc/named.conf 8.安装配置完成,开始测试 dig masterdns.yanggy.com ; <<>> DiG 9.9.4-RedHat-9.9.4-72.el7 <<>> masterdns.yanggy.com ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 65011 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 2 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ;; QUESTION SECTION: ;masterdns.yanggy.com. IN A ;; ANSWER SECTION: masterdns.yanggy.com. 86400 IN A 192.168.254.10 ;; AUTHORITY SECTION: yanggy.com. 86400 IN NS masterdns.yanggy.com. yanggy.com. 86400 IN NS slavedns.yanggy.com. ;; ADDITIONAL SECTION: slavedns.yanggy.com. 86400 IN A 192.168.254.11 ;; Query time: 19 msec ;; SERVER: 127.0.0.11#53(127.0.0.11) ;; WHEN: Mon Jan 14 09:56:22 UTC 2019 ;; MSG SIZE rcvd: 117 退出容器后,将此容器保存为image:dns_image,以后dns_master就用此image docker commit dns_master dns_master 配置DNS Slave服务器 1.进入容器和安装bind。 yum install bind bind-utils -y 2.配置named.conf options { listen-on port 53 { 127.0.0.1; 192.168.254.11;}; listen-on-v6 port 53 { ::1; }; directory "/var/named"; dump-file "/var/named/data/cache_dump.db"; statistics-file "/var/named/data/named_stats.txt"; memstatistics-file "/var/named/data/named_mem_stats.txt"; recursing-file "/var/named/data/named.recursing"; secroots-file "/var/named/data/named.secroots"; allow-query { localhost;192.168.254.0/24;}; .... .... zone "yanggy.com" IN { type slave; file "slaves/yanggy.fwd"; masters {192.168.254.10;}; }; zone "254.168.192.in-addr.arpa" IN { type slave; file "slaves/yanggy.rev"; masters {192.168.254.10;}; }; include "/etc/named.rfc1912.zones"; include "/etc/named.root.key"; 3.启动dns服务 systemctl enable named systemctl start named 4.启动成功后,就会在目录/var/named/slaves/下出现yagnggy.fwd和yanggy.rev,不用手动配置 5.配置相关文件的所属用户和用户组 chgrp named -R /var/named chown -v root:named /etc/named.conf restorecon -rv /var/named restorecon /etc/named.conf 6.配置完后,也可照上面方法测试,看是否正常。 7.退出窗器后,将此容器保存为image:dns_slave,以后dns_slave就用此image |