我已经按照示例开始叠加,我有一个简单的查询.是否可以使用覆盖使用多主机网络功能而无需创建swarm cluster?我不想使用像编织等第三方插件.我想使用docker本地网络支持.
我已经3.16+ kernel运行RHEL和docker 1.9.
也许我错过了什么,但我制作了一个本地的码头图片.我有一个3节点的群集并且正在运行.两名工人和一名经理.我使用标签作为约束.当我通过约束向其中一个工作人员启动服务时,如果该图像是公开的,则它可以完美地工作.
也就是说,如果我这样做:
docker service create --name redis --network my-network --constraint node.labels.myconstraint==true redis:3.0.7-alpine
Run Code Online (Sandbox Code Playgroud)
然后,redis服务被发送到其中一个工作节点并且功能完备.同样,如果我在没有约束的情况下运行本地构建的映像,因为我的经理也是一个工作者,它会被安排到管理器并且运行得非常好.但是,当我添加约束时,它在工作节点上失败,从docker service ps 2l30ib72y65h我看到:
... Shutdown Rejected 14 seconds ago "No such image: my-customized-image"
Run Code Online (Sandbox Code Playgroud)
有没有办法让工作人员可以访问群集管理器节点上的本地图像?它是否使用可能未打开的特定端口?如果没有,我应该做什么 - 运行本地存储库?
我在用户创建的覆盖网络中的Docker Swarm中运行nginx容器作为服务.两者都创建:
docker network create --driver overlay proxy
docker service create --name proxy --network proxy -p 80:80 nginx
Run Code Online (Sandbox Code Playgroud)
当通过浏览器访问nginx站点时,在nginx访问日志远程地址被记录为10.255 ...格式化地址,我认为是Swarm负载均衡器地址.问题是如何知道/记录访问站点的最终客户端的地址而不是负载均衡器地址.
我正在尝试研究如何在Docker中正确使用swarm模式.首先,我尝试在我的2台工作人员和经理机器上运行容器,而没有指定自定义网络(所以我使用默认的入口覆盖网络).但是,如果我使用入口网络,由于某种原因我无法解决tasks.myservice.
所以我尝试像这样配置自定义网络:
docker network create -d overlay elasticnet
Run Code Online (Sandbox Code Playgroud)
所以现在,当我bash进入其中一个容器时,我可以成功解决,tasks.myservice但是我无法再访问我在--publish外部创建的服务中定义的端口(我可以在使用入口网络时).
有没有办法:
使用入口网络并能够解析tasks.myservice或指向我所有服务容器的任何其他DNS记录?
或者,使用自定义网络,但--publish正确端口,以便我可以从外部访问它们?
编辑
这就是我创建服务的方式,
没有自定义网络:
docker service create --replicas 3 --label elasticsearch --endpoint-mode vip --name elastic -e ES_HOSTS="tasks.elastic" --publish 9200:9200 --mount type=bind,source=/tmp/es,destination=/usr/share/elasticsearch/config --update-delay 10s es:latest
Run Code Online (Sandbox Code Playgroud)
使用自定义网络:
docker service create --replicas 3 --network elasticnet --label elasticsearch --endpoint-mode vip --name elastic -e ES_HOSTS="tasks.elastic" --publish 9200:9200 --mount type=bind,source=/tmp/es,destination=/usr/share/elasticsearch/config --update-delay 10s es:latest
Run Code Online (Sandbox Code Playgroud) Are the consul and docker swarm configuration backends compatible?
My requirement is that I need to start N traefik containers as a docker service, where they get their dynamic frontends/backends via docker swarm but I also need all N of the traefik containers to use a shared ACME config (i.e. sourced from consul).
I'd like it so that Frontends/backends info should come from the docker swarm, while the ACME config should come from consul. As far as any other static …
在Docker Compose文件中,我可以使用短格式语法轻松发布一系列端口:
ports:
- "3000-3010:3000-3010/udp"
Run Code Online (Sandbox Code Playgroud)
但就我而言,我需要将这些端口作为"mode = host"来绕过群集覆盖网络.短格式语法无法表达,所以我需要使用长格式:
ports:
- published: "3000-3010"
target: "3000-3010"
protocol: udp
mode: host
Run Code Online (Sandbox Code Playgroud)
但是,似乎Docker不喜欢使用长格式语法指定范围,因为我在部署堆栈时遇到了错误:
services.test.ports.0.target必须是整数
有没有办法做到这一点(通过将范围中的每个端口指定为长格式除暴力之外)?
我已经基于Ubuntu 16.04创建了一个docker镜像,并且具有运行MPI所需的所有依赖项.
它在docker-hub上公开:https://hub.docker.com/r/orwel84/ubuntu-16-mpi/
我用这个图像来创建一个MPI容器.我还可以编译一个简单的mpi-hello-world.c(它位于容器内)并用mpirun运行它.
这些是我使用的步骤,(如果你安装了Docker,你也可以重现它们):
docker run -it orwel84/ubuntu-16-mpi bashmpirun -np 4 --allow-run-as-root ./mpi_hello_world你会看到输出:
Hello world from processor 6f9b11cef939, rank 0 out of 4 processors
Hello world from processor 6f9b11cef939, rank 1 out of 4 processors
Hello world from processor 6f9b11cef939, rank 2 out of 4 processors
Hello world from processor 6f9b11cef939, rank 3 out of 4 processors
Run Code Online (Sandbox Code Playgroud)
题:
现在所有上述四个mpi进程都在一个容器内运行.
如何在单个主机上使用mpirun在多个容器上运行?还有我如何使用Docker swarm在swarm的多个节点上运行?
请帮忙.谢谢.
我正在使用docker-compose.yml在具有树莓派集群的 docker swarm 中部署服务。我的服务需要访问 raspberry pi GPIO 并且需要特权模式。我正在使用 docker 18.02 版和 docker-compose 3.6 版。当我部署堆栈时,我收到以下消息并且服务未部署:“ Ignoring unsupported options: privileged”。有小费吗?下面是我的docker-compose.yml文件
version: '3.6'
networks:
swarm_network:
driver: overlay
services:
service1:
image: localrepo/img1:v0.1
privileged: true
deploy:
mode: replicated
replicas: 1
placement:
constraints:
- node.hostname == home-desktop
ports:
- published: 8000
target: 8000
mode: host
networks:
swarm_network:
service2:
image: localrepo/img1:v0.1
privileged: true
deploy:
mode: replicated
replicas: 1
ports:
- published: 7000
target: 7000
mode: host
networks:
swarm_network:
nodeViewer:
image: alexellis2/visualizer-arm:latest
ports: …Run Code Online (Sandbox Code Playgroud) 我在 2 个 docker 主机之间设置了 Macvlan 网络,如下所示:
ens192: 172.18.0.21创建 macvlan 网桥接口
docker network create -d macvlan \
--subnet=172.18.0.0/22 \
--gateway=172.18.0.1 \
--ip-range=172.18.1.0/28 \
-o macvlan_mode=bridge \
-o parent=ens192 macvlan
Run Code Online (Sandbox Code Playgroud)
创建 macvlan 接口 HOST_1
ip link add ens192.br link ens192 type macvlan mode bridge
ip addr add 172.18.1.0/28 dev ens192.br
ip link set dev ens192.br up
Run Code Online (Sandbox Code Playgroud)
ens192: 172.18.0.23创建 macvlan 网桥接口
docker network create -d macvlan \
--subnet=172.18.0.0/22 \
--gateway=172.18.0.1 \
--ip-range=172.18.1.16/28 \
-o macvlan_mode=bridge \
-o parent=ens192 …Run Code Online (Sandbox Code Playgroud) docker ×10
docker-swarm ×10
consul ×1
hadoop ×1
linux ×1
macvlan ×1
mpi ×1
networking ×1
nginx ×1
openmpi ×1
raspberry-pi ×1
traefik ×1