Tag: Java

如何使用docker-compose在多个容器之间传递参数

您好,我想了解docker组成,以及如何传递容器之间的参数,以便我可以在我的应用程序中使用它。 我已经使用两个微服务构build了一个简单的Hello World应用程序 第一个微服务是使用java: //java code hello.java public class hello { public static void main(String args[]) { System.out.println("hello world from java"); } } //Dockerfile for creating this image FROM java:7 COPY hello.java . RUN javac hello.java CMD ["java","hello"] 同样的图像使用python我有两个文件: hello.py print("hello from python") 这个图像的Dockerfile是: FROM python:2.7 COPY hello.py . CMD ["python","hello.py"] 我的docker – 撰写文件: javacl: […]

IntelliJ:使用docker jvm或者docker maven?

我有一个docker / jvm实例,我使用命令行来编译和运行java代码。 IntelliJ的项目configuration要求我指向文件系统上的jvm。 所以,我想知道,我可以configurationintellij使用这个docker集装箱? 我想我可以configurationdocker容器,保持运行,并挂载/共享其文件系统,但我不想 – 我想用我的短暂容器实例。 我有同样的想法使用maven – 我可以使用maven docker实例,而无需安装文件系统,从intellij内? 同样,intellij似乎需要一个指向maven的文件系统位置的指针,所以这似乎有问题。 有没有人有任何线索,如果这是可能的,或如何去configuration这样的事情?

如何通过Java程序执行docker命令

