Tag: 窗群

Docker群集安全性和AWS上的高可用性

我正在AWS上部署一个有多个节点的docker群,现在我所有的节点都有公共IP地址,并且我打开了群集通讯的端口(2377,7946,4798)。 我有不同的端口上的多个Web服务(3000,8080 …)我也有一个nginx反向代理,它是唯一的发布端口(80,443)的服务。 我将有一个弹性的IP连接到代理节点,并在该IP地址* .mydomain.com上的Alogging。 所以我的服务将在service1.mydomain.com等访问… 这里有安全问题吗? 导致我的所有节点都有公共IP和暴露的群集端口? 即使他们不发布服务端口? 我应该使用AWS VPC吗? 似乎与swarmnetworkingredondant 谢谢,

使用普罗米修斯的容器度量

我在我的集​​群以及cAdvisor和Grafana上部署了Prometheus。 它运作非常好。 我在Grafana的用户界面上获得了所有需要的数据。 我开始使用Prometheus Java API来使用这些数据。 例如,获取CPU使用情况,如果它有一定的价值将做一些事情。 Grafana上显示的是每个容器的容器CPU使用情况。 现在我想尽可能用Java API来获取这些信息(或者如果没有的话)。 但是,当然,PromQL查询不能从Java程序中使用(从我的尝试,但我可能是错的)。 我想到了几种方法: 克隆cAdvisor项目,直接执行我想在Go中执行的操作 使用docker stat命令创build一个bash脚本,它将使我得到与容器和CPU使用率相关的信息 或者也许实际上有一种方法来发送PromQL查询。 例如,我们通过Java或Prometheus接口获取其名称: 例如: node_cpu会给我一些数据。 但是如果我想要更精确的东西,我需要发送一个请求,例如通过Java无法实现的irate(node_cpu{job="prometheus"}[5m]) 。 有没有办法让我得到更精确的指标?

aws中的docker swarm在重启后无法访问

我有一个Docker swarm,由一个主节点和两个工作节点组成,在AWS中运行,每天晚上我停止swarm集群运行的所有实例,并在第二天早上再次启动它们。 问题是,我每天都注意到几个服务无法启动,并且群体必须重新创build它们(这只是出于某种原因,总是在worker 1上发生),我不能ssh到worker1或worker2上运行的任何服务我没有安排master任何服务)。 当服务失败时,我得到这个错误: task: non-zero exit (0): No such container: containerName PS ec2实例只有一个根ebs我正在运行它的群体。 另外,当我停止worker1时,swarm会调度worker2中的所有服务,但是我仍然无法从群集外对其进行ssh调用。 在我再次启动worker1并在worker1和worker2之间手动重新分配服务之后,一切正常( I can ssh to the containers but only the new ones created through the update command old ones still wont be accessible) 。 我用来重新分配的命令是: docker service update –force containerName 结果 unable to pin image registry:myImage to digest: Get […]

许多PHP容器的Docker体系结构

我想知道你们如何deviseDocker来处理许多容器,每个容器运行不同的PHP代码。 基本上,系统上的每个用户都有自己的PHP代码,代码是不一样的。 想想像每个用户有自己的WordPress的网站。 (我认为)这意味着我需要为每个PHP容器安装不同的目录。 我初步想到的是为每个用户创build一个单独的服务。 这样,当http请求进来时,我可以使用主机头来find正确的服务来处理请求。 但是如果系统有1000个用户,那么就意味着拥有1000个服务 – 对于Docker来说,这看起来非常重要。 我看到一些人在运行1000个容器,但我不确定这么多的服务。 另一件事是我想为每个用户build立一个单独的networking – 这意味着1000个networking – 这是可行的? 我在这里走错路了吗?

Docker swarm – 容器绑定到ethx IP

