docker - 无法到达 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 中没有像安全组这样的额外防火墙。
有没有人有类似的问题,或者可能知道我可以在哪里更深入地挖掘?
解决方案
好的,我解决了,也许我可以帮助其他人:
我的一个朋友在/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
,它起作用了。
推荐阅读
- javascript - 为什么 puppeteer 在截屏时无法正确呈现此页面?
- cucumberjs - 如何跳过 Cucumberjs 中的所有剩余场景
- html - 改变
属性 'd' 不使用 getElementBy... 反模式 - midi - 如何使用 C++/winrt 声明 Midi 输入处理程序?
- kubernetes - Kubernetes,暴露所有端口
- r - 如何在 R 中手动创建 x 轴上有两个类别的箱线图
- c++ - 指向对象生命周期之外分配内存的指针是“无效指针[s]”还是“指向对象的指针[s]”?
- linux - 管道长标准输出到 tee 命令有时会导致截断
- c# - 是否有一种更有效的方法来进行测验并根据答案是否大部分为是/否而产生两种不同的结果?
- r - 如何从向量列表中的每个字符串向量中选择最长的字符串?