【问题标题】:docker in docker localhost networking issuedocker localhost 网络问题中的 docker
【发布时间】:2019-04-08 23:44:26
【问题描述】:

我有一个案例,我想在 docker-compose up -d 上进行快速健康检查,我可以成功地 curl 由撰写文件创建的端点。

这是我文件的相关部分的样子:

compose:
    stage: compose
    image: tmaier/docker-compose:latest
    services:
      - docker:dind
    before_script:
      - apk update
      - apk add -y curl
      - docker info
      - docker-compose --version
      - echo $CI_JOB_TOKEN | docker login -u gitlab-ci-token --password-stdin registry.gitlab.com
    script:
      - cd docker/compose/
      - docker-compose run --use-aliases -d nginx
      - cat /etc/hosts
      - curl --fail http://localhost

我尝试过所有类型的东西,例如http://dockerhosthttp://dockerhttp://nginx--use-aliases-p 80:80docker-compose run -d nginxcurl --fail http://localhost 在我的电脑上运行良好,只是在这里无法运行,这里还有一些输出可以帮助你。

$ cat /etc/hosts
127.0.0.1   localhost
::1 localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
172.17.0.3  docker fe41d99555a4 runner-0277ea0f-project-8964623-concurrent-0-docker-0
172.17.0.4  runner-0277ea0f-project-8964623-concurrent-0
$ curl --fail http://localhost
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed

  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
curl: (7) Failed to connect to localhost port 80: Connection refused

这一切都在本地工作,但似乎在 gitlab-ci 中不起作用。交叉发自https://github.com/tmaier/docker-compose/issues/14

根据评论者的要求,这里有一些额外的调试信息:

$ docker-compose port nginx 80
0.0.0.0:80

$ docker-compose port django 8000
0.0.0.0:8000

$ docker ps
$ docker ps
CONTAINER ID        IMAGE                                                                                           COMMAND                  CREATED             STATUS                            PORTS                                      NAMES
ea9c0d0f8aba        celery_worker                                           "/start_celery.sh -d…"   4 seconds ago       Up 1 second                                                                  compose_celery-beat_1_3cc1424b6246
6f5adc306f08        celery_beat                                         "/start_celery.sh -d…"   4 seconds ago       Up 1 second                                                                  compose_celery-worker_1_82f9d734734b
4d8d18ee0aa0        nginx                                               "nginx -g 'daemon of…"   4 seconds ago       Up 1 second                       0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp   compose_nginx_1_d6a895d7ea5a
0e3f43da2694        django                                              "/start.sh -docker"      4 seconds ago       Up 3 seconds                      0.0.0.0:8000->8000/tcp                     compose_django_1_c7d04b2e58cb
260a04a50134        redis:3.0-alpine                                        "docker-entrypoint.s…"   5 seconds ago       Up 4 seconds                      0.0.0.0:6379->6379/tcp                     compose_redis_1_d6cf5f09d98a
49097614e743        postgres:10-alpine                                      "docker-entrypoint.s…"   5 seconds ago       Up 4 seconds (health: starting)   5432/tcp                                   compose_hoarder-datastore_1_a7db557d6f4c  

【问题讨论】:

  • $ docker ps$ docker-compose port 和/或$ docker port 的输出是什么?您是否公开了docker-compose.yml 中的端口?
  • 在那里添加了东西。希望它不会太难看,我编辑了一些东西。
  • 我在docker-compose .yml中暴露了80端口和8000端口。分别使用端口:“8000:8000”和端口“80:80”。我也有 nginx 上游请求 8000 -> 80。

标签: docker docker-compose gitlab-ci docker-in-docker


【解决方案1】:

我相信你确实有竞争条件。当容器还没有准备好时,http 请求发送得太快了。

https://gitlab.com/gitlab-com/support-forum/issues/748#note_12330190查看类似案例

所以请在卷曲前加上“sleep 60”

【讨论】:

  • 我一直睡眠 10 到睡眠 180。我也做了睡眠,直到 docker inspect .State.Status 从开始变为健康。我什至做了几次指数后退的卷曲,持续了 5 分钟,但没有奏效。不过我会再试一次。
【解决方案2】:

您应该使用http://docker,而不是引用http://localhost

【讨论】:

    猜你喜欢
    • 2019-11-14
    • 2019-03-10
    • 1970-01-01
    • 2022-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多