docker - 从 docker 容器内部访问 docker 端口

标签 docker gitlab-ci

我在端口 1234 上的 docker 容器内运行了一个服务。
现在我想从同一个 docker 容器中运行这个服务的测试

`docker exec`

但我不能这样做,因为我的测试无法连接到它。
作为服务地址,我使用 docker $HOSTNAME 变量。
docker exec SERVICE_NAME /bin/sh -c "nc -vz $HOSTNAME 1234"

返回

拒绝连接
docker exec SERVICE_NAME /bin/sh -c "netstat -tulpn"

返回空行

我也尝试了 $HOSTNAME 的 0.0.0.0 insead

我已经考虑过从其他容器运行测试,但由于两个原因,这对我来说不是很方便:
1) 为此,我将 gitlab ci 与 docker 一起使用。
2) 我的服务链接到许多其他 docker 服务,如 mongodb、rabbit 等。

谢谢

最佳答案

假设您的问题是“是否可以从容器到主机执行 Docker 调用?”

是的,当然有可能!
与 Docker 守护进程的通信通过套接字进行。默认情况下,此套接字是 unix:///var/run/docker.sock .您的管理器容器只需要访问(和许可)到这个套接字。

并不是说 Docker 守护程序的选项(我正在查看 ou -H, --host )允许通过 TCP 进行通信(甚至是 fd )。

然后你只需要一个 Docker 客户端(任何 Docker API 实现)来进行通信。

关于docker - 从 docker 容器内部访问 docker 端口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35606093/

相关文章:

wordpress - 如何在 docker 上创建多个 wordpress 站点

amazon-s3 - “500 Internal Server Error” 在 minio 上有作业工件

python - 使用 Gitlab CI Runner 从 "cannot import name ' 获取错误 'robot' run_cli'

laravel - 在没有 DOCKER 的 VPS 中使用 gitlab ci 部署 laravel

ruby - 在Docker容器中访问Sinatra应用程序的问题

maven - 如何在 OpenShift3 中通知 S2I 构建的 Maven/JVM 选项

bash - 捕获 docker 信号并停止 bash 中的进程不起作用

ruby-on-rails - Gitlab CI 设置错误 - 找不到 JavaScript 运行时

continuous-integration - Gitlab CI 管道包含模板不起作用( secret 检测)

docker - FFmpeg 流在一定时间后停止