首页 > 解决方案 > 无法到达 gitlab ssh 的 docker 容器端口

问题描述

我已经使用 gitlab ce docker 容器设置了一个 gitlab 服务器。这是我的 docker-compose.yml

version: "3.7"
services:
  web:
    image: 'gitlab/gitlab-ee:latest'
    restart: always
    hostname: '<URL>'
    environment:
      GITLAB_OMNIBUS_CONFIG: |
        external_url '<URL>'
        nginx['listen_port'] = 80
        nginx['listen_https'] = false
        gitlab_rails['gitlab_shell_ssh_port'] = 2224
    ports:
      - '8929:80'
      - '2224:22'
    volumes:
      - '/var/www/gitlab/config:/etc/gitlab'
      - '/var/www/gitlab/logs:/var/log/gitlab'
      - '/var/www/gitlab/data:/var/opt/gitlab'

网络统计-tnlp | grep 2224:

tcp6       0      0 :::2224                 :::*                    LISTEN      32627/docker-proxy

我可以ssh git@localhost -p 2224从 docker 主机访问容器,但不能从公共 IP 地址上的 Internet 访问。

我向 ufw 添加了一条规则,并尝试禁用它,但没有帮助。端口的 nginx 代理可以8929正常工作。只是 ssh 克隆和连接通常不起作用。

我运行的是 Ubuntu 18.04,并且 AWS 中没有像安全组这样的额外防火墙。

有没有人有类似的问题,或者可能知道我可以在哪里更深入地挖掘?

标签: dockernetworkinggitlab

解决方案


好的,我解决了,也许我可以帮助其他人:

我的一个朋友在/etc/ufw/after.rules https://github.com/chaifeng/ufw-docker中配置了这个解决方法

我们之前也禁用了 ufw 中的 22 端口,因为我们更改了主机上的 ssh 端口。

这导致 docker-proxy 的端口 22 也被阻塞,并且打开端口 2224 并没有解决任何问题。

当我使用它时ufw route allow proto tcp from any to any port 22 ,它起作用了。


推荐阅读