Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Docker Compose在容器中设置Linux Docker主机IP地址';s/etc/hosts_Linux_Docker_Ubuntu_Networking_Docker Compose - Fatal编程技术网

Docker Compose在容器中设置Linux Docker主机IP地址';s/etc/hosts

Docker Compose在容器中设置Linux Docker主机IP地址';s/etc/hosts,linux,docker,ubuntu,networking,docker-compose,Linux,Docker,Ubuntu,Networking,Docker Compose,在使用Docker Compose时,当主机运行Linux时,如何在Docker容器的/etc/hosts文件中确定和设置Docker主机的IP地址?我希望容器中有一个主机名,如DOCKER\u HOST,以引用DOCKER主机 与Docker for Windows和Docker for Mac不同,Docker for Linux尚不支持主机.Docker.internal,因此我们需要一种替代方案 --此处不能使用网络主机,因为出于我的目的,容器中的本地主机仍必须引用容器本身 Docker

在使用Docker Compose时,当主机运行Linux时,如何在Docker容器的
/etc/hosts
文件中确定和设置Docker主机的IP地址?我希望容器中有一个主机名,如
DOCKER\u HOST
,以引用DOCKER主机

与Docker for Windows和Docker for Mac不同,Docker for Linux尚不支持主机.Docker.internal,因此我们需要一种替代方案

--此处不能使用网络主机
,因为出于我的目的,容器中的
本地主机
仍必须引用容器本身

Docker Compose支持使用
extra_hosts
/etc/hosts
中添加主机名ip映射,但我无法确定如何自动确定要使用的主机ip地址

version: '3'
services:
    api:
        build: .
        ports:
            - "8080:8080"
        extra_hosts:
            - "DOCKER_HOST:X.X.X.X"   # <=== How do we automatically set this IP address?
或者我们可以在Docker compose.yml中为Docker主机设置静态IP吗?

您可以尝试:

DOCKER_HOST=$(python -c 'import socket;print(socket.gethostbyname(socket.gethostname()))') docker-compose up -d

这回答了你的问题吗@RajSrujanJalem认为我需要到docker主机而不是容器的静态IP您可以使用
-e
选项传递环境变量,或者您希望使用命令获取主机IP?@Philippe命令获取主机IP在这里非常有用
DOCKER_HOST=$(python -c 'import socket;print(socket.gethostbyname(socket.gethostname()))') docker-compose up -d