2016-12-05 4 views
0

В последние дни мой контейнер Docker (SonarQube) вылетает через пару секунд после запуска. Кажется, что он больше не может подключить контейнер базы данных. Как я могу их повторно соединить?Сбой контейнера Docker при запуске: java.net.NoRouteToHostException: нет маршрута к хосту

MySQL контейнер run Команда:

docker run -d --name mysql-sonarqube-container \ 
-e MYSQL_ROOT_PASSWORD=root \ 
-p 3307:3306 \ 
-v /etc/mysql:/etc/mysql/conf.d \ 
mysql:latest 

MySQL Создание пользователя:

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; 

SonarQube контейнер run Команда:

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&characterEncoding=utf8&rewriteBatchedStatements=true" \ 
-e SONARQUBE_HOST_URL="http://DOCKER_BRIDGE_IP_ADDRESS:9000" \ 
sonarqube:latest 

А вот журналы Docker:

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&characterEncoding=utf8&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.<init>(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 

Даже если я создаю совершенно новые контейнеры с нуля, контейнер SonarQube сработает.

Моя гипотеза состоит в том, что мои SERVER_IP_ADDRESS и мои BRIDGE_IP_ADDRESSES не прокси-обойдены, но мне это не удалось, изменив переменную среды $ no_proxy.

ответ

0

Я, наконец, использовал базу данных PostgreSQL вместо базы данных MySQL, и она сработала.

Я использовал docker-compose с yml-файлом, который описывает обе службы в той же сети: базу данных и Sonarqube.


Для других контейнеров не встречая на «Нет пути для размещения» проблемы, я должен был использовать DOCKER_BRIDGE_IP_ADDRESS в настройках приложения вместо server_ip_address (который не был признан внутри контейнеров).

0

Для свойства env SONARQUBE_JDBC_URL вместо SERVER_IP_ADDRESS используйте псевдоним связанного контейнера (в вашем случае это mysql). Итак, ваша команда будет

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://mysql:3307/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true" \ 
-e SONARQUBE_HOST_URL="http://DOCKER_BRIDGE_IP_ADDRESS:9000" \ 
sonarqube:latest 
+0

Как использовать псевдоним для моего SERVER_IP_ADDRESS, чтобы предотвратить потерю контейнера? Однако я попытался использовать связанный псевдоним контейнера вместо SERVER_IP_ADDRESS, но получил «java.net.ConnectException: Connection failed». – RotS

+0

Я думал, что он не смог связаться с контейнером базы данных из «Caused by: java.net.NoRouteToHostException: нет пути к хосту». «Отклонено соединение» означает, что он может связаться с контейнером базы данных, но контейнер отказывается от него, возможно, из-за проблемы с портом. – Yuva

Смежные вопросы