要在 Docker 容器中获取宿主机的 IP 地址,有几种方法可以实现。以下是其中一些常用的方式,每种方式都包括详细的步骤和示例代码:
InetAddress 类
您不需要添加任何第三方库,因为 InetAddress 是 Java 的标准库之一。import java.net.InetAddress;
import java.net.UnknownHostException;
public class HostIP {
    public static void main(String[] args) {
        try {
            InetAddress host = InetAddress.getLocalHost();
            String hostIP = host.getHostAddress();
            System.out.println("宿主机的IP地址是: " + hostIP);
        } catch (UnknownHostException e) {
            e.printStackTrace();
        }
    }
}
在 Docker 容器中,Docker 提供了一些环境变量,可以直接访问宿主机的 IP 地址。常用的环境变量包括 DOCKER_HOST 和 DOCKER_GWBRIDGE。
public class HostIP {
    public static void main(String[] args) {
        String dockerHostIP = System.getenv("DOCKER_HOST");
        String dockerGwBridgeIP = System.getenv("DOCKER_GWBRIDGE");
        System.out.println("DOCKER_HOST IP地址是: " + dockerHostIP);
        System.out.println("DOCKER_GWBRIDGE IP地址是: " + dockerGwBridgeIP);
    }
}
如果您想要更高级的 Docker 操作,并且需要使用第三方库来获取宿主机 IP,可以使用 docker-java 库。
添加 docker-java 库的依赖(Maven 和 Gradle 示例):
Maven 依赖:
<dependency>
    <groupId>com.github.docker-java</groupId>
    <artifactId>docker-java</artifactId>
    <version>3.2.7</version> <!-- 请根据最新版本更新 -->
</dependency>
Gradle 依赖:
implementation 'com.github.docker-java:docker-java:3.2.7' // 请根据最新版本更新
编写 Java 代码来获取宿主机的 IP 地址。
import com.github.dockerjava.api.DockerClient;
import com.github.dockerjava.core.DockerClientBuilder;
import com.github.dockerjava.core.DefaultDockerClientConfig;
public class HostIP {
    public static void main(String[] args) {
        DefaultDockerClientConfig config = DefaultDockerClientConfig.createDefaultConfigBuilder().build();
        DockerClient dockerClient = DockerClientBuilder.getInstance(config).build();
        String hostIP = dockerClient.infoCmd().exec().getArchitecture();
        System.out.println("宿主机的IP地址是: " + hostIP);
    }
}
这些方法可以让您在 Docker 容器中获取宿主机的 IP 地址,您可以根据您的需求选择其中一种方法。使用 Java 内置的 InetAddress 类是最简单的方式,但如果您需要更多 Docker 相关的信息,可以考虑使用 docker-java 库。