无法使用docker-compose连接到容器

时间:2016-11-09 13:47:24

标签: docker docker-compose

我在OSX上使用docker 1.12和docker-compose 1.12。

我创建了一个docker-compose.yml文件,它运行两个容器:

  • 第一个名为spark的构建并运行sparkjava应用程序
  • 第二个名为behave,对第一个容器公开的API运行一些功能测试。

    #!/bin/bash
    
    # This scripts waits for the API server to be ready before running functional tests with Behave
    # the parameter should be the hostname for the spark server
    set -e
    
    host="$1"
    echo "runtests host is $host"
    
    until curl -L "http://$host"; do
      >&2 echo "Spark server is not ready - sleeping"
      sleep 5
    done
    
    >&2 echo "Spark server is up - starting tests"
    behave
    ```
    

作为recommended by Docker Compose documentation,我使用一个简单的shell脚本来测试spark服务器是否准备就绪。此脚本名称为runtest.sh,并运行到名为“behave”的容器中。它由docker-compose发起(见上文):

links: -spark:myserver

DNS解析似乎不起作用。 curl向spark.com发出请求,而不是向我的名为“spark”的容器发出请求。

更新

通过为我的链接(Recreating spark Recreating behave Attaching to spark, behave behave | runtests host is myserver:9000 behave | % Total % Received % Xferd Average Speed Time Time Time Current behave | Dload Upload Total Spent Left Speed 100 672 100 672 0 0 348 0 0:00:01 0:00:01 --:--:-- 348 behave | <HTML><HEAD> behave | <TITLE>Network Error</TITLE> behave | </HEAD> behave | <BODY> behave | ... behave | <big>Network Error (dns_unresolved_hostname)</big> behave | Your requested host "myserver" could not be resolved by DNS. behave | ... behave | </BODY></HTML> behave | Spark server is up - starting tests )设置别名,我看到Docker没有完成DNS解析:我收到了来自公司网络设备的错误消息(我是从后面运行的企业代理,使用Docker for Mac)。以下是输出摘录:

{{1}}

1 个答案:

答案 0 :(得分:0)

为了解决这个问题,我为我想要加入的容器的名称添加了一个环境变量no_proxy

在容器行为的dockerfile中,我有:

ENV http_proxy=http://proxy.mycompany.com:8080
ENV https_proxy=http://proxy.mycompany.com:8080
ENV no_proxy=127.0.0.1,localhost,spark