V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
kuanos
V2EX  ›  Docker

求问 docker compose 生成的服务容器指定的端口被霸占的问题

  •  
  •   kuanos · 193 天前 · 973 次点击
    这是一个创建于 193 天前的主题,其中的信息可能已经有所发展或是发生改变。
    Qnap ,我在这台 nas 上的 container station 上用 docker compose 创建了一个服务,包含 5 个容器以及对应的端口分别为:

    radarr ( 19xx1 )、sonarr ( 19xx2 )、jackett ( 19xx3 )、overseerr ( 19xx4 )、flaresolverr ( 19xx5 ),

    但当我访问 jackett 、overseerr 、flaresolverr 这几个服务时,要求我输入用户名和密码,而我并没有给这几个容器设置用户名和密码。

    当我试着输入了 sonarr 的用户名和密码时,会进入 sonarr 的页面,但端口却是 19xx3 、19xx4 、19xx5 ,

    我看了下 sonarr 的 log ,的确有登录记录:

    [Info] Auth: Auth-Unauthorized ip xxx.xxx.xxx.xx url 'http://xxxx:19xx3'
    [Info] Auth: Auth-Unauthorized ip xxx.xxx.xxx.xx url 'http://xxxx:19xx5'
    [Info] Auth: Auth-Unauthorized ip xxx.xxx.xxx.xx url 'http://xxxx:19xx5'
    [Info] Auth: Auth-Unauthorized ip xxx.xxx.xxx.xx url 'http://xxxx:19xx5'
    [Info] Auth: Auth-Unauthorized ip xxx.xxx.xxx.xx url 'http://xxxx:19xx5'
    [Info] Auth: Auth-Unauthorized ip xxx.xxx.xxx.xx url 'http://xxxx:19xx4'
    [Info] Auth: Auth-Unauthorized ip xxx.xxx.xxx.xx url 'http://xxxx:19xx4'
    [Info] Auth: Auth-Unauthorized ip xxx.xxx.xxx.xx url 'http://xxxx:19xx4'
    [Info] Auth: Auth-Unauthorized ip xxx.xxx.xxx.xx url 'http://xxxx:19xx5'
    [Info] RssSyncService: Starting RSS Sync
    [Warn] FetchAndParseRssService: No available indexers. check your configuration.
    [Info] DownloadDecisionMaker: No results found
    [Info] RssSyncService: RSS Sync Completed. Reports found: 0, Reports grabbed: 0
    [Info] Auth: Auth-Unauthorized ip xxx.xxx.xxx.xx url 'http://xxxx:19xx3'
    [Info] Auth: Auth-Unauthorized ip xxx.xxx.xxx.xx url 'http://xxxx:19xx3'
    [Info] Auth: Auth-Unauthorized ip xxx.xxx.xxx.xx url 'http://xxxx:19xx3'
    [Warn] Auth: Auth-Failure ip xxx.xxx.xxx.xx username 'jackett'
    [Info] Auth: Auth-Unauthorized ip xxx.xxx.xxx.xx url 'http://xxxx:19xx3'
    [Warn] Auth: Auth-Failure ip xxx.xxx.xxx.xx username 'admin'
    [Info] Auth: Auth-Unauthorized ip xxx.xxx.xxx.xx url 'http://xxxx:19xx3'
    [Info] RssSyncService: Starting RSS Sync
    [Warn] FetchAndParseRssService: No available indexers. check your configuration.
    [Info] DownloadDecisionMaker: No results found
    [Info] RssSyncService: RSS Sync Completed. Reports found: 0, Reports grabbed: 0
    [Info] Auth: Auth-Unauthorized ip xxx.xxx.xxx.xx url 'http://xxxx:19xx5'

    我的访问环境:
    远程用域名访问,软路由做旁路由配置 ddns 指向 nas ,nas 端口转发到 docker ,类似于 19xx1>9117 ( radarr );

    为什么为这样呢?
    第 1 条附言  ·  193 天前
    ---
    version: "2.1"
    services:
    radarr:
    image: lscr.io/linuxserver/radarr:latest
    container_name: radarr
    environment:
    - PUID=1000
    - PGID=1000
    - TZ=Etc/UTC
    volumes:
    - /share/Container/radarr/config:/config
    ports:
    - 19xx1:7878
    restart: unless-stopped
    sonarr:
    image: lscr.io/linuxserver/sonarr:latest
    container_name: sonarr
    environment:
    - PUID=1000
    - PGID=1000
    - TZ=Etc/UTC
    volumes:
    - /share/Container/sonarr/config:/config
    ports:
    - 19xx2:8989
    restart: unless-stopped
    jackett:
    image: lscr.io/linuxserver/jackett:latest
    container_name: jackett
    environment:
    - PUID=1000
    - PGID=1000
    - TZ=Etc/UTC
    - AUTO_UPDATE=true #optional
    - RUN_OPTS= #optional
    volumes:
    - /share/Container/jackett/config:/config
    ports:
    - 19xx3:9117
    restart: unless-stopped
    overseerr:
    image: lscr.io/linuxserver/overseerr:latest
    container_name: overseerr
    environment:
    - PUID=1000
    - PGID=1000
    - TZ=Etc/UTC
    volumes:
    - /share/Container/overseerr/config:/config
    ports:
    - 19xx4:5055
    restart: unless-stopped
    flaresolverr:
    # DockerHub mirror flaresolverr/flaresolverr:latest
    image: ghcr.io/flaresolverr/flaresolverr:latest
    container_name: flaresolverr
    environment:
    - LOG_LEVEL=${LOG_LEVEL:-info}
    - LOG_HTML=${LOG_HTML:-false}
    - CAPTCHA_SOLVER=${CAPTCHA_SOLVER:-none}
    - TZ=Europe/London
    ports:
    - 19xx5:8191
    restart: unless-stopped
    第 2 条附言  ·  191 天前
    发现问题所在了。。。在于路由器的端口转发,我设置的区间,如 19xx1-19xx9 ,单独设置就没问题。。不知道为什么,明明指向的都是一个 ip 。
    8 条回复    2023-10-17 20:03:58 +08:00
    dier
        1
    dier  
       193 天前
    你把 docker compose 部署的 yaml 内容贴出来看看
    wu00
        2
    wu00  
       193 天前
    看起来像是 nas 将所有端口都转发到了 19xx1
    跳过转发这一层,直接在宿主机内分别请求 19xx1/2/3/4/5 这几个服务试试
    kuanos
        3
    kuanos  
    OP
       193 天前
    @dier 已经把配置贴在附言;

    @wu00 19xx1 服务的 radarr 正常,从 19xx2 开始,都转到 sonarr 的服务了,我删掉了所有的容器和服务重新弄了一次还是这样。你说的从宿主机直接请求我没太明白怎么弄呢?
    wu00
        4
    wu00  
       193 天前
    你的容器服务都绑定了宿主机端口
    wu00
        5
    wu00  
       193 天前
    - 19xx2:8989
    - 19xx3:9117
    - 19xx5:8191
    你直接在机器上访问这几个服务试试呗,比如:curl 127.0.0.1:8191 ,正常的话应该是你转发出了问题
    比如你把所有访问 yourdomain.com:80 的请求都转发到 xxx.xx..:19xx2 了
    dier
        6
    dier  
       193 天前
    从 yaml 配置来看,这几个服务之前没有任何关联,除非你在配置中有配置互相访问的设置。你有试过不经过 ddns 在同一局域网下用浏览器分别访问 IP:19xx1 IP:19xx2 IP:19xx3 IP:19xx4 IP:19xx5 这几个地址,看能正常访问这些服务吗?另外,你说的通过域名远程访问,你是否映射了所有的服务端口呢?你的域名解析只是解析外网 IP 还是有根据不同的子域名,例如 radarr.domain.com 反向代理到 radarr 端口 ,sonarr.domain.com 反向代理到了 sonarr 服务端口
    Terry166
        7
    Terry166  
       193 天前
    可能是你把访问转发到了其他 network
    docker network ls
    docker inspect <network_name>
    检查下是不是 container 放到了其他的 network ,如果 yaml 里面没有指定 network ,container 会放到默认的 bridge 下
    kuanos
        8
    kuanos  
    OP
       193 天前
    @Terry166
    @wu00
    @dier
    我排除了一下,单独安装 docker 无法通过端口转发访问,发现是 tplink 路由上设置端口转发的问题,因为 tplink 虚拟服务器能设置的数量有限,我就把端口打包映射了:

    外部端口:19xx0-19xx9
    内部端口:19xx0-19xx9
    服务器 ip:192.xxx.xxx.xxx

    用上面这个设置就无法访问,用单独一个接口转发就没问题。
    按说不应该啊。。都是指向同一个主机,为啥到了 nas 上会无法访问呢
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2525 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 32ms · UTC 15:51 · PVG 23:51 · LAX 08:51 · JFK 11:51
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.