标签: docker-swarm

在docker swarm服务中执行命令

  1. 初始化群模式:

    root@ip-172-31-44-207:/home/ubuntu# docker swarm init --advertise-addr 172.31.44.207
    
    Swarm initialized: current node (4mj61oxcc8ulbwd7zedxnz6ce) is now a manager.
    
    To add a worker to this swarm, run the following command:
    
    Run Code Online (Sandbox Code Playgroud)
  2. 加入第二个节点:

    docker swarm join \
    --token SWMTKN-1-4xvddif3wf8tpzcg23tem3zlncth8460srbm7qtyx5qk3ton55-6g05kuek1jhs170d8fub83vs5 \
    172.31.44.207:2377
    
    Run Code Online (Sandbox Code Playgroud)

要向此群添加管理器,请运行"docker swarm join-token manager"并按照说明操作.

# start 2 services
docker service create continuumio/miniconda3 

docker service create --name redis redis:3.0.6


root@ip-172-31-44-207:/home/ubuntu# docker service ls
ID            NAME        REPLICAS  IMAGE                   COMMAND
2yc1xjmita67  miniconda3  0/1       continuumio/miniconda3
c3ptcf2q9zv2  redis       1/1       redis:3.0.6
Run Code Online (Sandbox Code Playgroud)

如上所示,redis有它的复制品,而miniconda似乎没有复制.

我通常登录到miniconda容器来输入这些命令:

/opt/conda/bin/conda install jupyter …
Run Code Online (Sandbox Code Playgroud)

docker-swarm

35
推荐指数
7
解决办法
4万
查看次数

Docker容器无法停止或删除 - 权限被拒绝错误

问题:无法停止docker容器,每当我尝试停止容器时,我收到以下错误消息,

ERROR: for yattyadocker_web_1  cannot stop container: 1f04148910c5bac38983e6beb3f6da4c8be3f46ceeccdc8d7de0da9d2d76edd8: Cannot kill container 1f04148910c5bac38983e6beb3f6da4c8be3f46ceeccdc8d7de0da9d2d76edd8: rpc error: code = PermissionDenied desc = permission denied
Run Code Online (Sandbox Code Playgroud)

操作系统版本/版本: Ubuntu 16.04 | Docker版本17.09.0-ce,构建afdb6d4 | Docker Compose版本1.17.1,build 6d101fb

重现步骤:

  • 使用Dockerfile和docker-compose.yml创建了一个rails项目.docker-compose.yml是版本3.
  • 图像与成功构建要么docker build -t <project name> .docker-compose up --build
  • 容器启动并成功运行.
  • 尝试使用docker-compose停止docker compose.

我试过的:

  • 我必须跑sudo service docker restart,然后可以删除容器.
  • 卸载docker,删除docker目录,然后重新安装所有内容.仍面临同样的问题.

注意:此配置之前工作正常,但文件权限可能已更改,我看到此错误.我必须跑sudo service docker restart,然后可以删除容器.但这非常不方便,我不知道如何解决这个问题.

参考文件:

# docker-compose.yml
version: '3'
volumes:
  db-data:
    driver: local
  redis-data:
    driver: local  
services:
  db:
    image: postgres:9.4.1
    volumes: …
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails docker docker-compose docker-swarm

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

如何在docker swarm上配置自动扩展?

我想知道如何配置此工具以从最少数量的节点开始,并在需要时增长到最大节点数.

我应该使用其他工具还是docker swarm解决这个问题?

docker-swarm

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

Docker-compose:在多个主机中部署服务

我有一个docker-compose文件,它在同一主机中部署了8种不同的docker服务.是否可以将其部署在不同的主机中?,我想在一个主机中部署一些服务,在其他主机远程部署另一个服务.我需要使用docker-swarm吗?或者是一种更简单的方法吗?

我已经读过它可以使用DOCKER_HOST来完成,但如果我使用这个变量配置/ etc/default/docker,所有服务都将在远程主机上运行,​​我需要的是一个远程主机中的一些服务,以及其他其他远程主机中的服务.

docker dockerfile docker-compose docker-swarm

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

REST vs gRPC:我应该何时选择其中一个?

我看到越来越多的软件组织在面向服务的体系结构中使用gRPC,但人们仍然在使用REST.在什么用例中使用gRPC是有意义的,何时使用REST进行服务间通信是有意义的?

有趣的是,我遇到过使用REST和gRPC的开源项目.例如,Kubernetes和Docker Swarm都在某种程度上使用gRPC进行集群协调,但也公开REST API以与主/领导节点连接.为什么不上下使用gRPC?

rest kubernetes microservices grpc docker-swarm

29
推荐指数
3
解决办法
8816
查看次数

使用Traefik的Docker Swarm Windows Worker返回Gateway Timeout

目标是使用Linux服务器和运行Docker For Windows的Windows 10计算机运行混合OS Docker swarm

