Tag: rest

在RESTful API中使用Docker容器来执行不可信代码的安全性和性能限制是什么?

我正在开发一套用于提供一些数据分析的RESTful API。 在调用API时,客户端也将能够传递脚本函数作为附加参数(并且这些函数将在分析pipe道期间执行)。 数据本身将从各种来源(如Amazon S3,客户端的Dropbox或Google云存储)中检索。 我希望能够在一个非常受控和隔离的环境中执行客户端脚本。 因此,我想为每个客户端请求实例化一个Docker容器,并在该受控环境中执行处理pipe道以及客户端脚本。 所以基本上,RESTful端点会dynamic实例化Docker容器以处理客户端请求。 完成后,处理结果将被推回到Dropbox / S3 / Google云端存储,此时对应的docker容器也将被移除或重新分配给另一个请求。 编辑1 : 从RESTful API的angular度来看,客户端请求将被接受(HTTP 202)并被推送到一个处理队列中。 处理队列中的每个请求都将在未来的某个时刻依次分配给docker集装箱。 客户端将能够使用另一个RESTful端点查询处理的状态。 编辑2 :这是一个链接解释类似的方法: https : //medium.com/aws-activate-startup-blog/sandboxing-code-in-the-era-of-containers-294edb3a674#.19882q2g5 我的问题: 这种方法对性能的影响是什么? 换句话说,系统地创build用于处理的docker容器而不是使用工作进程的性能成本是多less。 这种方法是否真的增加了额外的安全性?

如何通过REST端点在openshift中configuration应用程序?

我们使用openshift来部署我们的dockerized Java EE应用程序。 这个应用程序公开了我们用来configuration服务的REST端点(一些标准的事情,如轮询intervalls,其他端点查询数据,默认语言,…)。 到目前为止,我们通过运行第二个包含configuration数据的容器来configuration这个应用程序,并运行curl将这个configuration数据推送到应用程序的容器,这完全正常工作,即使用docker-compose或ansible,我们只需等待应用程序启动,我们运行configuration容器。 现在我们打算使用openshift,并且我不知何故错过了CLI上的这个依赖定义function,导致configuration容器在应用程序容器准备好接收configuration之前启动。 我的意思是在某个时候应用程序已经准备就绪,然后configuration被推送到那里,但是我想在configuration过程结束后停止configuration容器。 所以问题是如何处理这种情况。 这两个容器方法最终是否有效(我的意思是我们要分开两个进程,这就是为什么我们有他们)或者我们应该添加configuration到应用程序容器? 达到这个目标的最佳做法是什么?

testing具有外部依赖性的集装箱化微服务

于是我构build了一个REST API微服务,它查询本地Elasticsearch实例并根据内部协议转换结果。 我将其构build到一个Docker镜像中,我想在build中运行一些unit testing。 由于ES连接到私有Dockernetworking,在构build过程中微服务不可访问,因此testing显然失败。 我想知道,有没有办法解决这种情况,而不必使用一些复杂的testing框架来做dependency injection? 你在工作实践中如何testing这种容器?

我如何从Docker REST API获取任务(容器)健康状况?

在运行docker ps我得到了在特定主机上运行的所有容器的清单。 除此之外,我可以看到我自己的HEALTHCHECK报告的容器的健康状况。 我怎样才能通过REST api获取这条信息? 我正在把一个从Docker REST API中提取数据的小代理放在一起,并将其提交给一个监视工具。 我真的很想监督集装箱的健康。 如果可以从/tasks端点提取这些信息,那就太棒了。

我如何使用Docker Stack REST API?

有没有人尝试使用Docker Stack REST API来创build新的堆栈或列表堆栈? Docker版本:Client:版本:17.05.0-ce API版本:1.29 Go版本:go1.7.5 Git commit:89658be内置:Thu May 4 22:06:25 2017 OS / Arch:linux / amd64 服务器:版本:17.05.0-ce API版本:1.29(最低版本1.12)Go版本:go1.7.5 Git commit:89658be内置:Thu May 4 22:06:25 2017 OS / Arch:linux / amd64实验:false

Docker群集:REST API可以通过端口3001访问,但不能通过networking服务器访问

