Tag: Java

问题使用Docker-compose链接Docker中的容器

我正在使用Docker来准备我的微服务架构。 我正在尝试使用docker-compose将一个容器与另一个容器链接起来。 基本上我有一个postgressql图像的容器,以及一个用Spring开发的java微服务,它应该连接到数据库容器。 所以我在docker-compose.yml中设置了一个链接,并使用以下命令将db容器ip作为“db”引用: – "JAVA_OPTS=-Dpostgres.host=db" 不过,我得到以下错误docker开始微服务: 引起:java.lang.IllegalArgumentException:无法parsing值“jdbc:postgresql:// $ {postgress.host}:5432 / docker”中的占位符“postgress.host” 所以基本上这个占位符不能解决,但通常docker组成应该照顾设置这个系统variables指向db容器的IP地址吗? 我做错了什么? 在涉及的文件下面: 泊坞窗,compose.yml: version: "2" services: microservices: build: ./microservices container_name: microservices links: – db – consul environment: – "JAVA_OPTS=-Dpostgres.host=db" consul: image: consul container_name: consul ports: – "8500:8500" db: image: postgres container_name: local-postgres9.6 ports: – "5432:5432" environment: POSTGRES_PASSWORD: docker POSTGRES_USER: docker application.yml的微服务: server: […]

从Docker容器Java应用程序访问VMware主机

我有一个VMware服务器和一个日志/ opt / app1 / logs.Java应用程序在VMware的一个docker容器中运行。 现在Java应用程序必须将日志写入VMware位置(/ opt / app1 / logs)。现有应用程序正在写入conatainerpath/ usr / app / logs。 如何指向java应用程序写入日志VMware日志位置/opt/app1/logs.Thanks提前为您的答复和答案。

如何在没有权限问题的情况下在marathon上部署artifactory-oss的docker镜像

我正在尝试部署artifactory-oss的docker容器 这是我用于本地testing它docker-compose.yml : version: '2' services: artifactory: image: jfrog-docker-registry.bintray.io/jfrog/artifactory-oss:4.1.3 ports: – "8081:8081" volumes: – "/var/opt/jfrog/artifactory" 我曾尝试将它部署在与马拉松比赛中。 我有权限问题: I0415 19:43:01.747540 15616 fetcher.cpp:424] Fetcher Info: {"cache_directory":"\/tmp\/mesos\/fetch\/slaves\/4e00de0a-3293-453f-83ab-9576653867d7-S0","items":[{"action":"BYPASS_CACHE","uri":{"cache":false,"executable":false,"extract":true,"value":"file:\/\/\/etc\/docker.tar.gz"}}],"sandbox_directory":"\/tmp\/mesos\/slaves\/4e00de0a-3293-453f-83ab-9576653867d7-S0\/frameworks\/21d4cb5a-ac85-4a3c-90fd-b8ab6d37ecc0-0000\/executors\/kopaxgroup_developers_artifactory.f7cf24d5-2213-11e7-a891-c60d6e82d111\/runs\/f412d99e-34f4-459f-8533-4e58c2e8dd59"} I0415 19:43:01.749455 15616 fetcher.cpp:379] Fetching URI 'file:///etc/docker.tar.gz' I0415 19:43:01.749469 15616 fetcher.cpp:250] Fetching directly into the sandbox directory I0415 19:43:01.749485 15616 fetcher.cpp:187] Fetching URI 'file:///etc/docker.tar.gz' I0415 19:43:01.749500 15616 fetcher.cpp:167] Copying resource with […]

Docker图像环绕二进制blob

是否有可能将随机二进制blob包装到Docker镜像中? 也许有了一个高山Linux的基础层,使图像由blob作为顶层?

如何使用docker maven插件将文件从绝对path复制到docker镜像

我正在用Java编写微服务。 最后,我运行maven build来生成基于目录[project-root] / docker中的Dockerfile的Docker镜像。 有些文件需要复制到Docker镜像中。 因此,我的Dockerfile中有以下几行: # HDFS base image FROM mdouchement/hdfs COPY ${workdir.name} /${workdir.name} COPY ${resource.dir} /etc/hadoop variablesworkdir.name和resource.dir在pom.xml中定义 <properties> <workdir.name>javarun</workdir.name> <resource.dir>${project.baseUri}/src/main/resources</resource.dir> </properties> 当第一个复制命令使用相当于target/docker/javarun相对path时,第二个命令使用绝对path。 原来第一个COPY作品,而我得到第二个COPY错误说目录没有find: [INFO] Building image docker.repo.lgc.com/distarch/com.lgc.dist.core.msp.service.hdfs Step 1/3 : FROM mdouchement/hdfs —> c95344e8749d Step 2/3 : COPY javarun /javarun —> e2e8cb5bc21f Removing intermediate container f49da68fe77e Step 3/3 : COPY file:/C:/Users/H184870/Workspace/core/com.lgc.dist.core.msp.service.hdfs//src/main/resources /etc/hadoop […]

SpringBoot与Tomcat使用大约190mb的内存。 什么过程在Springboot中运行?

我正在SpringBoot上运行一个应用程序,该应用程序在Docker容器中包含一个embedded式Tomcat。 我已经给了我的最大堆大小为64MB。 不过,我看到总的内存消耗约为190MB。 如果我尝试启动内存限制为128mb的容器,容器将无法启动。 还有哪些其他进程将与tomcat和app一起运行? 如何知道哪个进程正在消耗内存?

