更易于使用docker-compose

更易于使用docker-compose

为了在 Ubuntu 22.04.3 LTS 上的容器中使用 pi-hole,我首先下载

docker pull pihole/pihole

然后我释放一些端口

sudo systemctl disable systemd-resolved.service && sudo systemctl stop systemd-resolved.service

然后运行它,

docker run -d --name pihole-cont -it -p 53:53/tcp -p 53:53/udp -p 67:67/udp -p 80:80 -p 443:443 -v "${DOCKER_CONFIGS}/dnsmasq.d/:/etc/dnsmasq.d/" -e ServerIP=[my IP address] --restart=unless-stopped --cap-add=NET_ADMIN --dns=127.0.0.1 --dns=1.1.1.1 pihole/pihole:latest"

当我打开浏览器并输入

http://[docker's IP address]/admin

我确实进入了 pi-hole 登录页面,尽管我不知道密码(我猜这是正常的),但连接却无法使用。无法浏览互联网,网站确实开始加载,但需要很长时间,视频至少要五分钟才能开始播放,这是我的耐心极限。我也在虚拟机中成功安装了 pi-hole,结果相同。我认为问题可能是一个永无止境的循环:我的电脑发出请求,它经过 DNS 服务器,DNS 服务器在我的 PC 上虚拟化,因此它向我的 PC 发出请求,依此类推,即使它们有不同的 IP。这很相似,不同的 IP,无法使用互联网。

我的猜测是对是错?我做错了什么吗?包容化pi-hole 是否可以真正访问互联网?

先感谢您

编辑:因此,删除--dns=127.0.0.1会产生警告

WARNING: Localhost DNS setting (--dns=127.0.0.1) may fail in containers

消失。但是,简单地禁用systemd-resolved.service互联网无论如何都会中断。如果我再次docker stop [pi-hole ID]启用,互联网仍然中断systemd-resolved.service。后者会发出端口冲突警告。为了恢复我的互联网连接,我清除了所有图像和容器

docker system prune -a -f --volumes

(非常激烈但很快),重新启动systemd-resolved.service,我终于可以编辑这个问题了。

因此问题似乎是我禁用了systemd-resolved.service与容器存在端口冲突的端口。我该如何修复?

再次感谢你

答案1

更易于使用docker-compose

Docker-compose 允许您将所有参数保存在一个文件中,并以普通用户身份运行容器(不是root,不需要sudo)。

确保已安装 docker-compose:

sudo apt install docker-compose-plugin

创建一个用于存放配置文件的文件夹:

mkdir /home/$USER/pi-hole
cd /home/$USER/pi-hole

注意,$USER将被替换为您的用户名。

然后创建docker-compose.yml文件:

nano docker-compose.yml

文件内容如下:

version: "3"
services:
  pihole:
    container_name: pihole
    image: pihole/pihole:latest
      hostname: pi-hole
    ports:
    - "53:53/tcp"
    - "53:53/udp"
    - "67:67/udp"
    - "80:80/tcp"
    - "443:443/tcp"
    environment:
    # Change the Time Zone to your area
    TZ: ‘America/New_York'
    # Change the password to suit your needs
    WEBPASSWORD: SecretPassword
    # Volumes store your data between container upgrades
    volumes:
    - './etc-pihole/:/etc/pihole/'
    - './etc-dnsmasq.d/:/etc/dnsmasq.d/'
    cap_add:
    - NET_ADMIN
    restart: unless-stopped

确保你更改时区和密码上面的文本可满足您的需求。hostname: pi-hole上面的行决定了您在 Pihole Web 门户中看到的内容。如果您在不同的计算机上有两个或更多个 Piholes docker 映像实例,则在相应的文件中对它们进行不同的命名是有意义的docker-compose.yml

按+ ,然后按Ctrl+保存并退出编辑器。SCtrlX

禁用并停止 systemd-resolved 服务。您似乎已经这样做了。我将其保留给其他人:

sudo systemctl disable systemd-resolved.service
sudo systemctl stop systemd-resolved.service

取消链接并编辑resolv.conf

sudo unlink /etc/resolv.conf
sudo nano /etc/resolv.conf

#当文件在 nano 编辑器中打开时,确保以下行前面被注释掉:

#nameserver 127.0.0.53

按+ ,然后按Ctrl+保存并退出编辑器。SCtrlX

在启动 Pi-hole 之前测试 DNS 是否正常工作:

ping -c4 google.com

如果有效,请使用以下命令启动 pi-hole:

docker compose up -d

这将启动 docker 作为守护进程(选项-d)并从您上面创建的容器中获取配置docker-compose.yml

如果一切顺利,您应该能够通过以下方式打开 Pihole 网络门户:

http://[Your Ubuntu-Pihole computer's IP address]/admin/login.php

在您最喜欢的 Web 浏览器(例如 Firefox)上。然后,您可以在其设置中设置 Pihole 使用的 DNS 服务器

在此处输入图片描述

希望这可以帮助

相关内容