![期待](https://linux22.com/image/753753/%E6%9C%9F%E5%BE%85.png)
堆
我正在运行以下命令:
- 金属
- Ubuntu 18.04
- 流浪汉
- dockerprovider
- gitlab dk
- dockerprovider
- 流浪汉
- Ubuntu 18.04
期待
我正在尝试curl localhost:3000
联系 gitlab。
当我从 vagrant box 中执行此操作时,它作品:
vagrant@549f682a30a4:~/gdk$ curl localhost:3000 <html><body>You are being <a href="http://localhost:3000/users/sign_in">redirected</a>.</body></html>vagrant@549f682a30a4:~/gdk$
我还看到了
gdk tail
当我从 ubuntu 执行此操作时,它不起作用:
gdkuser@mymachine:~/gitlab-development-kit$ curl localhost:3000 -v --trace - Warning: --trace overrides an earlier trace/verbose option == Info: Rebuilt URL to: localhost:3000/ == Info: Trying 127.0.0.1... == Info: TCP_NODELAY set == Info: Connected to localhost (127.0.0.1) port 3000 (#0) => Send header, 78 bytes (0x4e) 0000: 47 45 54 20 2f 20 48 54 54 50 2f 31 2e 31 0d 0a GET / HTTP/1.1.. 0010: 48 6f 73 74 3a 20 6c 6f 63 61 6c 68 6f 73 74 3a Host: localhost: 0020: 33 30 30 30 0d 0a 55 73 65 72 2d 41 67 65 6e 74 3000..User-Agent 0030: 3a 20 63 75 72 6c 2f 37 2e 35 38 2e 30 0d 0a 41 : curl/7.58.0..A 0040: 63 63 65 70 74 3a 20 2a 2f 2a 0d 0a 0d 0a ccept: */*.... == Info: Recv failure: Connection reset by peer == Info: stopped the pause stream! == Info: Closing connection 0 curl: (56) Recv failure: Connection reset by peer
我没有看到任何东西
gdk tail
分析/调查
当我看到请求gdk tail
来自 vagrant 内部时会收到,而来自主机时不会收到,我假设请求卡在了某个地方。我不确定请求要经过哪条路线。我尝试了以下方法来了解更多信息:
转发端口
Vagrant文件112行的网络部分
config.vm.network "forwarded_port", guest: 3000, host: 3000, auto_correct: true
主机(Ubuntu):netstat -tulpn | grep 3000
tcp6 0 0 :::3000 :::* LISTEN 6508/docker-proxy
Vagrant:netstat -tulpn | grep 3000
tcp 0 0 127.0.0.1:3000 0.0.0.0:* LISTEN 12387/gitlab-workho
再次,因为内部调用是,但外部调用不在,gdk tail
我假设来自主机的请求永远不会到达 vagrant。
码头工人 0.0.0.0:3000->3000/tcp,因此端口应该被转发,并且请求应该可以在docker中看到
gdkuser@mymachine:~/gitlab-development-kit$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 549f682a30a4 cb5d370c7aaf "/bin/sh -c 'supervi…" About an hour ago Up About an hour 0.0.0.0:3000->3000/tcp, 127.0.0.1:2222->22/tcp gitlab-development-kit_default_1592131487
当连接到 docker 并在 Vagrant 或 Ubuntu 上执行 curl 时,我没有在 docker 容器中的运行信息列表中获得任何信息。
虚拟盒
- 我读过关于 virtualbox 5.2.xx 的问题,因为我运行的是 virtualbox 6.1.10,我认为这不适用于此。不过,我不知道如何验证 virtualbox 是否确实转发了端口。
我也不太确定 VirtualBox 是否转发到 Docker,反之亦然。
- 我读过关于 virtualbox 5.2.xx 的问题,因为我运行的是 virtualbox 6.1.10,我认为这不适用于此。不过,我不知道如何验证 virtualbox 是否确实转发了端口。
您是否知道如何继续找出问题所在?非常感谢!
答案1
关注此问题https://gitlab.com/gitlab-org/gitlab-development-kit/-/issues/545
在容器上运行此命令:
sudo apt install net-tools redir
export EXTIF=`ifconfig eth0 | grep "inet " | awk -F'[: ]+' '{ print $3 }'`
redir $EXTIF:3000 127.0.0.1:3000