标签: docker-swarm

如何在Docker Swarm中设置Hadoop?

我希望能够在Docker中启动Hadoop集群,使用swarm将Hadoop节点分发到不同的物理节点.

我找到了sequenceiq图像,它允许我在docker容器中运行hadoop,但这不允许我使用多个节点.我也看了一下cloudbreak项目,但似乎需要一个openstack安装,这看起来有点矫枉过正,因为在我看来,仅仅swarm应该足以满足我们的需求.

此外,我发现这个 Stackoverflow问题+答案依赖于编织,这需要sudo权利,我们的管理员不会给每个人.

有没有一个解决方案,以便启动hadoop集群归结为通过swarm启动几个容器?

hadoop docker docker-swarm

8
推荐指数
1
解决办法
1565
查看次数

在docker中使用覆盖使用多主机网络功能需要swarm

我已经按照示例开始叠加,我有一个简单的查询.是否可以使用覆盖使用多主机网络功能而无需创建swarm cluster?我不想使用像编织等第三方插件.我想使用docker本地网络支持.

我已经3.16+ kernel运行RHEL和docker 1.9.

linux networking docker docker-swarm

8
推荐指数
1
解决办法
3093
查看次数

Docker:Swarm工作节点找不到本地构建的图像

也许我错过了什么,但我制作了一个本地的码头图片.我有一个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 docker-swarm

8
推荐指数
1
解决办法
8385
查看次数

访问服务时,在Docker Swarm 1.12中记录客户端的"真实"IP地址

我在用户创建的覆盖网络中的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负载均衡器地址.问题是如何知道/记录访问站点的最终客户端的地址而不是负载均衡器地址.

load-balancing nginx docker docker-swarm

8
推荐指数
2
解决办法
4518
查看次数

Docker群集与自定义网络

我正在尝试研究如何在Docker中正确使用swarm模式.首先,我尝试在我的2台工作人员和经理机器上运行容器,而没有指定自定义网络(所以我使用默认的入口覆盖网络).但是,如果我使用入口网络,由于某种原因我无法解决tasks.myservice.

所以我尝试像这样配置自定义网络:

docker network create -d overlay elasticnet
Run Code Online (Sandbox Code Playgroud)

所以现在,当我bash进入其中一个容器时,我可以成功解决,tasks.myservice但是我无法再访问我在--publish外部创建的服务中定义的端口(我可以在使用入口网络时).

有没有办法:

  1. 使用入口网络并能够解析tasks.myservice或指向我所有服务容器的任何其他DNS记录?

  2. 或者,使用自定义网络,但--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)

docker docker-swarm docker-networking

8
推荐指数
1
解决办法
905
查看次数

Is a traefik config with both docker swarm and consul backend possible?

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 consul docker-swarm traefik

8
推荐指数
1
解决办法
1560
查看次数

如何使用Docker Compose文件发布带有'mode = host'的端口范围?

在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必须是整数

有没有办法做到这一点(通过将范围中的每个端口指定为长格式除暴力之外)?

docker docker-compose docker-swarm

8
推荐指数
1
解决办法
1406
查看次数

将MPI与docker容器一起使用

我已经基于Ubuntu 16.04创建了一个docker镜像,并且具有运行MPI所需的所有依赖项.

它在docker-hub上公开:https://hub.docker.com/r/orwel84/ubuntu-16-mpi/

我用这个图像来创建一个MPI容器.我还可以编译一个简单的mpi-hello-world.c(它位于容器内)并用mpirun运行它.

这些是我使用的步骤,(如果你安装了Docker,你也可以重现它们):

  1. docker run -it orwel84/ubuntu-16-mpi bash
  2. (在容器的外壳上) mpirun -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的多个节点上运行?

请帮忙.谢谢.

mpi openmpi docker docker-compose docker-swarm

8
推荐指数
1
解决办法
4639
查看次数

docker 中的特权模式组合成一个群

我正在使用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)

raspberry-pi docker docker-compose docker-swarm

8
推荐指数
1
解决办法
2万
查看次数

容器内的 Docker Macvlan 网络无法连接到自己的主机

我在 2 个 docker 主机之间设置了 Macvlan 网络,如下所示:

主机设置:HOST_1 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)

主机设置:HOST_2 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 docker-swarm macvlan

8
推荐指数
3
解决办法
9655
查看次数