我正在 YouTube 上关注有关 Nginx 的教程,当我关注他时,我收到了来自 dns 容器的错误。起初我可以运行 docker-compose build 但 docker-compose up 失败,因为 systemd-resolved 使用端口 53。我能够使用此链接中的说明进行修复。 监听 tcp 0.0.0.0:53: bind: 地址已在使用#65
现在,当我运行 docker-compose up 时它没有失败,但是当我使用命令 nslookup 测试它时,我收到一个错误,比如无法访问服务器。 (仅供参考:我在我的机器上使用 Ubuntu 22.04)。
;;与 127.0.0.53#53 的通信错误:超时 ;;与 127.0.0.53#53 的通信错误:超时 ;;与 127.0.0.53#53 的通信错误:超时 ;;无法访问服务器
dns/zone/main.com
$ttl 86400
@ IN SOA ns.main.com. hostmaster.main.com.(
202 ; Serial
600 ; Refresh
3600 ; Retry
12378237) ; Expire
@ IN NS ns.main.com.
ns IN A 127.0.0.1
dns/Dockerfile
FROM alpine:latest
RUN apk add bind openrc
RUN rc-update -u named
dns/named.conf
options {
directory "var/bind";
allow-transfer { "none"; };
allow-query { any; };
listen-on { any; };
};
zone "main.com" IN {
type master;
file "/etc/bind/zone/main.com";
};
nginx/conf.d/default.conf
server {
listen 80;
server_name ns.main.com;
location / {
root /usr/share/nginx/html/main;
index index.html;
}
}
nginx/Dockerfile
FROM nginx:latest
COPY ./html /usr/share/nginx/html
RUN apt-get update && apt-get install -y procps
docker-compose.yml
services:
nginx:
build:
context: ./nginx/
ports:
- 80:80
volumes:
- ./nginx/html/:/usr/share/nginx/html/
- ./nginx/conf.d/:/etc/nginx/conf.d/
dns:
build:
context: ./dns/
restart: always
ports:
- 53:53
- 53:53/udp
volumes:
- ./dns/named.conf:/etc/bind/named.conf
- ./dns/zone/:/etc/bind/zone/
command: named -c /etc/bind/named.conf -g -u named
希望您能赐教。期待改进。谢谢!
让我们尝试一些事情
尝试1
删除其中一根线(通过设置两次53端口,确认53端口已被使用)
ports:
- 53:53
- 53:53/udp // delete line
尝试2
services:
nginx:
build:
context: ./nginx/
ports:
- 80:80
volumes:
- ./nginx/html/:/usr/share/nginx/html/
- ./nginx/conf.d/:/etc/nginx/conf.d/
dns:
build:
context: ./dns/
restart: always
ports:
- <ANOTHER_PORT>:53 // change <ANOTHER_PORT> with an available port
volumes:
- ./dns/named.conf:/etc/bind/named.conf
- ./dns/zone/:/etc/bind/zone/
command: named -c /etc/bind/named.conf -g -u named