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

wget (or any connection) inside docker can't connect to servers own ip address

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

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

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

我怎样才能让它工作?或者 |是什么导致了这个问题?

我尝试过的事情:

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

我验证过其他机器上也有文件,图像存在并且可以连接。即使 docker 在我自己的容器中的机器上也可以正常访问服务器映像。

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

Docker-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"

好的,我找到答案了!

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

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