Tag: swarm mode

Docker swarm – docker.sock减速

我有一个docker群,我部署了3个我的微服务的副本。 微服务的工作是让客户端下载文件。 我目前正在testing大小高达3GB的大文件和多个并行下载。 我在17.06.1-ce 我的微服务在我的服务里面装有“docker.sock”。 这是我的mac-docker-vm上的相同的套接字 我有一个bash脚本,无论我在微服务或Mac上执行它,应该给我相同的输出(因为相同的套接字被安装在容器内)。 输出是3个IP地址。 脚本基本上只是运行“docker检查获取IP地址”。 这很好。 bash脚本使用docker命令,我认为它在内部使用docker.sock来处理这些命令。 问题描述 当我使我的微服务繁忙(我有不止一个正在运行的服务的副本),stream传输巨大的数据stream,说3个3GB的文件stream,docker袜子放慢我想。 我觉得这是因为当我发送一个下载stream请求,它命中REST控制器,控制器执行bash脚本,并坐在那里等待脚本完成。 为了validation我的理论,脚本是瓶颈,而不是“斯卡拉”,“过程”类,而这个瓶颈发生时,我执行我的笔记本电脑相同的bash脚本。 在stream媒体正在进行的过程中,脚本等待了一分多秒。 请记住,无论是从我的笔记本电脑执行脚本,还是从我的Scala代码(在微服务中)执行该脚本,都是使用相同的套接字(因为挂载了相同的docker.sock) 我如何进一步debugging,以确保我的理论是正确的,并绕过它? 我知道这是我写的代码库,以支持下载文件,但我可能会离开资源打开,使套接字行为不好? 我没有在CentOS Docker上testing过。 不知道Mac上的行为是否会保持不变

VSTS发行代理在树莓派

我想在Raspberry Pi上使用VSTS release agent,但是我没有在VSTS Agent GitHub Repo中看到任何表示可能的东西。 我的愿景是在Raspberry pi上构buildVSTS构build代理,将Docker镜像构build,打包并推送到DockerHub,然后将释放代理部署到Raspberry Pi Docker群集中。 有没有经验做这样的事情? 我没有结婚使用VSTS,如果有一个更好的方式来做到这一点,我没有想到。

如何使odoo从文件中读取admin_passwd?

我想让Odoo读取admin_passwd格式文件系统上存在的一个文件。 我的用例是这样的: 我在Docker群集模式群集上运行odoo:10.0容器实例,并希望使用docker机密共享必要的凭据。 例如, admin_passwd可以在/run/secrets/admin_passwd 。 Odoo支持这种types的configuration吗? 如果没有,请把一些点灯放在什么可以帮助我扩展Odoo并开发这样一个模块。 提前致谢!

Swarm:主机中的pipe理员+ VM中的Worker:工人中没有容器

我试图用docker swarm使用nginx容器部署一个CDN。 现在,我在主机上有pipe理员,而在使用docker-machine创build的VM上有一个工人: pierpaolo@pierpaolo-Lenovo-G580:~$ docker-machine create -d virtualbox worker1 Running pre-create checks… Creating machine… (worker1) Copying /home/pierpaolo/.docker/machine/cache/boot2docker.iso to /home/pierpaolo/.docker/machine/machines/worker1/boot2docker.iso… (worker1) Creating VirtualBox VM… (worker1) Creating SSH key… (worker1) Starting the VM… (worker1) Check network to re-create if needed… (worker1) Waiting for an IP… Waiting for machine to be running, this may take a few minutes… […]

docker群模式的反向代理

我有一个群集,一个经理和一个工人,我有多个服务这些正在运行这个群集不同的端口。 所以我想要将多个域映射到这些服务。 像nginx虚拟主机一样 例; x.com => xservice:8080 y.com => yservice:8081 z.com => zservice:8082 我听说https://traefik.io/解决了这个问题。 但我不喜欢这个。 这个问题的最佳做法是什么?

在swarm容器和主机之间进行通信

