标签: docker-swarm-mode

在一个节点上部署docker堆栈(共同调度容器,如docker swarm)

我知道docker-swose与docker-swarm(现在是遗留的)能够在一个节点上共同调度一些服务(使用依赖性过滤器,如链接)

我想知道使用现代docker引擎群模式和Docker 1.13中引入的新堆栈部署是否可以实现这种协同调度

在docker-compose文件版本3中,在群集中部署堆栈时会说链接被忽略,因此显然链接不是解决方案.

我们有一堆服务器来运行批量短期运行的作业,它们之间的网络速度不是很高.我们希望在一台服务器上运行每个批处理作业(由多个容器组成),以避免网络开销.这个功能是在docker stack或docker swarm模式下实现的,还是我们应该使用传统的docker-swarm?

此外,我找不到放置策略中与另一个容器的共同调度.

docker docker-compose docker-swarm docker-swarm-mode

6
推荐指数
1
解决办法
1022
查看次数

如何在Docker容器中配置rabbitmq.config?

我正在使用官方的RabbitMQ Docker镜像(https://hub.docker.com/_/rabbitmq/)

rabbitmq.config在运行后尝试编辑容器内的文件

docker exec -it <container-id> /bin/bash

但是,这似乎对容器中运行的rabbitmq服务器没有影响.由于Docker启动了一个全新的实例,因此重启容器显然没有帮助.

所以我假设配置rabbitmq.configDocker容器的唯一方法是在容器开始运行之前设置它,我可以部分地使用图像支持的环境变量.

遗憾的是,环境变量并不支持所有配置选项.举例来说,我想设置{auth_mechanisms, ['PLAIN', 'AMQPLAIN', 'EXTERNAL']}rabbitmq.config.

然后我找到了RABBITMQ_CONFIG_FILE环境变量,这应该允许我指向我想用作conifg文件的文件.但是,我试过以下没有运气:

docker service create --name rabbitmq --network rabbitnet \
-e RABBITMQ_ERLANG_COOKIE='mycookie' --hostname = "{{Service.Name}}{{.Task.Slot}}" \
--mount type=bind,source=/root/mounted,destination=/root \
-e RABBITMQ_CONFIG_FILE=/root/rabbitmq.config rabbitmq
Run Code Online (Sandbox Code Playgroud)

默认rabbitmq.config文件包含:

[ { rabbit, [ { loopback_users, [ ] } ] } ]
Run Code Online (Sandbox Code Playgroud)

一旦它开始,它就在容器中

配置rabbitmq.configDocker容器内部的最佳方法是什么?

rabbitmq docker docker-swarm-mode

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

如何调查 Docker Swarm 模式关闭容器?

我们在 4 个节点上有 Docker Swarm 模式 (17.09.0-ce)。我们正在尝试使用docker stack deploy和部署 10 项服务docker-compose.yml。每个服务都有所需的内存和内存限制docker-compose.yml

一些服务被杀死:

$ docker service ps st_master_xwiki
ID                  NAME                    IMAGE                                         NODE                                      DESIRED STATE       CURRENT STATE          ERROR               PORTS
s900hx36b70d        st_master_xwiki.1       docker-stage.ipsoft.com/apollo-xwiki:master   dyn-10-140-175-140.rnd.cloud.ipsoft.com   Running             Running 3 hours ago
52gzwwyipky0         \_ st_master_xwiki.1   docker-stage.ipsoft.com/apollo-xwiki:master   dyn-10-140-175-123.rnd.cloud.ipsoft.com   Shutdown            Shutdown 3 hours ago
Run Code Online (Sandbox Code Playgroud)

容器日志没有任何内容:

# docker logs 0578be3e943d134ae71f38b8354d1b5319bcc8164502555844b5d046ba3dcd0f
Starting Jetty on port 4424, please wait...
Java HotSpot(TM) 64-Bit Server VM warning: ignoring option MaxPermSize=196m; support was removed in 8.0
2017-10-11 16:52:44.732:INFO::main: …
Run Code Online (Sandbox Code Playgroud)

docker docker-swarm-mode

6
推荐指数
0
解决办法
1264
查看次数

具有docker堆栈部署的主机环境变量

我想知道是否有办法使用从部署容器的主机获取的环境变量,而不是从docker stack deploy执行命令的位置获取的环境变量.例如,假设docker-compose.yml在三个节点Docker Swarm集群上启动了以下内容:

version: '3.2'
services:
  kafka:
    image: wurstmeister/kafka
    ports:
      - target: 9094
        published: 9094
        protocol: tcp
        mode: host
    deploy:
      mode: global
    environment:
      KAFKA_JMX_OPTS: "-Djava.rmi.server.hostname=${JMX_HOSTNAME} -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.rmi.port=1099"
Run Code Online (Sandbox Code Playgroud)

JMX_HOSTNAME应当从容器部署,不应该成为每个容器相同的值主机服用.有没有正确的方法来做到这一点?

docker docker-swarm docker-swarm-mode

6
推荐指数
2
解决办法
7375
查看次数

Docker Swarm:如果所有 Swarm 管理器重新启动会发生什么

我最感兴趣的是我从中获得的信息docker node ls。Docker将加入的节点的信息存储在哪里?

docker docker-swarm docker-swarm-mode

6
推荐指数
1
解决办法
2879
查看次数

码头工人群。如何从管理节点连接到工作节点上运行的容器?

我需要将一些文件从工作节点上运行的容器复制到管理器主机。这个操作我需要留在经理那里做。

换句话说,如何从管理器访问工作节点上运行的容器?

有人可以帮忙吗?

docker docker-swarm docker-swarm-mode

6
推荐指数
1
解决办法
499
查看次数

如何调用 docker swarm 服务后面的所有容器/副本

假设有一个具有 5 个副本的 docker 服务。我想对所有 5 个副本进行休息调用。如果任何副本失败,整个请求就会失败。我想这样做是因为有时容器内的代码停止运行并且不响应其余调用。可以对服务进行一次休息调用,如果任何容器无法返回响应,则整个请求都会失败

docker docker-swarm docker-swarm-mode

5
推荐指数
2
解决办法
2045
查看次数

清理 Docker Swarm 中未引用的配置和机密

docker config ls在我的 Docker Swarm 集群上创建和删除堆栈和服务一段时间后,和返回的列表docker secret ls非常广泛。但是,列出的许多配置和机密都是以前部署的过时遗留物,并且不再被任何正在运行的服务引用。

是否有任何类似于docker system prune的快速等效方法可以清除未引用项目中的配置和秘密存储?

docker docker-swarm docker-swarm-mode docker-secrets

5
推荐指数
1
解决办法
584
查看次数

无法在群集模式下从覆盖网络中跨节点的服务访问端口

我使用以下撰写文件进行堆栈部署

version: '3.8'
x-deploy: &Deploy
  replicas: 1
  placement: &DeployPlacement
    max_replicas_per_node: 1
  restart_policy:
    max_attempts: 15
    window: 60s
  resources: &DeployResources
    reservations: &DeployResourcesReservations
      cpus: '0.05'
      memory: 10M
services:
  serv1:
    image: alpine
    networks:
      - test_nw
    deploy:
      <<: *Deploy
    entrypoint: ["tail", "-f", "/dev/null"]
  serv2:
    image: nginx
    networks:
      - test_nw
    deploy:
      <<: *Deploy
      placement:
        <<: *DeployPlacement
        constraints:
          - "node.role!=manager"
    expose: # deprecated, but I leave it here anyway
      - "80"
networks:
  test_nw:
    name: test_nw
    driver: overlay
Run Code Online (Sandbox Code Playgroud)

为了方便起见,我将使用test_serv1running via containerinhost1test_serv2running …

docker docker-swarm docker-swarm-mode docker-network

5
推荐指数
1
解决办法
1714
查看次数

全局模式下的 Docker swarm 在更新时对某些服务制作了太多副本

我将单主机 docker swarm 应用程序设置为全局模式(以便每个服务只有 1 个副本)。由于某种原因,更新 swarm 后,某些服务显示 2/2 副本。看起来新容器启动后旧容器并没有停止。我发现,当替换 mysql 容器时会发生这种情况(并且它是唯一具有order: stop-first内部更新配置的服务)。往往会获得太多副本的服务依赖于数据库,并且在部署时它们会失败,直到数据库准备就绪为止(但由于某种原因,此时有两个副本 - 旧的和新的)。要解决此问题,我需要再次运行部署。

我的环境是由 CI/CD 部署的,它按顺序执行:

  1. docker-compose -f build-images.yml 构建
  2. docker-compose -f build-images.yml 推送到私有 docker 注册表(也在同一主机和 swarm 上)
  3. docker镜像修剪-a
  4. docker stack deploy -c test-swarm.yml 测试

现在我实际上有两个问题:

首先,尽管代码没有任何变化,但 mysql 大部分时间都在更新。它构建新的映像(这是可以理解的,因为我做了 image prune -a),然后由于某种原因将其作为新层推送到注册表,然后用完全相同的容器替换旧的 mysql 容器。此行为导致几乎每次我更改任何其他服务时,都会出现上面描述的副本问题。

其次,即使在更新数据库时创建并运行新的容器副本,旧的容器副本也会保留,从而产生过多的副本(并且旧版本会获取 API 调用等所有操作)。

我的 test-swarm.yml 的一部分包含数据库和重复的服务之一:

services:
  #BACKEND
  db:
    image: registry.address/db:latest
    user: "${UID}:${GID}"
    deploy:
      mode: global
      update_config:
        failure_action: pause
        order: stop-first
    healthcheck:
      test: [ "CMD-SHELL", "mysqladmin --defaults-file=/home/.my.cnf -u root status || exit …
Run Code Online (Sandbox Code Playgroud)

docker docker-compose docker-swarm docker-swarm-mode

5
推荐指数
0
解决办法
893
查看次数