无法在docker-compose

问题描述

在这里是新的,还有我的Raspi 3 ^^

我试图让Pihole在Docker-compose中运行,但是每次我想启动它时都会收到此错误消息。

ERROR: for pihole Cannot start service pihole: driver Failed programming external connectivity on endpoint pihole (995a633f1e1fa2e0ec3ebde4065ee7c6ab5dc82452adf2ffcf10d3113295a369): Error starting userland proxy: listen tcp 0.0.0.0:80: bind: address already in use

ERROR: for pihole Cannot start service pihole: driver Failed programming external connectivity on endpoint pihole (995a633f1e1fa2e0ec3ebde4065ee7c6ab5dc82452adf2ffcf10d3113295a369): Error starting userland proxy: listen tcp 0.0.0.0:80: bind: address already in use


我的配置


这是我的 docker-compose.yml 配置,就像在github上

        version: "3"
    
    services:
      pihole:
        container_name: pihole
        image: pihole/pihole:latest
        ports:
          - "53:53/tcp"
          - "53:53/udp"
          - "67:67/udp"
          - "80:80/tcp"
          - "443:443/tcp"
          - 8080:80
        environment:
          TZ: 'Europe/Berlin'
          WEBPASSWORD: 'myPassword'
        # Volumes store your data between container upgrades
        volumes:
          - './etc-pihole/:/etc/pihole/'
          - './etc-dnsmasq.d/:/etc/dnsmasq.d/'
        # Recommended but not required (DHCP needs NET_ADMIN)
        #   https://github.com/pi-hole/docker-pi-hole#note-on-capabilities
        cap_add:
          - NET_ADMIN
        restart: unless-stopped

我的疑难解答


当我运行sudo lsof -iTCP -sTCP:LISTEN -P -n +c 10时,我明白了:

COMMAND      PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
sshd         543 root    3u  IPv4  18484      0t0  TCP *:22 (LISTEN)
sshd         543 root    4u  IPv6  18486      0t0  TCP *:22 (LISTEN)
xrdp-sesma   592 root    7u  IPv6  18529      0t0  TCP [::1]:3350 (LISTEN)
xrdp         603 xrdp   11u  IPv6  18545      0t0  TCP *:3389 (LISTEN)
docker-pro  2877 root    4u  IPv6  25751      0t0  TCP *:4357 (LISTEN)
docker-pro  7386 root    4u  IPv6  36076      0t0  TCP *:8884 (LISTEN)
docker-pro  7400 root    4u  IPv6  34359      0t0  TCP *:8883 (LISTEN)
docker-pro  7415 root    4u  IPv6  36124      0t0  TCP *:1884 (LISTEN)
docker-pro  7428 root    4u  IPv6  35103      0t0  TCP *:1883 (LISTEN)
docker-pro  9507 root    4u  IPv6  42104      0t0  TCP *:9050 (LISTEN)
spotifyd   10195 root   18u  IPv4  43347      0t0  TCP *:46551 (LISTEN)
python3    11346 root   17u  IPv4  48294      0t0  TCP *:8123 (LISTEN)
ttyd       11498 root   12u  IPv4  48157      0t0  TCP 172.30.32.1:62369 (LISTEN)
sshd       11499 root    3u  IPv4  48140      0t0  TCP *:222 (LISTEN)
sshd       11499 root    4u  IPv6  48141      0t0  TCP *:222 (LISTEN)
httpd      13801 root    4u  IPv6  53868      0t0  TCP *:80 (LISTEN)
httpd      13801 root    6u  IPv6  53872      0t0  TCP *:443 (LISTEN)
httpd      13802 root    4u  IPv6  53868      0t0  TCP *:80 (LISTEN)
httpd      13802 root    6u  IPv6  53872      0t0  TCP *:443 (LISTEN)
httpd      13803 root    4u  IPv6  53868      0t0  TCP *:80 (LISTEN)
httpd      13803 root    6u  IPv6  53872      0t0  TCP *:443 (LISTEN)
httpd      13804 root    4u  IPv6  53868      0t0  TCP *:80 (LISTEN)
httpd      13804 root    6u  IPv6  53872      0t0  TCP *:443 (LISTEN)
httpd      13907 root    4u  IPv6  53868      0t0  TCP *:80 (LISTEN)
httpd      13907 root    6u  IPv6  53872      0t0  TCP *:443 (LISTEN)

我试图停止systemd解析的服务,但是我在shell中没有得到任何答案 我已经使用了以下命令:

sudo systemctl disable systemd-resolved
sudo systemctl stop systemd-resolved 

我用以下命令删除了resolv配置: rm /etc/resolv.conf

并使用以下命令重新创建它: nano /etc/resolv.conf

nameserver 127.0.0.1
nameserver 1.1.1.1
nameserver 222.222

我用crtl+x保存了该文件,并通过sudo reboot重新启动了整个系统

尝试通过以下方式开始打孔: docker-compose -f /opt/containers/pi-hole/docker-compose.yml up -d

我遇到了与我的请求上部相同的问题。

我该如何解决
感谢您的帮助!

解决方法

祝您好运。 对不起,但我可能会误会,但Docker默认在单独的网络(称为docker网桥网络)中运行,这使DHCP希望为该网络而不是您可能需要的LAN网络提供地址。 我可以建议您查看这份文档,因为我认为它可以帮助您前进。

https://docs.pi-hole.net/docker/DHCP/

,

您已将pihole配置为侦听主机上的端口80,该端口已映射到容器中的端口80:

- "80:80/tcp"

您还有一个httpd服务器在端口80上监听:

httpd      13801 root    4u  IPv6  53868      0t0  TCP *:80 (LISTEN)

因此,错误表明端口80正在使用:

Error starting userland proxy: listen tcp 0.0.0.0:80: bind: address already in use

要解决此问题,请将pihole配置为映射其他端口(您已经设置了8080端口,但保留了80端口的映射),或者停止了httpd。