草庐IT

hadoop - 如何在 Docker Swarm 中设置 Hadoop?

我希望能够在Docker中启动一个Hadoop集群,将Hadoop节点分布到不同的物理节点,使用swarm.我找到了允许我在docker容器中运行hadoop的sequenceiq镜像,但这不允许我使用多个节点。我也看过cloudbreak项目,但它似乎需要一个openstack安装,这似乎有点矫枉过正,因为在我看来,仅swarm就足以满足我们的需要。我还找到了thisStackoverflowquestion+answer依赖weave,需要sudo权限,我们的管理员不会给所有人。有没有办法让启动hadoop集群归结为通过swarm启动几个容器? 最佳答案

带有自定义网络的 Docker swarm

我正在尝试研究如何在Docker中正确使用swarm模式。首先,我尝试在我的2台工作人员和经理机器上运行容器,而不指定自定义网络(所以我使用默认的入口覆盖网络)。但是,如果我使用入口网络,由于某种原因,我无法解析tasks.myservice。所以我尝试像这样配置自定义网络:dockernetworkcreate-doverlayelasticnet所以现在,当我bash进入其中一个容器时,我可以成功解析tasks.myservice但我无法再访问我在我的在外部--publish下创建服务(我可以在使用入口网络时)。有没有办法:使用入口网络并能够解析tasks.myservice或任何

docker - 是否可以同时使用 docker swarm 和 consul 后端进行 traefik 配置?

consul和dockerswarm配置后端是否兼容?我的要求是我需要启动N个traefik容器作为docker服务,它们通过dockerswarm获取动态前端/后端,但我还需要所有N个traefik容器使用共享的ACME配置(即来自领事)。我希望前端/后端信息应该来自dockerswarm,而ACME配置应该来自consul。就任何其他静态traefik配置而言,如果它来自静态文件,我很好,但这对于ACME.json作为文件通过volumne确实不起作用,因为如何管理写入锁定?我看到的唯一选择是consulKV商店。我看到的问题是这种设置是不可能的?Traefik版本v1.3.0构建

nginx - 在 Docker Swarm 1.12 访问服务时记录客户端的 "real"IP 地址

我在用户创建的覆盖网络内的DockerSwarm中将nginx容器作为服务运行。两者都使用:dockernetworkcreate--driveroverlayproxydockerservicecreate--nameproxy--networkproxy-p80:80nginx通过浏览器访问nginx站点时,在nginx访问日志中,远程地址记录为10.255...格式化地址,我假设是Swarm负载均衡器地址。问题是如何知道/记录访问站点的最终客户端的地址,而不是负载均衡器的地址。 最佳答案 很好!,大多数人分析nginxacce

docker - 在 Docker Swarm 模式中使用副本的主要优势是什么?

我很难理解DockerSwarm模式中replica实例的概念。我听说这是一项有助于提高可用性的功能。但是,即使为服务定义了1个replica,如果一个节点出现故障,Docker也会自动在另一个节点上启动一个新任务,这也提供了高可用性。那么对于任意服务而言,拥有3个replica实例而不是1个实例有什么好处?我的假设是,有了更多的副本,Docker在发生故障时花费更少的时间在另一个节点上创建新实例,这有助于提高性能。这是正确的吗? 最佳答案 WhatMakesaSystemHighlyAvailable?Oneofthegoalso

Docker Swarm、Kubernetes 和 Compose

我刚刚听说在未来的Docker版本中支持原生Kubernetes。我以前从未使用过Kubernetes,所以我开始阅读它。但我有点困惑:Kubernetes被描述为编排工具,也是Dockersswarmmode的替代品。那么如果Kubernetes做编排,它也是docker-compose的替代品吗?或者可以组合和Kubernetes一起使用吗?一些具体问题:假设我想(或必须)使用Kubernetes:我有一个包含多个微服务的docker-compose文件,但它们在单台机器上作为独立应用程序运行。它可以(或应该)被Kubernetes取代吗?我有一个docker-compose文件,

Docker Swarm 部署 - 等待服务/容器出现

我有一个工作群设置和滚动更新部署。因为我必须在部署后执行一些任务(比如数据库迁移),所以我向堆栈添加了一个“管理器”服务。此服务仅限于节点管理器-所以我总有办法找到它。要获取当前的容器ID,我使用以下命令:exportMANAGER_ID=$(docker--tlsps--filterlabel=com.docker.swarm.service.name=projectname-php-manager-q)这有效...但在部署期间无效。stackdeploy很快就会退出(在容器启动之前),甚至在管理器容器更新之前。在获取containerID之前,我还添加了一个sleep10,但结果各

docker - docker swarm token 存储在哪里?

我使用新生成的token创建了一个docker-machineswarm集群,该token存储在环境变量中。环境变量只对当前session有效,之后会被删除。现在我想在同一个集群中添加一个新的docker-machine,但是我找不到需要的token。如何找出活跃的dockerswarm使用的token? 最佳答案 为后代回答,因为我对其他答案没有运气。运行Docker17.05。Docker现在可以列出工作人员和管理人员的加入token。$dockerswarmjoin-tokenmanagerToaddamanagertothi

docker - docker swarm 中的 Redis 哨兵故障转移配置

说明我正在尝试在dockerswarm中创建一个Redis集群。我正在使用bitnami-redis-docker用于创建我的容器的图像。浏览bitnami文档,他们总是建议使用1个主节点,而不是阅读Redis文档,该文档指出应该至少有3个主节点,这就是为什么我不知道哪个是正确的。鉴于所有bitnami从属默认情况下都是只读的,如果我在其中一个swarm领导节点中仅设置一个主节点,并且如果失败,我相信哨兵会尝试将不同的从redis实例提升为主节点,但鉴于它是只读的,所有的写操作都会失败。如果我将其更改为使主redis实例为global意味着它将在swarm中的所有可用节点中创建,在这种

docker - 部署注册表时如何在 docker swarm 中解决此问题 "no suitable node (scheduling constraints not satisfied on 1 node)"?

我在具有2核4GBramCentos的虚拟机中有一个dockerswarm。在集群中,当我部署docker私有(private)注册表(注册表2.6.4)时,它会永远显示服务状态为pending。我用了dockerserviceps>当我使用dockerinspect>进行检查时在消息中我得到了这个“没有合适的节点(1个节点不满足调度约束)”。我尝试了服务重启和重新部署。如何解决这个问题? 最佳答案 当compose文件中定义的节点标签与实际节点中定义的节点标签不匹配时,我经常遇到这个问题,要么是因为我设置了错误的标签(例如拼写错误