docker内的wget(或任何连接)无法连接到服务器自己的IP地址

时间:2017-04-16 04:52:51

标签: docker ubuntu-14.04 docker-compose wget

我正在尝试在docker容器中使用wget连接到我的服务器自己的IP地址以下载图像但它当前超时并且从未连接。

enter image description here

如果我使用localhost作为我的图像的地址,那么我可以访问该图像,但是,我的设置有两个网站(一个用于开发,一个用于实时)。 localhost只能映射到其中一个实例,因此我只能访问livesite(因为默认情况下也会映射到localhost)。

enter image description here

因此我需要一种方法来实际连接到我自己的服务器的IP地址(或者更好地使用我的实际域名,这些域名将通过apahce路由到正确的文件夹,因为连接到我的网站也不能正常工作自己的IP地址在容器内不起作用。)

我怎样才能让它发挥作用?或者|可能导致此问题的原因是什么?

我尝试过的事情:

连接到主机,它可以与自己的IP地址通信就好了。它从容器内部似乎无法做到这一点? (请注意,当我执行命令时,我直接在容器上执行此操作而不是主机)

我验证的文件也来自其他机器并且图像存在并且可以连接到。甚至我自己的机器上的docker也可以在自己的容器中访问服务器图像。

这使我得出结论,如果容器指向主机本身的IP地址,那么它将在超时时失败。

多克尔-Compose.yml

version: "2"
services:
    dblive:
        image: mysql:5.5.52
        volumes:
            - ./db_data_live:/var/lib/mysql
        restart: always
        environment:
            MYSQL_ROOT_PASSWORD: ******
            MYSQL_DATABASE: ******
            MYSQL_USER: ******
            MYSQL_PASSWORD: ******

    dbdev:
        image: mysql:5.5.52
        volumes:
            - ./db_data_dev:/var/lib/mysql
        restart: always
        environment:
            MYSQL_ROOT_PASSWORD: ********
            MYSQL_DATABASE: ******
            MYSQL_USER: *****
            MYSQL_PASSWORD: ******

    phpmyadmin:
        depends_on:
            - dblive
            - dbdev
        image: phpmyadmin/phpmyadmin
        environment:
            PMA_ARBITRARY : 1
        restart: always
        ports:
            - "8081:80"

    web:
        #build: ./
        depends_on:
            - dblive
            - dbdev
        image: poolservice/distribution:latest
        volumes:
            - ./web:/var/www
            - ./config/custom.php.ini:/etc/php5/apache2/conf.d/custom.php.ini
            - ./logs/apache_error.log:/var/log/apache2/error.log
            - ./logs/apache_access.log:/var/log/apache2/access.log
            - ./config/apache_default.conf:/etc/apache2/sites-available/000-default.conf
            - ./config/apache_default-ssl.conf:/etc/apache2/sites-available/default-ssl.conf
            - ./config/ssl/apache.key:/etc/apache2/ssl/apache.key
            - ./config/ssl/apache.crt:/etc/apache2/ssl/apache.crt
            - ./web/public_html/livesite:/app
            - ./web/public_html/devsite:/appdev
        restart: always
        ports: 
            #Standard HTTP Port
            - "80:80"
            #Below allows access to local computer from outside ports
            - "8080:80"
            #SSH Port
            - "443:443"
            #Below allows access to local computer from outside ports
            - "4443:443"

1 个答案:

答案 0 :(得分:0)

好的,我找到了答案!

在docker-compose文件中,我为我的域名添加了这些命令以访问localhost。

extra_hosts:
            - "domain.com:127.0.0.1"
            - "dev.domain.tech:127.0.0.1"