AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / ubuntu / 问题 / 1497507
Accepted
SO_32
SO_32
Asked: 2023-12-19 17:21:00 +0800 CST2023-12-19 17:21:00 +0800 CST 2023-12-19 17:21:00 +0800 CST

ubuntu 上的 Dockerized pi-hole 导致连接无法使用,这是预期的吗?

  • 772

为了在 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 服务器在我的电脑上虚拟化,因此它向我的电脑发出请求,依此类推,即使它们有不同的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与容器有端口冲突的。我该如何解决?

再次感谢你

virtualization
  • 1 1 个回答
  • 146 Views

1 个回答

  • Voted
  1. Best Answer
    user68186
    2023-12-21T03:22:28+08:002023-12-21T03:22:28+08:00

    使用起来更方便docker-compose

    Docker-compose 允许您将所有参数保存在一个文件中并以普通用户身份运行容器(而不是 as 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 门户网站中看到的内容。如果您在不同的计算机上有两个或多个 Piholes docker 映像实例,则在各自的文件中对它们进行不同的命名是有意义的docker-compose.yml。

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

    禁用并停止 systemd 解析的服务。你似乎已经做到了这一点。我为其他人保留这个:

    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 编辑器中打开时,请确保以下行前面带有 a 被注释掉#:

    #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
    

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

    在此输入图像描述

    希望这可以帮助

    • 2

相关问题

  • 运行虚拟机和 Ubuntu EC2 云有什么区别?

  • 什么原因会阻止“virsh -c qemu:///system console guest1”的控制台输出?

  • 如何在 Windows 7 中运行 Ubuntu?

  • 哪个更好:Win7 主机运行 VMware 和 Ubuntu 来宾,反之亦然?

  • 如何在 Ubuntu 中运行 Windows XP

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何运行 .sh 脚本?

    • 16 个回答
  • Marko Smith

    如何安装 .tar.gz(或 .tar.bz2)文件?

    • 14 个回答
  • Marko Smith

    如何列出所有已安装的软件包

    • 24 个回答
  • Marko Smith

    无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗?

    • 25 个回答
  • Martin Hope
    Flimm 如何在没有 sudo 的情况下使用 docker? 2014-06-07 00:17:43 +0800 CST
  • Martin Hope
    Ivan 如何列出所有已安装的软件包 2010-12-17 18:08:49 +0800 CST
  • Martin Hope
    La Ode Adam Saputra 无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗? 2010-11-30 18:12:48 +0800 CST
  • Martin Hope
    David Barry 如何从命令行确定目录(文件夹)的总大小? 2010-08-06 10:20:23 +0800 CST
  • Martin Hope
    jfoucher “以下软件包已被保留:”为什么以及如何解决? 2010-08-01 13:59:22 +0800 CST
  • Martin Hope
    David Ashford 如何删除 PPA? 2010-07-30 01:09:42 +0800 CST

热门标签

10.10 10.04 gnome networking server command-line package-management software-recommendation sound xorg

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve