部署 Docker 容器集群的问题

2019-11-28 15:20:56 +08:00
 jaylee4869
公司现在后端是 Spring Cloud 微服务,一共 8 个服务,其中一个是用户服务,我尝试把用户服务在同一主机上运行两个容器,很好的实现了负载均衡,但是把这个服务换到另一台局域网主机,却失败了。
想问问如何将容器做不同主机的集群
6160 次点击
所在节点    Docker
10 条回复
hopingtop
2019-11-28 15:39:06 +08:00
试着看看 docker 容器选择的网络模式。
如果方便,也可以贴一下你的 Dockerfile,记得删除私密信息
jaylee4869
2019-11-29 15:40:28 +08:00
@hopingtop
-net=host 是吗?我试过但是 timeout 了。。。
Dockerfile 现在是这样的:

FROM openjdk:8-jdk-alpine
RUN echo "Asia/Shanghai" > /etc/timezone
VOLUME /tmp
ARG JAR_FILE
COPY ${JAR_FILE} app.jar
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
hopingtop
2019-11-29 15:57:09 +08:00
@jaylee4869
在 docker Client: Docker Engine - Community
Version: 18.09.2
此版本下
设置网络模式是 docker run --network=host //Connect a container to a network (default "default")
多数网络访问不通的问题,在 linux 环境设置 host 网络模式就能解决
建议用编排工具启动 docker, 比如简单的 docker-compose
jaylee4869
2019-11-29 15:58:12 +08:00
@hopingtop 可是这样子-p 映射的端口会失效
jaylee4869
2019-11-29 16:26:11 +08:00
@hopingtop 本地测试报错:
connection timed out: /192.168.65.3:8233
但是另一个负载均衡( 192.168.20.49:8233 )的服务没有问题
jaylee4869
2019-11-29 16:30:15 +08:00
而实际上我部署的真实局域网 ip 是 192.168.20.21 ,并不是 192.168.65.3
jaylee4869
2019-11-29 16:37:03 +08:00
@hopingtop 好像找到问题了,mac 下面 docker run --net=host 容器的 ip 和 mac 机器的 ip 不一致,但是 linux 机器是一致的。。。
jaylee4869
2019-11-29 16:38:23 +08:00
hopingtop
2019-12-02 10:00:51 +08:00
@jaylee4869 如果我没有记错,macOS 下,docker host 网络模式是不生效的。
因为在 mac 下 docker 是跑在 macOS 下的虚拟机内部
在 macOS 下面最好用 bridge 模式
zhuyuefeng
2019-12-03 09:55:12 +08:00
简单使用可以先试试 docker swarm 在多主机间进行调度

如果想要深入使用、业务需求等 上 k8s ?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/623985

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX