标签: docker-swarm

应用程序开发人员在 Kubernetes 中运行应用程序意味着什么?

通常,应用程序开发人员(以 J2EE 为例)在设计应用程序时不会优先考虑与基础结构相关的问题。很难与传统的非可编程基础设施交互。传统的方法是构建一个 .war 文件,然后可以在应用程序服务器(如 JBoss)中运行该文件。Spring 等传统框架(新版 Spring Cloud 除外)都以此为前提。现在,如果有一个容错的、弹性的部署运行时可用,例如由 Kubernetes 提供,那么似乎以同样的方式编写业务应用程序会忽略运行时提供的诸如调度之类的功能。一个具体的问题:应用程序从运行时(即 Kubernetes、Mesos 等)API 中对话(并从中受益)是典型的吗?如果是这样,你能举出一个很好的例子吗?

mesos kubernetes spring-cloud docker-swarm

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

Docker Swarm + Docker Compose:在不同节点上运行链接的容器吗?

我有一个应用程序,目前正在通过Docker Compose文件在单个主机上运行。容器通过RabbitMQ容器相互通信(因此它们都已链接)。该应用程序开始需要的资源比我的单个主机所能提供的更多,因此我认为Docker Swarm将是理想的选择,因为我应该能够通过相同的Compose文件在分布式节点上启动相同的容器集。

但是,似乎链接的容器被约束为驻留在同一节点上,因此在多个节点上设置Docker Swarm不会导致我要寻找的容器分发。

大使模式似乎是分离链接容器的推荐方法(通过在每个节点上为链接容器设置代理),但是我在docker-compose文件中使用它遇到了麻烦,因为我看到的示例显示了设置使用docker run设置每个节点,然后使用运行共享服务的节点的IP(在我的情况下为RMQ)设置环境变量,以告知客户端的大使容器将链接服务的数据路由到何处(如https:// docs.docker.com/engine/admin/ambassador_pattern_linking/)。如何将其转换为Compose文件,这样我就不需要知道服务将在其上运行的IP(因为Docker Swarm将在Compose文件完成后决定这一点)?

docker docker-compose docker-swarm

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

是否可以在docker swarm服务中获取所有正在运行的容器ID?

我是docker swarm模式的新手,如果我想了解我的swarm服务的更多详细信息,可以从命令行运行docker service ps“服务名”,也可以从docker rest运行“ / v2 / services / my-ngx”

[msreddy@swarmnode1 ~]$ docker service ps my-ngx ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS voj7fllhnmqb my-ngx.1 nginx:latest swarmnode1 Running Running 26 minutes ago

但是它没有给我容器ID。我想从群服务中跟踪容器吗?

docker docker-swarm docker-swarm-mode

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

Terraform可以从remote_exec命令设置变量吗?

我正在尝试使用Terraform在AWS中构建Docker Swarm集群.我已经成功启动了一个Swarm管理器,但我正在尝试找出如何最好地将join键传递给worker(将在管理器之后创建).

我想要一些运行docker swarm join-token worker -q可以设置为Terraform变量的命令的方法.这样,工作人员可以使用remote_exec命令docker swarm join ${var.swarm_token} ${aws_instance.swarm-manager.private_ip}

我怎样才能做到这一点?

我的配置如下:

resource "aws_instance" "swarm-manager" {
  ami = "${var.manager_ami}"
  instance_type = "${var.manager_instance}"
  tags = {
    Name = "swarm-manager${count.index + 1}"
  }

  provisioner "remote-exec" {
    inline = [
      "sleep 30",
      "docker swarm init --advertise-addr ${aws_instance.swarm-manager.private_ip}"
      "docker swarm join-token worker -q" // This is the value I want to store as a variable/output/etc
    ]
  }
}
Run Code Online (Sandbox Code Playgroud)

谢谢

amazon-web-services docker terraform docker-swarm

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

Docker作曲家,约束 - 找不到预期的关键

我们使用docker CE(最新)和docker composer版本3.我有一个.yml用于3个服务,但我想将grafana约束到swarm的主人.添加约束时,我得到

yaml:第32行:找不到预期的关键字脚本是这样的:

version: '3'
services:
  influxdb:
    image: "influxdb:latest"
    volumes:
      - /mount/set/influxdb:/var/lib/influxdb
    ports:
      - "5076:5076"
    networks:
      - production

  kapacitor:
    image: "kapacitor:latest"
    environment:
      KAPACITOR_HOSTNAME: kapacitor
      KAPACITOR_INFLUXDB_0_URLS_0: http://influxdb:5086
    volumes:
      - /mount/set/kapacitor:/var/lib/kapacitor
    ports:
      - "9092:9092"
    networks:
      - production

  grafana:
    image: "grafana/grafana:latest"
      ports:
        - "7000:7000"
      networks:
        - production
      deploy:
        placement:
          constraints: [node.role == manager]
      volumes:
        - /iSCSIDisk/grafana/grafana.ini:/etc/grafana/grafana.ini
        - /iSCSIDisk/grafana/lib:/var/lib/grafana
      environment:
        GF_SECURITY_ADMIN_PASSWORD: secretsecret

      networks:
        production:
          external: true
Run Code Online (Sandbox Code Playgroud)

我多次梳理脚本,找不到任何错误的原因,我可能会忽略一些东西,我检查了非空格等,找不到任何东西,我检查了其他文章有关同样的错误,我不知道似乎也有任何遗漏的括号或重复.非常感谢您的帮助,谢谢.:)

docker docker-compose docker-swarm

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

Docker swarm 容器无法访问互联网

