Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/354.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
java.net.InetAddress java类不';t解析Alpine Docker容器上的IP_Java_Mysql_Linux_Docker_Alpine - Fatal编程技术网

java.net.InetAddress java类不';t解析Alpine Docker容器上的IP

java.net.InetAddress java类不';t解析Alpine Docker容器上的IP,java,mysql,linux,docker,alpine,Java,Mysql,Linux,Docker,Alpine,当我在容器内运行下面的代码时,Docker在Alpine Linux上运行Java JDK 8 import java.io.*; import java.util.*; import java.net.*; public class SomaDBTest { public static void main(String... args) throws Throwable { InetAddress ip = InetAddress.getByName("mysql");

当我在容器内运行下面的代码时,Docker在Alpine Linux上运行Java JDK 8

import java.io.*;
import java.util.*;
import java.net.*;

public class SomaDBTest {
  public static void main(String... args) throws Throwable {

    InetAddress ip = InetAddress.getByName("mysql");    
    System.out.println("Begin -  mysql IP Addr = " + ip.getHostAddress());
    . . . 
  }
}
我得到错误信息:

  Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF8
  Exception in thread "main" java.net.UnknownHostException: mysql: unknown error
    at java.net.Inet6AddressImpl.lookupAllHostAddr(Native Method)
    at java.net.InetAddress$2.lookupAllHostAddr(InetAddress.java:928)
    at java.net.InetAddress.getAddressesFromNameService(InetAddress.java:1323)
    at java.net.InetAddress.getAllByName0(InetAddress.java:1276)
    at java.net.InetAddress.getAllByName(InetAddress.java:1192)
    at java.net.InetAddress.getAllByName(InetAddress.java:1126)
    at java.net.InetAddress.getByName(InetAddress.java:1076)
    at SomaDBTest.main(SomaDBTest.java:52)
有什么想法吗

顺便说一下,我可以成功地运行
pingmysql
nslookup
命令

# ping mysql 
PING mysql (172.17.0.2): 56 data bytes
64 bytes from 172.17.0.2: seq=0 ttl=64 time=0.185 ms
64 bytes from 172.17.0.2: seq=1 ttl=64 time=0.283 ms
64 bytes from 172.17.0.2: seq=2 ttl=64 time=0.424 ms

# nslookup mysql
Server:    (null)
Address 1: ::1 localhost
Address 2: 127.0.0.1 localhost

Name:      mysql
Address 1: 172.17.0.2 mysql
我的Dockerfile非常简单:

FROM frolvlad/alpine-oraclejdk8
ADD bin /
WORKDIR /
文件
SomaDBTest.java
SomaDBTest.class
位于
bin
目录中

要运行容器,请执行以下操作:

docker build -t testInetAddress .
docker run -i -t testInetAddress java SomaDBTest

您可以在
Dockerfile
上使用下面的命令来解决此问题

RUN echo 'hosts: files mdns4_minimal [NOTFOUND=return] dns mdns4' >> /etc/nsswitch.conf