我在具有 1 个主节点和 3 个工作节点的 docker swarm 集群上启动了 Flask API 服务。我已经使用以下 docker compose 文件部署了任务,
version: '3'
services:
xgboost-model-api:
image: xgboost-model-api
ports:
- "5000:5000"
deploy:
mode: global
networks:
- xgboost-net
networks:
xgboost-net:
Run Code Online (Sandbox Code Playgroud)
我使用以下 docker swarm 命令部署了该任务,
docker stack deploy --compose-file docker-compose.yml xgboost-swarm
Run Code Online (Sandbox Code Playgroud)
但是,该任务仅在我的主节点上启动,而不在任何工作节点上启动。
$ docker service ls
ID NAME MODE REPLICAS IMAGE
pgd8cktr4foz viz replicated 1/1
dockersamples/visualizer
twrpr4av4c7f xgboost-swarm_xgboost-model-api global 1/4 xgboost-model-api
xxrfn1w7eqw6 dockercloud-server-proxy global 1/1 dockercloud/server-proxy
Run Code Online (Sandbox Code Playgroud)
使用的 Dockerfile 在这里。任何关于为什么会发生这种行为的想法将不胜感激。
我有两组服务(容器组)在两台不同的机器上运行。两组服务都是使用 docker-compose 文件声明的。目前,在每个 docker-compose 文件中,我都包含一个桥接网络。这两组服务通过明确提及每台机器的 IP 地址来相互通信。
如果我让这两个 Docker 服务集通过覆盖网络相互通信,而不是像我现在那样通过硬编码 IP 地址来让每个服务集相互通信,这会减少网络延迟吗?换句话说,会提高这两个服务之间的通信性能吗?
如果上一个问题的答案是肯定的,那么我可以在不使用 docker swarm 的情况下在这两台机器之间定义一个覆盖网络吗?另外,我可以在 docker-compose 文件中声明这个 docker-swarm 网络吗?
如果您有 .yaml 配置文件或命令行代码片段可以完成我想要的操作,我们将不胜感激。
我正在尝试部署具有单个复制服务的三个主机节点的 Docker Swarm,并在其前面放置一个 HAProxy。我希望客户端能够通过 SSL 进行连接。
我的docker-compose.yml:
version: '3.9'
services:
proxy:
image: haproxy
ports:
- 443:8080
volumes:
- haproxy.cfg:/usr/local/etc/haproxy/haproxy.cfg
deploy:
placement:
constraints: [node.role == manager]
networks:
- servers-network
node-server:
image: glusk/hackathon-2021:latest
ports:
- 8080:8080
command: npm run server
deploy:
mode: replicated
replicas: 2
networks:
- servers-network
networks:
servers-network:
driver: overlay
Run Code Online (Sandbox Code Playgroud)
我的haproxy.cfg(基于官方示例):
# Simple configuration for an HTTP proxy listening on port 80 on all
# interfaces and forwarding requests to a single backend "servers" …Run Code Online (Sandbox Code Playgroud) 我正在开发一个项目,该项目使用 Raspberry Pi 作为工作节点,使用我的笔记本电脑作为主节点。我希望从笔记本电脑控制容器的部署,但我希望容器仅在工作节点上运行(这意味着主节点上没有容器)。我该如何使用 Docker Swarm 来做到这一点?
我想安装 minikube,在启动命令后出现以下错误文本:
\n minikube v1.26.1 on Ubuntu 22.04\n\xe2\x9d\x97 minikube skips various validations when --force is supplied; this may lead to unexpected behavior\n\xe2\x9c\xa8 Using the docker driver based on existing profile\n The "docker" driver should not be used with root privileges. If you wish to continue as root, use --force.\n If you are running minikube within a VM, consider using --driver=none:\n https://minikube.sigs.k8s.io/docs/reference/drivers/none/\n Tip: To remove this root owned cluster, run: sudo minikube delete\n Starting control plane node minikube in cluster minikube\n …Run Code Online (Sandbox Code Playgroud)