1 回答
TA贡献1831条经验 获得超10个赞
在本地机器上运行容器和在 GitLab 中运行它们之间的重要区别之一docker:dind是容器在“本地主机”上不可用——它们在docker:dind容器上可用。
如果你想与这个容器交谈,在你的场景中,postgres 容器将可用docker:5432(是你的 postgres 容器具有其端口映射docker的容器的主机名)。docker:dind
用简单的 HTTP 服务容器说明
作为一个简化的示例,如果您要strm/helloworld-http使用端口映射在本地运行容器,则以下工作:
docker run -d --rm -p 80:80 strm/helloworld-http
# give it some time to startup
curl http://localhost # this works
但是,GitLab 中的相同设置不会:
myjob:
variables: # these variables are not necessarily required
DOCKER_TLS_CERTDIR: ""
DOCKER_HOST: "tcp://docker:2375"
services:
- docker:dind
script:
- docker run -d --rm -p 80:80 strm/helloworld-http
- sleep 10
- curl http://localhost # Fails!
一种解决方法是改用docker主机名:
script:
- docker run -d --rm -p 80:80 strm/helloworld-http
- sleep 10
- curl http://docker # works!
- 1 回答
- 0 关注
- 116 浏览
添加回答
举报