目前,只要将--endpoint-mode标志设置为'dnsrr',Windows工作者理论上就支持混合操作系统群.这在这里解释.然而,尝试使用traefik路由到简单的码头工人图像stefanscherer/whoami图像失败.

最小失败的例子

// On (Linux) Manager Node:
docker swarm init --advertise-addr <hostaddress> --listen-addr <hostaddress>:2377

// On (Windows 10) Worker Node:
docker swarm join <jointoken>

// On Manager Node:
docker network create --driver=overlay traefik-net

docker service create \
    --name traefik \
    --constraint=node.role==manager \
    --publish 80:80 --publish 8080:8080 \
    --mount type=bind,source=/var/run/docker.sock,target=/var/run/docker.sock \
    --network traefik-net \
    traefik \
    --docker \
    --docker.swarmmode \
    --docker.domain=traefik \
    --docker.watch \
    --web

docker service create \
    --name whoami …
Run Code Online (Sandbox Code Playgroud)

tcp-ip docker docker-swarm bad-gateway traefik

29
推荐指数
1
解决办法
1272
查看次数

Docker Swarm与Kubernetes有何不同?

我发现docker swarm,kubernetes非常相似,然后有docker这是一家公司,上面两个是docker集群工具.究竟所有这些工具究竟是什么以及它们之间的差异呢?

docker kubernetes docker-swarm

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

sudo:docker-machine:找不到命令

谁曾尝试过关于Docker Swarm的本教程?

https://docs.docker.com/get-started/part4/

有一节叫做:创建一个集群.我想要做的是使用docker-machine创建几个VM.因为我使用ubuntu16.0.4所以我使用以下命令来获取VirtualBox.

sudo apt-get update
sudo apt-get install virtualbox-5.2
Run Code Online (Sandbox Code Playgroud)

安装VirtualBox后,输入如下命令:

docker-machine create --driver virtualbox myvm1

但它说: sudo:docker-machine:命令未找到

所以我输入另一个命令来检查我是否正确安装了VirtualBox.

sudo virtualbox版本

这将打开Oracle VM VirtualBox Manager,这意味着我确实安装了VirtualBox,但不确定.

谁能帮助我找到合适的解决方案?任何帮助,将不胜感激.

ubuntu docker docker-swarm docker-machine

27
推荐指数
3
解决办法
2万
查看次数

找不到Docker网络

在我们的团队中,我们正在转换到Docker以在我们的服务器上部署所有内容.

我们使用Docker Swarm和多个(10+)撰写文件来定义大量(20+)服务.到目前为止,一切都运行良好,除非我们使用docker stack rm <name>(并重新部署使用docker stack deploy <options> <name>)取下堆栈:大约每隔一次,我们会收到以下错误:

Failed to remove network <id>: Error response from daemon: network <id> not foundFailed to remove some resources from stack: <name>
Run Code Online (Sandbox Code Playgroud)

使用时docker network ls,网络确实没有被删除,但是,docker network rm <id>总是导致以下结果:

Error response from daemon: network <id> not found
Run Code Online (Sandbox Code Playgroud)

更奇怪的是,docker network inspect <id>返回正常输出的事实.网络始终overlay是使用用于部署堆栈的撰写文件创建的网络.目前,我们的Swarm中只有一个节点.

我们当前的"解决方法"是重新启动Docker(解决问题),但这在生产环境中不是可行的解决方案.离开群并再次加入它也不能解决问题.

起初,我们认为这个问题只与Docker for Mac有关(因为我们第一次遇到本地机器上的问题),但Debian Stretch也出现了同样的问题.在这两种情况下,我们都使用最新的Docker发行版.

我真的很感激任何帮助!

docker docker-swarm docker-networking

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

docker service replicas仍为0/1

我在我的Mac上尝试使用1.12的docker swarm.我启动了3个VirtualBox虚拟机,创建了一个3的swarm集群.

docker@redis1:~$ docker node ls 
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS
2h1m8equ5w5beetbq3go56ebl    redis3  Ready Active 
8xubu8g7pzjvo34qdtqxeqjlj    redis2  Ready Active Reachable 
cbi0lyekxmp0o09j5hx48u7vm *  redis1  Ready Active Leader
Run Code Online (Sandbox Code Playgroud)

但是,当我创建服务时,我看到没有错误,但副本始终显示0/1:

docker@redis1:~$ docker service create --replicas 1 --name hello ubuntu:latest /bin/bash
76kvrcvnz6kdhsmzmug6jgnjv
docker@redis1:~$ docker service ls
ID            NAME   REPLICAS  IMAGE          COMMAND
76kvrcvnz6kd  hello  0/1       ubuntu:latest  /bin/bash
docker@redis1:~$ docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
Run Code Online (Sandbox Code Playgroud)

可能是什么问题呢?我在哪里寻找原木?谢谢!

docker docker-swarm

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