我不需要调用Docker远程API,而是需要开发一个与Docker Linux Client(不是Docker守护进程)对话的程序。 这是我的代码 try { String[] command = {"docker", "run", "-it", "tomcat:9", "bash"}; ProcessBuilder pb = new ProcessBuilder(command); pb.inheritIO(); Process proc = pb.start(); InputStream is = proc.getInputStream(); OutputStream os = proc.getOutputStream(); BufferedReader reader = new BufferedReader(new InputStreamReader(is)); BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(os)); writer.write("pwd"); writer.flush(); String line = ""; while ((line = reader.readLine()) != […]

如何高效地dockerized java微服务

虽然Java应用程序服务器将扩展独特的JVM以运行多个(微)服务,但是dockerized java微服务体系结构将为每个dockerized微服务运行JVM。 考虑到20个以上的java微服务和有限数量的主机,似乎每个主机上的JVM占用的资源量是巨大的。 有没有一种有效的方法来解决这个问题? 是否有可能调整每个JVM来限制资源消耗? 目的是限制在java微服务体系结构中使用docker的开销。

在Docker容器中构buildJava Gradle项目?

我们有一个使用Gradle构build的Java项目,它需要Java 8等。开发人员在他们的机器上有不同的Java版本(不同的项目,IDEA一直对Open JDK很挑剔,但我们用它来运行我们的应用程序),我们希望轻松地使用正确的Java版本进行构build。 这个想法是使用Docker来完成这个任务,也就是使用正确的Java版本启动Docker容器,并将其用于构build(编译,testing,组装等)。 这是一个好主意吗? 我将如何去呢? 例如,我是否告诉Gradle启动容器,并告诉它使用它的javac? 还是启动容器,用项目代码装入一个卷,然后在该容器中使用Gradle构build? 这将有一个缺点,人们需要首先启动一个容器,但我想这可能是脚本。 有人做这样的事吗?

Spring启动数组在Docker / Marathon上的环境variables

我的应用程序的数组环境variables的formstableName[0]=tableName … property.one.two.tableName[x]=tableNameX 在本地运行时,当我将属性放在application.properties ,command-line args或环境variables中时,一切正常。 但是,一旦我尝试部署到马拉松,数组variables不再工作。 我试图在马拉松json数组中的env属性中传递它们。 我试过了: "env": { "property.one.two.tableName[0]":"tableName", …. } 和 "env": { "property.one.two.tableName": ["tableName", … ] … } 和 "env" { "tableName": [ {"property.one.two.tableName[0]" : "tableName"} {….} ] } 但没有任何工作。 有没有人得到这个工作?

Kerberos AD Spnego身份validation在一台机器上失败,但在另一台机器上失败

我有Kerberos身份validation问题。 我有一个dockerised REST Web应用程序,可以在一台AWS主机上很好地运行。 我刚刚尝试在一个新的主机上运行它,我得到java.security.GeneralSecurityException: Checksum failed at sun.security.krb5.internal.crypto.dk.ArcFourCrypto.decrypt当我尝试调用它时, java.security.GeneralSecurityException: Checksum failed at sun.security.krb5.internal.crypto.dk.ArcFourCrypto.decrypt 。 下面是完整的堆栈跟踪。 它使用Spnego和Spring Security 。 我不使用密钥表,我完全依赖于这样的krb5.confconfiguration: [libdefaults] default_realm = XYZ1.AD.XYZ.COM [realms] XYZ1.AD.XYZ.COM = { kdc = XYZ1XEUDC018.xyz1.ad.xyz.com default_domain = XYZ1.AD.XYZ.COM } [domain_realm] .xyz1.ad.xyz.com = XYZ1.AD.XYZ.COM .cd2.xyz.com = XYZ1.AD.XYZ.COM .ad.xyz.com = XYZ1.AD.XYZ.COM 这是Krb5LoginModule login.conf : spnego-client { com.sun.security.auth.module.Krb5LoginModule required; }; spnego-server { […]

数据存储在集群环境中的位置?

在创build在集群环境中运行的应用程序时,人们在哪里存储数据? 我创build了一个从主机上的一个目录读取XSLT的应用程序。 但是,如果我想在容器(Docker)中的Google Cloud Engine中运行相同的应用程序,那么如果使用服务(负载平衡),则会遇到很大的问题。 必须有一个共同的数据存储,所有读取/写入。 它应该安装在每个吊舱(右?)。 我为此使用什么? 我试图使用Hadoop,但它是不可能的(所有指南都过时了,我运行Ubuntu 14.04)。 我不能成为第一个试图在集群环境中读取/存储数据的人。 这是怎么做的?

运行Docker-client Java API时,Apache Connection被拒绝

我正在尝试安装Docker客户端远程API库( https://github.com/spotify/docker-client )来执行一些图像search并检查图像数据(全部在公共存储库中)。 我有boot2docker虚拟机下载,安装并运行。 诸如“Docker pull ubuntu”之类的命令工作正常,但是现在我想通过Java程序来完成这个任务。 我使用Eclipse IDE Egit插件来导入github项目,并从现有的Master分支创build一个Maven / Java项目。 源代码完全导入,没有错误报告。 然后我试着写一个简单的testing: final DockerClient docker = DefaultDockerClient.fromEnv().build(); //docker.pull("busybox"); List<ImageSearchResult> results = docker.searchImages("ubuntu"); for (ImageSearchResult res : results) { System.out.println(res.getName()); } 但是,在Eclipse中运行代码时,出现以下错误: Exception in thread "main" com.spotify.docker.client.DockerException: java.util.concurrent.ExecutionException: javax.ws.rs.ProcessingException: org.apache.http.conn.HttpHostConnectException: Connect to localhost:2375 [localhost/127.0.0.1, localhost/0:0:0:0:0:0:0:1] failed: Connection refused: connect at com.spotify.docker.client.DefaultDockerClient.propagate(DefaultDockerClient.java:1109) at com.spotify.docker.client.DefaultDockerClient.request(DefaultDockerClient.java:1028) at […]

在docker文件中获取内存限制?

是否有可能在运行时获得docker集装箱的最大内存? 我想要达到的是: docker run –memory "100m" 并访问docker文件中的最大内存: ENTRYPOINT ["java", "-Xmx$memory", "-jar", "helloworld.jar"]