title: Docker container crashes on start: java.net.NoRouteToHostException: No route to host
body: <p>In recent days, my Docker container (SonarQube) crashes a couple seconds after being started. It seems that it cannot connect the database container anymore. How can I reconnect them together?</p>
  
  <p>MySQL container <code>run</code> command:</p>
  
  <pre><code>docker run -d --name mysql-sonarqube-container \
  -e MYSQL_ROOT_PASSWORD=root \
  -p 3307:3306 \
  -v /etc/mysql:/etc/mysql/conf.d \
  mysql:latest
  </code></pre>
  
  <p>MySQL user creation:</p>
  
  <pre><code>use sonar;
  CREATE USER 'sonar'@'DOCKER_BRIDGE_IP_ADDRESS' IDENTIFIED BY 'sonar';
  GRANT ALL PRIVILEGES ON *.* TO 'sonar'@'DOCKER_BRIDGE_IP_ADDRESS' WITH GRANT OPTION;
  </code></pre>
  
  <p>SonarQube container <code>run</code> command:</p>
  
  <pre><code>docker run -d --name sonarqube-container \
  --link mysql-sonarqube-container:mysql \
  -p 9000:9000 -p 9092:9092 \
  -e SONARQUBE_JDBC_USERNAME=sonar \
  -e SONARQUBE_JDBC_PASSWORD=sonar \
  -e SONARQUBE_JDBC_URL="jdbc:mysql://SERVER_IP_ADDRESS:3307/sonar?useUnicode=true&amp;characterEncoding=utf8&amp;rewriteBatchedStatements=true" \
  -e SONARQUBE_HOST_URL="http://DOCKER_BRIDGE_IP_ADDRESS:9000" \
  sonarqube:latest
  </code></pre>
  
  <p>And here are the Docker logs:</p>
  
  <pre><code>15:31:25.022 [main] WARN  org.sonar.application.JdbcSettings - JDBC URL is recommended to have the property 'useConfigs=maxPerformance'
  2016.12.05 15:31:25 INFO  app[][o.s.a.AppFileSystem] Cleaning or creating temp directory /opt/sonarqube/temp
  2016.12.05 15:31:25 INFO  app[][o.s.p.m.JavaProcessLauncher] Launch process[es]: /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java -Djava.awt.headless=true -Xmx1G -Xms256m -Xss256k -Djna.nosys=true -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSInitiatingOccupancyOnly -XX:+HeapDumpOnOutOfMemoryError -Djava.io.tmpdir=/opt/sonarqube/temp -javaagent:/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/management-agent.jar -cp ./lib/common/*:./lib/search/* org.sonar.search.SearchServer /opt/sonarqube/temp/sq-process7139915507080636494properties
  2016.12.05 15:31:25 INFO   es[][o.s.p.ProcessEntryPoint]  Starting es
  2016.12.05 15:31:25 INFO   es[][o.s.s.EsSettings]  Elasticsearch listening on /127.0.0.1:9001
  2016.12.05 15:31:25 INFO   es[][o.elasticsearch.node]  [sonarqube] version[2.3.3], pid[21], build[218bdf1/2016-05-17T15:40:04Z]
  2016.12.05 15:31:25 INFO   es[][o.elasticsearch.node]  [sonarqube] initializing ...
  2016.12.05 15:31:25 INFO   es[][o.e.plugins]  [sonarqube] modules [], plugins [], sites []
  2016.12.05 15:31:25 INFO   es[][o.elasticsearch.env]  [sonarqube] using [1] data paths, mounts [[/opt/sonarqube/data (/dev/mapper/centos_rns170lv-root)]], net usable_space [22.4gb], net total_space [33.8gb], spins? [possibly], types [xfs]
  2016.12.05 15:31:25 INFO   es[][o.elasticsearch.env]  [sonarqube] heap size [990.7mb], compressed ordinary object pointers [true]
  2016.12.05 15:31:27 INFO   es[][o.elasticsearch.node]  [sonarqube] initialized
  2016.12.05 15:31:27 INFO   es[][o.elasticsearch.node]  [sonarqube] starting ...
  2016.12.05 15:31:27 INFO   es[][o.e.transport]  [sonarqube] publish_address {127.0.0.1:9001}, bound_addresses {127.0.0.1:9001}
  2016.12.05 15:31:27 INFO   es[][o.e.discovery]  [sonarqube] sonarqube/IxxWMoHCRhevseLUIhO9tw
  2016.12.05 15:31:30 INFO   es[][o.e.cluster.service]  [sonarqube] new_master {sonarqube}{IxxWMoHCRhevseLUIhO9tw}{127.0.0.1}{127.0.0.1:9001}{rack_id=sonarqube, master=true}, reason: zen-disco-join(elected_as_master, [0] joins received)
  2016.12.05 15:31:30 INFO   es[][o.elasticsearch.node]  [sonarqube] started
  2016.12.05 15:31:30 INFO   es[][o.e.gateway]  [sonarqube] recovered [0] indices into cluster_state
  2016.12.05 15:31:30 INFO  app[][o.s.p.m.Monitor] Process[es] is up
  2016.12.05 15:31:30 INFO  app[][o.s.p.m.JavaProcessLauncher] Launch process[web]: /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java -Djava.awt.headless=true -Dfile.encoding=UTF-8 -Djruby.management.enabled=false -Djruby.compile.invokedynamic=false -Xmx512m -Xms128m -XX:+HeapDumpOnOutOfMemoryError -Djava.security.egd=file:/dev/./urandom -Djava.io.tmpdir=/opt/sonarqube/temp -javaagent:/usr/lib/jvm/java-8-openjdk-amd64/jre/lib/management-agent.jar -cp ./lib/common/*:./lib/server/*:/opt/sonarqube/lib/jdbc/mysql/mysql-connector-java-5.1.39.jar org.sonar.server.app.WebServer /opt/sonarqube/temp/sq-process614082345862607988properties
  2016.12.05 15:31:31 INFO  web[][o.s.p.ProcessEntryPoint] Starting web
  2016.12.05 15:31:31 INFO  web[][o.s.s.a.TomcatContexts] Webapp directory: /opt/sonarqube/web
  2016.12.05 15:31:31 INFO  web[][o.a.c.h.Http11NioProtocol] Initializing ProtocolHandler ["http-nio-0.0.0.0-9000"]
  2016.12.05 15:31:31 INFO  web[][o.a.t.u.n.NioSelectorPool] Using a shared selector for servlet write/read
  2016.12.05 15:31:31 INFO  web[][o.e.plugins] [Obituary] modules [], plugins [], sites []
  2016.12.05 15:31:32 INFO  web[][o.s.s.e.EsClientProvider] Connected to local Elasticsearch: [127.0.0.1:9001]
  2016.12.05 15:31:32 INFO  web[][o.s.s.p.LogServerVersion] SonarQube Server / 6.1 / dc148a71a1c184ccad588b66251980c994879dff
  2016.12.05 15:31:32 INFO  web[][o.sonar.db.Database] Create JDBC data source for jdbc:mysql://SERVER_IP_ADDRESS:3307/sonar?useUnicode=true&amp;characterEncoding=utf8&amp;rewriteBatchedStatements=true
  2016.12.05 15:31:33 ERROR web[][o.a.c.c.C.[.[.[/]] Exception sending context initialized event to listener instance of class org.sonar.server.platform.web.PlatformServletContextListener
  java.lang.IllegalStateException: Can not connect to database. Please check connectivity and settings (see the properties prefixed by 'sonar.jdbc.').
          at org.sonar.db.DefaultDatabase.checkConnection(DefaultDatabase.java:104) ~[sonar-db-6.1.jar:na]
          ...
          at java.lang.Thread.run(Thread.java:745) [na:1.8.0_102]
  Caused by: org.apache.commons.dbcp.SQLNestedException: Cannot create PoolableConnectionFactory (Communications link failure
  The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.)
          at org.apache.commons.dbcp.BasicDataSource.createPoolableConnectionFactory(BasicDataSource.java:1549) ~[commons-dbcp-1.4.jar:1.4]
          ...
          at org.sonar.db.DefaultDatabase.checkConnection(DefaultDatabase.java:102) ~[sonar-db-6.1.jar:na]
          ...
  Caused by: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure
  The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.
          at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[na:1.8.0_102]
          ...
          at org.apache.commons.dbcp.BasicDataSource.createPoolableConnectionFactory(BasicDataSource.java:1545) ~[commons-dbcp-1.4.jar:1.4]
          ...
  Caused by: java.net.NoRouteToHostException: No route to host
          at java.net.PlainSocketImpl.socketConnect(Native Method) ~[na:1.8.0_102]
          at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350) ~[na:1.8.0_102]
          at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206) ~[na:1.8.0_102]
          at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188) ~[na:1.8.0_102]
          at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392) ~[na:1.8.0_102]
          at java.net.Socket.connect(Socket.java:589) ~[na:1.8.0_102]
          at com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:211) ~[mysql-connector-java-5.1.39.jar:5.1.39]
          at com.mysql.jdbc.MysqlIO.&lt;init&gt;(MysqlIO.java:300) ~[mysql-connector-java-5.1.39.jar:5.1.39]
          ...
  2016.12.05 15:31:33 ERROR web[][o.a.c.c.StandardContext] One or more listeners failed to start. Full details will be found in the appropriate container log file
  2016.12.05 15:31:33 ERROR web[][o.a.c.c.StandardContext] Context [] startup failed due to previous errors
  2016.12.05 15:31:33 WARN  web[][o.a.c.l.WebappClassLoaderBase] The web application [ROOT] appears to have started a thread named [elasticsearch[Obituary][[timer]]] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread:
   java.lang.Thread.sleep(Native Method)
  org.elasticsearch.threadpool.ThreadPool$EstimatedTimeThread.run(ThreadPool.java:719)
  2016.12.05 15:31:33 WARN  web[][o.a.c.l.WebappClassLoaderBase] The web application [ROOT] appears to have started a thread named [elasticsearch[Obituary][scheduler][T#1]] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread:
   sun.misc.Unsafe.park(Native Method)
   java.lang.Thread.run(Thread.java:745)
  2016.12.05 15:31:33 WARN  web[][o.a.c.l.WebappClassLoaderBase] The web application [ROOT] appears to have started a thread named [elasticsearch[Obituary][transport_client_worker][T#1]{New I/O worker #1}] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread:
   sun.nio.ch.EPollArrayWrapper.epollWait(Native Method)
  2016.12.05 15:31:33 WARN  web[][o.a.c.l.WebappClassLoaderBase] The web application [ROOT] appears to have started a thread named [elasticsearch[Obituary][transport_client_worker][T#2]{New I/O worker #2}] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread:
   sun.nio.ch.EPollArrayWrapper.epollWait(Native Method)
  2016.12.05 15:31:33 WARN  web[][o.a.c.l.WebappClassLoaderBase] The web application [ROOT] appears to have started a thread named [elasticsearch[Obituary][transport_client_worker][T#3]{New I/O worker #3}] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread:
   sun.nio.ch.EPollArrayWrapper.epollWait(Native Method)
  2016.12.05 15:31:33 WARN  web[][o.a.c.l.WebappClassLoaderBase] The web application [ROOT] appears to have started a thread named [elasticsearch[Obituary][transport_client_worker][T#4]{New I/O worker #4}] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread:
   sun.nio.ch.EPollArrayWrapper.epollWait(Native Method)
  2016.12.05 15:31:33 WARN  web[][o.a.c.l.WebappClassLoaderBase] The web application [ROOT] appears to have started a thread named [elasticsearch[Obituary][transport_client_worker][T#5]{New I/O worker #5}] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread:
   sun.nio.ch.EPollArrayWrapper.epollWait(Native Method)
  2016.12.05 15:31:33 WARN  web[][o.a.c.l.WebappClassLoaderBase] The web application [ROOT] appears to have started a thread named [elasticsearch[Obituary][transport_client_worker][T#6]{New I/O worker #6}] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread:
   sun.nio.ch.EPollArrayWrapper.epollWait(Native Method)
  2016.12.05 15:31:33 WARN  web[][o.a.c.l.WebappClassLoaderBase] The web application [ROOT] appears to have started a thread named [elasticsearch[Obituary][transport_client_worker][T#7]{New I/O worker #7}] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread:
   sun.nio.ch.EPollArrayWrapper.epollWait(Native Method)
  2016.12.05 15:31:33 WARN  web[][o.a.c.l.WebappClassLoaderBase] The web application [ROOT] appears to have started a thread named [elasticsearch[Obituary][transport_client_worker][T#8]{New I/O worker #8}] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread:
   sun.nio.ch.EPollArrayWrapper.epollWait(Native Method)
  2016.12.05 15:31:33 WARN  web[][o.a.c.l.WebappClassLoaderBase] The web application [ROOT] appears to have started a thread named [elasticsearch[Obituary][transport_client_boss][T#1]{New I/O boss #9}] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread:
   sun.nio.ch.EPollArrayWrapper.epollWait(Native Method)
  2016.12.05 15:31:33 WARN  web[][o.a.c.l.WebappClassLoaderBase] The web application [ROOT] appears to have started a thread named [elasticsearch[Obituary][transport_client_timer][T#1]{Hashed wheel timer #1}] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread:
   java.lang.Thread.sleep(Native Method)
  2016.12.05 15:31:33 WARN  web[][o.a.c.l.WebappClassLoaderBase] The web application [ROOT] appears to have started a thread named [elasticsearch[Obituary][generic][T#1]] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread:
   sun.misc.Unsafe.park(Native Method)
  2016.12.05 15:31:33 WARN  web[][o.a.c.l.WebappClassLoaderBase] The web application [ROOT] appears to have started a thread named [Abandoned connection cleanup thread] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread:
   java.lang.Object.wait(Native Method)
  com.mysql.jdbc.AbandonedConnectionCleanupThread.run(AbandonedConnectionCleanupThread.java:43)
  2016.12.05 15:31:33 WARN  web[][o.a.c.l.WebappClassLoaderBase] The web application [ROOT] appears to have started a thread named [Timer-0] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread:
   java.lang.Object.wait(Native Method)
  2016.12.05 15:31:33 INFO  web[][o.a.c.h.Http11NioProtocol] Starting ProtocolHandler ["http-nio-0.0.0.0-9000"]
  2016.12.05 15:31:33 INFO  web[][o.s.s.a.TomcatAccessLog] Web server is started
  2016.12.05 15:31:33 INFO  web[][o.s.s.a.EmbeddedTomcat] HTTP connector enabled on port 9000
  2016.12.05 15:31:33 WARN  web[][o.s.p.ProcessEntryPoint] Fail to start web
  java.lang.IllegalStateException: Webapp did not start
          at org.sonar.server.app.EmbeddedTomcat.isUp(EmbeddedTomcat.java:84) ~[sonar-server-6.1.jar:na]
  2016.12.05 15:31:33 INFO  web[][o.a.c.h.Http11NioProtocol] Pausing ProtocolHandler ["http-nio-0.0.0.0-9000"]
  2016.12.05 15:31:34 INFO  web[][o.a.c.h.Http11NioProtocol] Stopping ProtocolHandler ["http-nio-0.0.0.0-9000"]
  2016.12.05 15:31:34 INFO  web[][o.a.c.h.Http11NioProtocol] Destroying ProtocolHandler ["http-nio-0.0.0.0-9000"]
  2016.12.05 15:31:34 INFO  web[][o.s.s.a.TomcatAccessLog] Web server is stopped
  2016.12.05 15:31:35 INFO  app[][o.s.p.m.Monitor] Process[es] is stopping
  2016.12.05 15:31:35 INFO   es[][o.s.p.StopWatcher]  Stopping process
  2016.12.05 15:31:35 INFO   es[][o.elasticsearch.node]  [sonarqube] stopping 
  2016.12.05 15:31:35 INFO   es[][o.elasticsearch.node]  [sonarqube] stopped
  2016.12.05 15:31:35 INFO   es[][o.elasticsearch.node]  [sonarqube] closing 
  2016.12.05 15:31:35 INFO   es[][o.elasticsearch.node]  [sonarqube] closed
  2016.12.05 15:31:36 INFO  app[][o.s.p.m.Monitor] Process[es] is stopped
  </code></pre>
  
  <p>Even if I create whole new containers from scratch, the SonarQube container crashes.</p>
  
  <p>An hypothesis of mine is that my SERVER_IP_ADDRESS and my BRIDGE_IP_ADDRESSES are not proxy-bypassed, but I did not succeed by modifying the $no_proxy environment variable.</p>