Tag: 群swarm

将在Docker群集中运行的Python应用程序生成的数据保存在Mysql数据库中

我想在两个树莓派上运行Docker中使用Swarm的Python应用程序的多个实例。 该应用程序与Mysql数据库进行通信。 我想保存从副本生成的所有数据在一个共同的数据库,但我不明白什么是最好的办法做到这一点。 我是否也应该为数据库使用docker,还是应该尝试使用保存在一台主机上的数据库? 任何build议将非常感激!

Docker swarm会协助我pipe理具有特定环境variables的容器吗?

基本上我需要能够使用特定的环境variables(一个帐户ID)启动容器。 我需要运行多个这样的容器(每个都有不同的帐户ID)。 我需要能够启动额外的容器,而不必停止现有的容器。 我也需要能够停止特定的容器。 所以就像一个dynamic的docker-composeconfiguration。 Docker是否能够协助上述function呢? 还有其他工具(Kubernetes也许?)吗? 否则,如果我使用docker-cli处理了这个问题,我将使用docker run传递相关的环境variables来启动容器,我需要确保一个容器不存在与这个环境variables,并重新启动容器存在。

Docker容器主机名

我想在启动期间设置docker容器主机名(HOSTNAME env var),这是在dockerfile的ENTRYPOINT中指定的.sh脚本: #!/bin/sh export HOSTNAME=something-$(hostname) java $JAVA_OPTS -jar /app.jar 我想要为jvm看到这个新的主机名。 我所得到的就是标准的docker主机名称: / # env HOSTNAME=04dbf311a3be 当我设置主机名手动使用上面的导出上面的容器启动后,一切正常。 一切正在使用组合堆栈文件在群集中运行。 编辑1:我没有这样做在容器build立,但在启动过程中 编辑2:要清楚,我有什么: DOCKER SWARM: CONTAINER1 HOSTNAME=391fa2c7e184 CONTAINER2 HOSTNAME=39123a43242asd4 CONTAINER3 HOSTNAME=123123123123 我想要的是: CONTAINER1 HOSTNAME=APPNAME-391fa2c7e184 CONTAINER2 HOSTNAME=APPNAME-123fa2c7e184 CONTAINER3 HOSTNAME=APPNAME-343fa345e184 并希望这在n-containers的启动过程中被自动设置 我如何尝试做到这一点: 我尝试在容器启动时调用start.sh文件(在dockerfile中指向ENTRYPOINT命令)中设置此项: #!/bin/sh export HOSTNAME=something-$(hostname) java $JAVA_OPTS -jar /app.jar 没有效果,HOSTNAME没有被改变

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上的行为是否会保持不变

如何在Docker Swarm中为Swarm集群中的特定容器启用JMX?

问题陈述:我需要通过JMX连接到Docker群服务中的特定容器。 服务没有暴露在任何端口上,所以我不能通过直接打开暴露端口上的docker基板来访问JMX。 另外,在服务暴露的情况下,群集负载平衡并不能保证我打哪个容器。

无法连接到Postgres的数据库 – docker群

我有困难通过IntelliJ连接到我的postgresql。 我正在使用这个docker-compose文件: version: '3' services: db: image: postgres environment: POSTGRES_DB: postgres POSTGRES_USER: postgres_user POSTGRES_PASSWORD: postgres_password PG_DATA: /var/lib/postgresql/data/pgdatai expose: – "5432" ports: – "5432" volumes: – /var/lib/postresql/db/ deploy: placement: constraints: – node.hostname == vmAPT1 我把这个命令放在里面: docker stack deploy –compose-file docker-compose.yml vmAPT1 当我使用: docker ps 我懂了: CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 31d1337a142c postgres:latest "docker-entrypoint…" […]

是否可以更改Virtualbox Docker Machine的IP地址?

默认情况下,在虚拟机上,创build的Docker-Machine将拥有IP地址192.168.99.100我想知道是否有方法来改变这个IP。 如果是的话,如果没有,那么为什么?

如何使用ES Docker镜像部署由多个主机组成的Elastic Search群集?

我想使用ES Docker镜像部署由不同主机组成的ES群集。 我遇到了这方面的一些材料,并能够在同一个主机上使用docker撰写ES集群。 但是,我不能使用docker撰写来部署由不同主机组成的ES群集。 我使用了以下链接供参考 – https://www.elastic.co/blog/docker-networking https://stefanprodan.com/2016/elasticsearch-cluster-with-docker/ https://discuss.elastic.co /吨/多elasticsearch-搬运工的容器-每一个主机/ 49989 以下是我在每台主机上使用的docker run命令。 ES在每台主机上启动,但主机无法join现有群集,即使我正在使用discovery.zen.ping.unicast.host。 在节点 – 1(与IP – 10.91.104.52),我启动容器与以下命令。 sudo docker run -p 9200:9200 \ – e "network.publish_host = 10.91.104.52" \ – e "cluster.name = mycluster" \ – e "discovery.zen.ping.unicast.hosts = 10.91.104.52,10.91.104.120" \ – e "dicovery.zen.minimum_master_nodes=1" 在节点2上(ip-10.91.104.120) sudo docker run -p 9200:9200 \ – e […]

Docker服务映像path

我想知道docker service命令。 我创build了一个docker群,我有一个经理和三个工人。 安装Prometheus,ELK和Glassfish三项服务: 所有的服务都在运行,这是非常好的,但我想知道我可以如何部署war文件到Glassfish环境。 我在哪里可以find/ autodeploy文件夹? 它不在/usr/local/只是为了说清楚。 我是否需要克隆Dockerhub中的glassfish dockerfile ,创build自己的存储库,然后编写一个COPY CMD来部署文件? 或者甚至有可能在服务上部署? 这可能是一个简单的答案,但我一直在WWW周围冲浪,我没有设法find任何有用的问题。 提前致谢

Docker AWS证书pipe理器SSL NodsJS失败

我已经使用Docker提供的Cloudformation模板创build并部署了Docker群集NodeJS应用程序。 我的NodeJS应用程序将端口80和443映射到端口3000。 我可以确认,弹性负载均衡器有端口80和443的收听者。 为什么我可以在http上成功访问我的应用程序,而不是在https上? 例如: http: //app.myapp.com/api/health成功响应,但不是https://app.myapp.com/api/health