我正在尝试在 AWS 中设置一个 swarm 集群,但是主机中的容器无法访问互联网。用于地址解析或通过 IP 直接连接的 ping 命令在容器内部不起作用。

在创建这张票之前,我看过这个问题,但我认为在我的情况下没有 CIDR 重叠。

我有以下配置:

Public Subnet CIDR : 10.2.1.0/24
Namespace server inside this is :10.2.0.2

Ingress overlay network --> 10.255.0.0/16

docker_gwbridge --> 172.18.0.0/1
Run Code Online (Sandbox Code Playgroud)

我也尝试过创建新的覆盖 (192.168.1.0/24) 和 docker_gwbridge(10.11.0.0/16) 网络,但没有成功。

我正在使用这些选项创建服务(删除 mount 和 env 参数):

docker service create --publish 8098:8098 <Imagename>
Run Code Online (Sandbox Code Playgroud)

请注意,当我自己创建覆盖网络时,我也在create 命令中添加了选项--network my-overlay

关于我可能遗漏/做错了什么的任何指示?

编辑 1 添加更多信息

下面是当我不创建新的覆盖网络并使用默认网络时对容器的检查:

"NetworkSettings": {
        "Bridge": "",
        "SandboxID": "eb***",
        "HairpinMode": false,
        "LinkLocalIPv6Address": "",
        "LinkLocalIPv6PrefixLen": 0,
        "Ports": {
            "5005/tcp": null,
            "8080/tcp": null
        },
        "SandboxKey": …
Run Code Online (Sandbox Code Playgroud)

amazon-web-services docker docker-swarm

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

如何在docker-machine中为机器设置TLS证书

我想做的事:

我已经在TLS验证设置为true的一台机器上运行dockerd。我想将此主机添加为计算机docker-machine

我做了什么:

我使用以下命令启动dockerd:

$ sudo dockerd -D --tls=true --tlscert=cert.pem --tlskey=key.pem -H tcp://172.19.48.247:2376
Run Code Online (Sandbox Code Playgroud)

在第二台计算机上,我获取了以下变量:

export DOCKER_HOST=tcp://172.19.48.247:2376                                                                                 
export DOCKER_TLS_VERIFY=1
export DOCKER_CERT_PATH=/path/to/ssl
Run Code Online (Sandbox Code Playgroud)

并成功运行docker命令:

$ docker run busybox echo hello
hello
Run Code Online (Sandbox Code Playgroud)

然后我添加了这个主机docker-machine:

docker-machine create --driver none --url=tcp://172.19.48.247:2376 dockerhost
Run Code Online (Sandbox Code Playgroud)

我要去哪里了:

我现在x509: certificate signed by unknown authority出错了。

$ docker-machine ls
NAME        ACTIVE   DRIVER       STATE     URL                        SWARM   DOCKER    ERRORS                                     Unknown   
dockerhost   -        none         Running   tcp://172.19.48.247:2376           Unknown   Unable to query docker version: Get https://172.19.48.247:2376/v1.15/version: x509: certificate signed by unknown authority
Run Code Online (Sandbox Code Playgroud)

我尝试使用,docker-machine config但是不起作用: …

docker docker-swarm docker-machine

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

带有多个 cs 项目引用的 dotnetcore2.0 的 DockerFile

我正在使用 Visual Studio 2017 for MAC 运行 .netcore2.0 webapi。我有一个项目结构如下。

src
    --Solution.sln
    -- Common
        -- commonPrj
            -- Common.csproj
    --Data
        --  QM
            --  QM.csproj
        --Repo
            --Repo.csproj
    --Ser
        --  Host
            -- Api
                --api.csproj
Run Code Online (Sandbox Code Playgroud)

我也有 DOCKERFILE 内容。这是在执行 dotnet 构建过程时抛出错误,因为构建代理无法解析 common.csproj/ 我认为我的 dockerfile 定义是错误的。有人可以协助完成这项工作吗[我在这里用 dockerfile 尝试了很多选项]>?

#FROM microsoft/aspnetcore-build:2.0 AS build-env
FROM microsoft/aspnetcore

# copy csproj and restore as distinct layers
#COPY *.csproj ./
#RUN dotnet restore

# copy everything else and build
#COPY . ./ ./ ./
#RUN dotnet restore
#RUN dotnet publish -c Release …
Run Code Online (Sandbox Code Playgroud)

docker .net-core dockerfile docker-swarm docker-container

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

Orleans 应用程序如何从容器中受益?

Microsoft Orleans 框架提供了一种无需太多复杂性即可构建分布式、大规模系统的方法。

缩放对于奥尔良来说是很​​自然的;如果主机出现故障,则该主机上的活动谷物会在其他地方重新激活,因为它们的状态会保留在存储中。

考虑到这一点,Docker 等容器服务如何应用于生产中的 Orleans 应用程序?如果 Orleans 默认情况下已经可以扩展,为什么我们需要一个精心设计的容器服务来进行扩展?

c# docker orleans docker-swarm

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

为什么在尝试加入docker swarm时出现身份验证错误

我正在尝试跑步

docker-machine ssh myvm2 "docker swarm join --token SwMTKN-1-<cut> 192.168.161.163:2376"
Run Code Online (Sandbox Code Playgroud)

将mymv2作为工作器加入集群,但出现此错误

来自守护程序的错误响应:rpc错误:代码=不可用desc =所有子
连接都在TransientFailure中,最新的连接错误:连接错误:desc =“传输:身份验证握手失败:远程错误:tls:错误的证书”退出状态1

我正在通过以下网址学习Docker课程:https : //docs.docker.com/v17.09/get-started/part4/#create-a-cluster

docker docker-swarm docker-machine

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