linux - 如何使用 docker swarm 扩展具有多个暴露端口和多个卷的应用程序?

标签 linux docker autoscaling docker-swarm docker-swarm-mode

我有一个基于 Java 的应用程序(Jboss 版本 6.1 社区),它的流量很大。现在我想使用 docker 和 docker-swarm 迁移此应用程序部署以进行集群。

场景

我的应用程序需要两个从 docker 容器公开的端口,一个是 Web 端口(即 9080),另一个是数据库连接端口(即 1521),主机系统上安装的每个容器都有一些日志目录之类的东西。

简单的 Docker 示例

docker run -it -d --name web1 -h "My Hostname" -p 9080:9080 -p 1521:1521 -v /home/web1/log:/opt/web1/jboss/server/log/ -v /home/web1/license:/opt/web1/jboss/server/license/ MYIMAGE

Docker 与 Swarm 示例

docker service create --name jboss_service --mount type=bind,source=/home/web1/license,destination=/opt/web1/jboss/server/license/ --mount type=bind,source=/home/web1/log,destination=/opt/web1/jboss/server/log/ MYIMAGE

现在,如果我将上述服务扩展/复制到 2 或 3,它将绑定(bind)哪个主机端口以及它将为新创建的容器绑定(bind)哪个挂载目录??

任何人都可以帮助我了解规模和复制服务在这种情况下的工作方式吗?

我还经历了 --publish--name global 但对我的情况没有任何帮助。

谢谢!

最佳答案

支持有状态容器在 Docker 世界中仍不成熟。 我不确定 Docker Swarm 是否可行(如果我想知道的话)并且这不是一个简单的问题。

我建议您查看最新版本的 Kubernetes 中的 Statefulset 功能:

它支持在放大事件中为每个容器创建一个唯一的卷。至于端口处理,它是实现容器负载平衡的 Kubernetes 标准服务功能的一部分。

关于linux - 如何使用 docker swarm 扩展具有多个暴露端口和多个卷的应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41849139/

相关文章:

amazon-web-services - AWS Ec2 - 跨越多个子网/可用区的启动模板

c - make64 high32 low32 在 Mac OS/Linux 上的功能

linux - 使用 Linux 进行 pdf 嵌入的高效图像压缩

Linux - 安全地杀死 apache 拥有的一些进程

linux - 如何查找和停止/终止从 shell 脚本启动的进程?

kubernetes - Kubernetes 如何计算 HPA 的 CPU 利用率?

docker - Pachyderm管道​​无法提取Docker镜像

oracle - 是否可以在 Docker 中安装 gopkg.in 包?

java - 如何在docker中运行maven selenium项目(Maven + Selenium + java + TestNg + docker)

amazon-web-services - AWS AutoScaling CoolDown 组件