内存不足Predictionio

我使用Docker使用predictionio,并按照从这里的 README中给出的说明 仪表板启动并运行后,我运行“./run.sh”命令。 但是,在创build应用程序并生成密钥后,会发生内存不足错误。 Java HotSpot(TM)64位服务器VM警告:INFO:os :: commit_memory(0x0000000715550000,2863333376,0)失败; 错误='不能分配内存'(错误= 12) Java运行时环境没有足够的内存来继续。 本地内存分配(mmap)无法映射2863333376字节以提交保留的内存。

Docker Java客户端在JMeter中

我正在尝试使用docker-java客户端为JMeter构build一个Docker插件。 如果客户端在JMeter之外使用,那么工作正常。 但是,当插件是build立和JMeter内运行,我得到这个exception。 我试图用Gradle Shadow插件来解决任何依赖冲突,但不断收到这个错误。 > java.lang.NullPointerException: null at > org.apache.cxf.jaxrs.client.WebClient.doInvoke(WebClient.java:871) > ~[docker-sampler-1.0-SNAPSHOT.jar:?] at > org.apache.cxf.jaxrs.client.WebClient.doInvoke(WebClient.java:854) > ~[docker-sampler-1.0-SNAPSHOT.jar:?] at > org.apache.cxf.jaxrs.client.WebClient.invoke(WebClient.java:417) > ~[docker-sampler-1.0-SNAPSHOT.jar:?] at > org.apache.cxf.jaxrs.client.WebClient$SyncInvokerImpl.method(WebClient.java:1624) > ~[docker-sampler-1.0-SNAPSHOT.jar:?] at > org.apache.cxf.jaxrs.client.WebClient$SyncInvokerImpl.post(WebClient.java:1564) > ~[docker-sampler-1.0-SNAPSHOT.jar:?] at > org.apache.cxf.jaxrs.client.spec.InvocationBuilderImpl.post(InvocationBuilderImpl.java:150) > ~[docker-sampler-1.0-SNAPSHOT.jar:?] at > com.github.dockerjava.jaxrs.async.POSTCallbackNotifier.response(POSTCallbackNotifier.java:29) > ~[docker-sampler-1.0-SNAPSHOT.jar:?] at > com.github.dockerjava.jaxrs.async.AbstractCallbackNotifier.call(AbstractCallbackNotifier.java:50) > ~[docker-sampler-1.0-SNAPSHOT.jar:?] 但是,如果我掏出相同的命令,例如在JMeter插件中的docker pull alpine ,该命令执行得很好。 任何方式来克服这个驼峰?

Java代码查看远程主机上的泊坞窗容器的状态,拒绝连接

我正在使用docker-java库来查看是否可以查看远程服务器上的docker容器的状态。 我已经能够得到它来检查使用此代码的本地docker容器的状态: DockerClient dc = DockerClientBuilder.getInstance().build(); List<Container> containers = dc.listContainersCmd().withShowAll(true).exec(); for (Container a : containers) { System.out.println(Arrays.toString(a.getNames())); System.out.println(a.getStatus()); } 但是,当我根据docker-java github页面的Wiki中的示例添加远程服务器的详细信息时,它会返回连接拒绝错误: // Changing this line DockerClient dc = DockerClientBuilder.getInstance("tcp://46.101.7.176:2376").build(); // Results in this error: Exception in thread "main" javax.ws.rs.ProcessingException: org.apache.http.conn.HttpHostConnectException: Connect to 46.101.7.176:2376 [/46.101.7.176] failed: Connection refused at org.glassfish.jersey.apache.connector.ApacheConnector.apply(ApacheConnector.java:481) at org.glassfish.jersey.client.ClientRuntime.invoke(ClientRuntime.java:252) at org.glassfish.jersey.client.JerseyInvocation$2.call(JerseyInvocation.java:701) at org.glassfish.jersey.internal.Errors.process(Errors.java:315) […]

Java.lang.ExceptionInInitializerError列出泊坞窗图像

我想通过https://github.com/docker-java/docker-java使用java客户端API来列出泊坞窗图像 这是我的代码片段 import java.util.List; import com.github.dockerjava.api.DockerClient; import com.github.dockerjava.api.model.Image; import com.github.dockerjava.core.DockerClientBuilder; public class StartContainers{ DockerClient dockerClient ; public StartContainers() { startContainers(); } public void startContainers() { dockerClient = DockerClientBuilder.getInstance("tcp://localhost:2375").build(); List<Image> images = dockerClient.listImagesCmd().exec(); for(int i=0; i < images.size(); i++){ System.out.println(images.get(i)); } } public static void main(String args[]) { StartContainers startContainers=new StartContainers(); } } 我得到这个例外 在org.glassfish.jersey.client.JerseyClient.target(JerseyClient.java:290)org.glassfish.jersey.client.JerseyWebTarget。(JerseyWebTarget.java:71)的线程“main”java.lang.ExceptionInInitializerErrorexception.glassfish.jersey.client.JerseyClient.target(JerseyClient.java:76)at com.github.dockerjava.jaxrs.JerseyDockerCmdExecFactory.init(JerseyDockerCmdExecFactory.java:234)at […]