我有以下设置: networking:入口(Swarm)服务:web api Web服务运行在端口3000暴露的容器中,并且api运行在端口3001暴露的容器中。 我可以查询本地主机:3000或IP地址:3000(从任何其他机器),并加载Web应用程序。 此外,我可以POST本地主机:3001或IP地址:3001(从任何其他机器)的API,我会得到所需的响应。 在Web应用程序中,有一个REST端点,它允许我在/ api端点将数据POST到端口3000,该端点将该POST请求redirect到api容器上的3001。 问题是,当我发布数据到3000:/ API,curl只是挂起。 没有反应,也没有什么,我不知道该怎么做。 从文档中可以看出,同一networking中的所有容器都可以访问对方的端口,而不pipe它们是否被公开/公开。 我很困惑,为什么它不工作。 另外,我甚至没有得到一个错误,curl只是不返回一个值。 例: docker swarm init docker service create –name=web –mode global –publish 3000:3000 project/web docker service create –name=api –replicas 5 –publish 3001:3001 project/api 现在,如果我从networking上的另一台计算机运行以下命令,它工作正常: curl <IP_address>:3000 从web-app curl返回index.html:3001 / predict –data'{…}'-H“Content-Type:application / json”根据需要返回正确的数据 现在,Web应用程序具有一个端点:3000 / api / predict,它从主体获取json,然后将相同的数据发布到localhost:3001 / predict端点(位于另一个容器上)。 如果我ssh进入容器,curl请求返回连接被拒绝的错误。 我也尝试用一个复制的容器的名称或服务的名称replace“localhost”。 […]

我如何使用REST API与Docker引擎进行交互?

您可能知道,我们可以使用命令docker images来列出我们在本地主机上的docker镜像。 现在,我想通过在Firefox或Chrome中发送HTTP GET请求来从远程服务器获取相同的信息。 docker工人提供一些REST API来做到这一点? 我做了很多search。 例如: https : //docs.docker.com/engine/api/get-started/#run-a-container-in-the-background 它提供了一个这样的方式: curl –unix-socket /var/run/docker.sock http:/v1.24/containers/json 我知道很less关于unix socket,我不认为这是我想要的。 URL(http:/v1.24/containers/json)太奇怪了,甚至没有一个服务器名称。 我不认为它可以在远程服务器上工作。 (它可以在本地服务器上运行) 任何一位先生能帮我吗? 有没有关于这个话题的官方文档docker?

在Docker容器中无法启动我的Eureka Spring REST服务

我的项目由在Eureka注册的REST服务组成,我也使用Zuul代理来pipe理请求,如图所示。 它以本地方式在我的电脑上完美运行,但是当我为我的服务创build一个docker容器时,它不会启动。 我遵循的步骤是: 我为每个服务创build了一个Docker容器:Eureka服务器,Zuul API网关,REST服务和我的Mysql数据库。 我从数据库中的存储过程中获取我的服务的数据,这个连接被testing并且工作。 我使用docker-compose启动所有实例,尤里卡和数据库实例保持运行,但REST服务实例突然停止。 祖鲁还没有实施。 错误: matriculas-ms_1 | org.springframework.context.ApplicationContextException: Failed to start bean 'org.springframework.cloud.netflix.eureka.EurekaDiscoveryClientConfiguration'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'scopedTarget.eurekaClient' defined in class path resource [org/springframework/cloud/netflix/eureka/EurekaClientAutoConfiguration$RefreshableEurekaClientConfiguration.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [com.netflix.discovery.EurekaClient]: Factory method 'eurekaClient' threw exception; nested exception is […]

与Zuul和Eureka在Docker Swarm集群上的弹簧微服务没有反应

我有微服务注册与尤里卡和Zuul微服务前端请求。 所有微服务都在3个Centos 7 EC2服务器上运行的Docker群集中。 在工作微服务约1小时后,微服务停止响应。 我进入集群中的Docker容器并提交ping请求。 这工作和主机DNS名称被识别。 但是,我试图直接向微服务提交一个Curl restful请求,并且没有回应。 下面是大约一个小时后不起作用的Curl请求的示例: curl http:// whitepaper:8084 / rest / getWhitePapers 感谢您的时间和精力。 Bret Mullinix

AWS-ECS – 容器之间的通信 – 未知的主机错误

我有两个Docker容器。 TestWeb(公开:80) TestAPI(公开:80) Testweb容器调用TestApi容器。 主机可以从端口8080与TestWeb容器进行通信。主机可以使用8081与TestApi进行通信。 我可以让TestWeb在我的开发箱(Windows 10)中调用TestApi,但是当我将代码部署到AWS(ECS)时,我得到“未知主机”exception。 这两个容器工作得很好,我可以单独给他们打电话。 但是当我调用一个内部使用HttpClient的方法在Container2中进行Rest方法时,它会给出错误: 发送请求时发生错误。 —> System.Net.Http.CurlException:无法parsing主机名。 码: using (var client = new HttpClient()) { try { string url = "http://testapi/api/Tenant/?i=" + id; var response = client.GetAsync(url).Result; if (response.IsSuccessStatusCode) { var responseContent = response.Content; string responseString = responseContent.ReadAsStringAsync().Result; return responseString; } return response.StatusCode.ToString(); } catch (HttpRequestException httpRequestException) { return httpRequestException.Message; […]