我真的是一个docker新手,请原谅我缺乏指定问题的技能。 现在我遇到了一个生产场景,我想用Docker Swarm将不同的机器连接在dockernetworking中。 但每个主机可能有多个物理网卡(eth0,eth1等),因此IP不同, 每次我编排系统时,我想为每个容器初始化一个新的networking,让容器使用网卡IP中的特定IP。 但是每个容器使用每个NIC的IP,而不是在docker0下。 我已经阅读了Docker 17.06ce上的文档 ,提到使用DOCKER-USER标志,但是我不太明白这一点。 使用主机networking对我来说不是最好的select,因为它将占用全球的端口。 提前致谢。

禁用swarmpipe理器重新创build新的容器

我有一个由一名经理和三名工人组成的群组。 当其中一名工人重新启动时,pipe理人员会将失败的工人的容器重build为其他健康的工人。 我明白,这是如何设置群体操作,但我想禁用此function,所以经理不会重新从重新启动的工人的容器,而是等待工人再次回来,并保留在那里的容器。

本地Windows Server 2016 VM中的Spawn Docker EE Swarm服务

我想演示在本地Windows Server 2016虚拟机中运行带有简单Asp.Net Core网站的Docker群集。 该网站运行在端口5000.但是,当我初始化群体并添加服务,我无法访问指定的端口上的网站地址。 导航到http:// localhost:5000 , http: //127.0.0.1 :5000 ,或任何服务容器IP不会显示该网站。 为什么这是一个群体的情况? Windows防火墙已禁用。 Dockerfile.build FROM microsoft/aspnetcore:2.0.0-nanoserver WORKDIR / COPY /bin/Release/netcoreapp2.0/win7-x64/publish ./ EXPOSE 5000 ENTRYPOINT ["AspNetCoreHelloWorld.exe", "–urls", "http://*:5000"] 初始化群 docker swarm init –advertise-addr 127.0.0.1:2377 –listen-addr 0.0.0.0:2377 创build一个服务 docker service create –name helloworld –publish 5000:5000 –replicas 3 myazureregistry.azurecr.io/aspnetcore-hello-world:v2 我可以确认该服务在我的节点中复制了三个实例。 为什么端口列是空的,即使我映射端口5000? docker service ps helloworld ID NAME […]

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”。 […]

Docker群集容器无法访问互联网

我正在尝试在AWS中设置swarm群集,但主机中的容器无法访问互联网。 通过IP地址parsing或直接连接的ping命令不能在容器内工作。 在创build这张票之前,我看了一下这个问题,但是我不认为CIDR在我的情况下是重叠的。 我有以下configuration: Public Subnet CIDR : 10.2.1.0/24 Namespace server inside this is :10.2.0.2 Ingress overlay network –> 10.255.0.0/16 docker_gwbridge –> 172.18.0.0/1 我也尝试创build新的覆盖(192.168.1.0/24)和docker_gwbridge(10.11.0.0/16)networking没有运气。 我正在使用这些选项创build服务(删除挂载和env参数): docker service create –publish 8098:8098 <Imagename> 请注意当我自己创build覆盖networking时,我正在添加选项–network my-overlay以及create命令。 任何指针,我可能会错过/做错了什么? 编辑1添加更多信息 下面是容器的检查,当我不创build一个新的覆盖networking,并使用默认的: "NetworkSettings": { "Bridge": "", "SandboxID": "eb***", "HairpinMode": false, "LinkLocalIPv6Address": "", "LinkLocalIPv6PrefixLen": 0, "Ports": { "5005/tcp": null, "8080/tcp": null }, […]

错误:Swarm部署失败,代码在docker cloud + azure中失败

我使用docker for windows我使用这个教程(video)来使用docker swarm与azure我做了所有的步骤 启用docker的azure色 – 图像 创build一个群 – 图像 configuration它 – 图像 设置我的SSH密钥 – 图像 我保存并等待,经过这么多的时间,我在我的群集日志上得到这个错误 Deployment state: Running Deployment state: Running Deployment state: Running Deployment state: Running Deployment state: Running Deployment state: Running Deployment state: Running Deployment state: Running Deployment state: Running Deployment state: Running Deployment state: Failed ERROR: Swarm deployment failed with […]