这是一个关于Docker的初学者问题。 我在一台主机上运行一个基本的群体作为testing环境。 有11个不同的容器在运行,都通过主机进行通信(现在我正在input这个文字的机器)。 只有1个物理机器,11个容器。 在我的物理机器的本地主机上运行一个MongoDB服务器。 我希望能够在我的群集中的容器内与这个MongoDB服务器进行通信。 我需要configuration什么才能使这个工作? 关于Docker的联网有很多信息。 我通常使用: docker run –net="host" –rm -ti <name_of_image> 一切正常。 但是,只要我运行一个群(而不是一个容器),我似乎无法弄清楚如何将所有东西连接在一起,所以我可以和我的MongoDB服务器通信。 我意识到这可能是一个非常基本的问题。 我也很欣赏,我可能需要阅读更多的群networking文档来了解这一点,但我不知道要看哪些文档。 似乎有多种不同的方式来将我的容器和物理机器联网在一起。 任何信息都将非常感谢,即使它只是一些你认为会有启发性的文档的链接。 干杯。

在重新启动后,群集节点不能重新joinDocker群中的群集

下面是yaml用于创build由2个服务mariadb和mariadbSlave组成的MariaDB集群。 当我第一次启动服务时,群集大小为3,运行良好。 虽然手动停止容器运行mariadb服务后, docker swarm重新启动mariadb服务,但它不再是集群的一部分。 大小为1的新集群与大小为2的旧集群一起启动。如何使mariadb服务正确故障切换,以便在重新启动集群大小为3之后? 从MariaDB集群的文档中,成员资格由cluster_name确定,并且在两个服务中都是相同的名称。 提前致谢。 version: '2' services: mariadb: restart: always deploy: replicas: 1 image: ${DOCKER_REPOSITORY}hauptmedia/mariadb:10.1 command: – "–wsrep-new-cluster" networks: – default_network volumes: – /mariadb/maria.cnf:/etc/mysql/conf.d/maria.cnf environment: – CLUSTER_ADDRESS=gcomm:// – GALERA=On – REPLICATION_PASSWORD=test – NODE_NAME=masterNode – CLUSTER_NAME=cluster – MYSQL_ROOT_PASSWORD=test – MYSQL_DATABASE=test – MYSQL_USER=user – MYSQL_PASSWORD=test mariadbSlave: restart: always deploy: replicas: 2 image: ${DOCKER_REPOSITORY}hauptmedia/mariadb:10.1 […]

自动将etcd集群自configuration为Docker群集服务

我想find一种将etcd集群部署为Docker Swarm服务的方法,该服务可以自动configuration而不需要任何交互。 基本上,我想到了这个命令的精神: docker service create –name etcd –replicas 3 my-custom-image/etcd 我假设覆盖networking被configuration为安全的,并提供encryption和身份validation,所以我相信我不需要TLS,甚至不需要–auto-tls 。 不希望额外的头痛findconfiguration证书的方式,这可以在另一层上解决。 我需要一个唯一的名称为每个实例,但我可以从一个入口点脚本,将使用export ETCD_NAME=$(hostname –short) 。 问题是,我卡在初始configuration。 基于聚类指南有三个选项,但没有一个适合: DNS发现场景与我正在查找的距离最近,但此时Docker 不支持DNS SRVlogging发现。 我可以查找etcd ,我会得到我节点的容器的所有IP,但没有_etcd-server._tcplogging。 我不能自动构buildETCD_INITIAL_CLUSTER因为当我知道IP时,我不知道其他节点的名称,我不知道有什么方法可以解决这些问题。 (我不打算暴露Docker的API套接字的etcd容器为此。) 没有预先存在的etcd集群,并提供来自discovery.etcd.io的初始configurationURI是一种可能的解决方法,我感兴趣的不是这样做。 我的目标是“只从这个docker-compose.yml部署一个堆栈,它会自动做正确的事情,没有问题的问题”毫不费力的情况。 有什么我可以拉的技巧吗?

Docker Swarm模式路由网格vs linkerd

Docker群体模式路由网格是一个内置的链接路由网格的替代品吗? 换句话说,如果有一个开箱即用的解决scheme,还有什么理由去研究linkerd吗?