docker swarm如何在指定的node上运行指定的容器
描述问题
比如我们有worker1,worker2,worker3三个docker host另外加一个manager1(它是swarm的master)来管理它们。
如果在manager1上直接docker service create某一个容器的话,比如nginx容器,那么master会来决定挑哪一个node作为nginx容器的运行的host。
如果我要nginx容器只跑在worker1上面的话,应该怎么办呢?
解决方案
简单来说就是给每一个node打标签。
docker node update --label-add func=nginx worker1
上面这句话的意思是master给worker1的docker打上了功能是nginx的标签。func和nginx是你可以自己定的键值对。
然后在运行docker service create 的时候,指定–constraint参数即可
docker service create --name my_nginx --constraint 'node.labels.func == nginx' nginx
这样nginx的容器就会在worker1上启动,而不会在其他node上启动了。
补充
我的好奇心让我使了一个坏。我把worker1打上func=nginx的标签后,在docker service create的constraint参数上故意写成node.labels.func == nginx111。
这个时候用docker service ls和docker service ps nginx都可以看到service已经注册了,但是它的CURRENT STATE显示Pending , 并且也没有任何分配到node。
我不停止这个service,然后直接把worker2的标签写为nginx111,奇迹般地,在worker2上就自己启动了nginx的容器。master还是很智能的。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。
相关推荐
-
在Docker快速部署Node.js应用的详细步骤
一.前言 可能还有一些同学不了解docker这个项目,docker是由go语言编写的,一个快速部署的轻量级虚拟技术项目,他允许开发人员将自己的程序和运行环境一起打包,制作成一个docker的image(镜像),这样部署到服务器上,也只需要下载这个image就可以将程序跑起来,免去每次都安装各种依赖和环境的麻烦,还能够做到应用程序之间的隔离 二.实现准备 我会先创建一个简单的Node.js web app,来构建一个镜像.然后基于这个Image运行一个container.从而实现快速部署. 由于网
-
docker中编译nodejs并使用nginx启动
1.编译Nodejs 要进行Nodejs编译,使用docker就变得非常的方便了. 首先从hub.docker.com下载最新的镜像.https://hub.docker.com/_/node/ 一般的项目都使用的是node6的镜像. docker pull node:6-alpine 然后就可以直接使用npm install了. Alpine是一个非常小的操作系统,在编译,运行docker非常喜欢使用这个系统,因为小,占用磁盘小,下载速度快,部署也快. 节省磁盘空间,节省部署时间. 2.使用d
-
详解Windows下运用Docker部署Node.js开发环境
开始 在windows下部署nodejs开发环境着实遍地坑,每遇到一个问题都要去google原因再试图解决.而且如果你想把你写好的应用交给别人跑跑看,他可能同样需要折腾很久才能真正在他的环境下运行起来.被坑了好些时日最终还是放弃,转战Docker. 文章开头先明确一下我们希望实现的效果: 1.依然在Windows下编辑源代码,在Docker容器中运行代码,最后在Windows的浏览器中看到运行结果,方便后续debug. 2.可以将我开发完成的程序和运行环境一起打包制作成Docker的image,
-
一步步教你利用Docker设置Node.js
前言 docker是一个开源的应用容器引擎,可以为我们提供安全.可移植.可重复的自动化部署的方式.docker采用虚拟化的技术来虚拟化出应用程序的运行环境.如上图一样.docker就像一艘轮船.而轮船上面的每个小箱子可以看成我们需要部署的一个个应用.使用docker可以充分利用服务器的系统资源,简化了自动化部署和运维的繁琐流程,减少很多因为开发环境中和生产环境中的不同引发的异常问题.从而提高生产力. docker三个核心概念如下: 镜像(images):一个只读的模板,可以理解为应用程序的运行环
-
基于 Docker 开发 NodeJS 应用
有关这个 Node 应用 此应用包含一个 package.json, server.js 以及一个 .gitignore 文件, 它们简单到可以信手拈来. .gitignore node_modules/* package.json { "name": "docker-dev", "version": "0.1.0", "description": "Docker Dev", "
-
Docker + Nodejs + Kafka + Redis + MySQL搭建简单秒杀环境
秒杀活动可以说在互联网上随处可见,从12306抢票,到聚划算抢购,我们生活的方方面面都可以看到秒杀的身影.秒杀的架构设计也是对于一个架构师架构设计能力的一次考验.本文的目的并不在于提供一个可以直接落地的设计方案,而是意在提供一个简单的方法,一个思路,使大家能够对于秒杀背后的一些设计有更感性的认识, 并且可以自己亲自动手实践一下.所有的配置及源码都在本文最后的GitHub repository中可以找到. 首先,先简单介绍下本文中会涉及到的一些组件,如下图所示: JMeter:用JMeter来模拟
-
详解nodejs之创建最小docker镜像
使用docker运行服务,你可以拥有一致的环境,可以精确控制服务的运行资源(cpu,内存),可以方便的设置端口和网络,可以使用镜像仓储管理和分发代码.现在越来越多的开发者选择将服务运行在docker上. 好多nodejs用户在使用docker时,直接使用了默认的node镜像.但你不觉得它太大了吗?现在node:6.10.1镜像的体积已经达到666M,其实要实现同样的功能,只需43.5M就够了.尺寸小,意味者更低的资源消耗,更快的下载速度,更小的传输带宽.下面将介绍如何创建极简node镜像. FR
-
Docker实践--部署Nodejs应用
这个例子的目标是为了向大家展示如何在Docker的container里运行Node.js程序.我会先创建一个简单的Node.js web app,来构建一个镜像.然后基于这个Image运行一个container.从而实现快速部署. 由于网络的原因我的Node.js镜像从国内的镜像库下载,而不是Docker Hub. 先从国内的镜像网站上pull下一下nodejs镜像. docker pull hub.c.163.com/nce2/nodejs:0.12.2 下载完后查看我们的镜像,找到他的名称,
-
docker swarm如何在指定的node上运行指定的容器
描述问题 比如我们有worker1,worker2,worker3三个docker host另外加一个manager1(它是swarm的master)来管理它们. 如果在manager1上直接docker service create某一个容器的话,比如nginx容器,那么master会来决定挑哪一个node作为nginx容器的运行的host. 如果我要nginx容器只跑在worker1上面的话,应该怎么办呢? 解决方案 简单来说就是给每一个node打标签. docker node update
-
python每隔N秒运行指定函数的方法
本文实例讲述了python每隔N秒运行指定函数的方法.分享给大家供大家参考.具体如下: 这是一个类似定时器的效果,每隔指定的秒数运行指定的函数,采用线程实现,代码简单实用. 复制代码 代码如下: import os import time def print_ts(message): print "[%s] %s"%(time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()), message) def run(
-
在Ubuntu 16.04上用Docker Swarm和DigitalOcean创建一个Docker容器集群的方法
介绍 Docker Swarm是用于部署Docker主机集群的Docker本地解决方案.您可以使用它来快速部署在本地计算机或受支持的云平台上运行的Docker主机集群. 在Docker 1.12之前,设置和部署Docker主机集群需要使用外部键值存储(如etcd或Consul)来进行服务发现.但是,使用Docker 1.12,不再需要外部发现服务,因为Docker提供了一个内置的键值存储,可以开箱即用. 在本教程中,您将了解如何使用Docker 1.12上的Swarm功能部署一组Docker机器
-
Docker Swarm入门实例详解
Swarm 在 Docker 1.12 版本之前属于一个独立的项目,在 Docker 1.12 版本发布之后,该项目合并到了 Docker 中,成为 Docker 的一个子命令.目前,Swarm 是 Docker 社区提供的唯一一个原生支持 Docker 集群管理的工具.它可以把多个 Docker 主机组成的系统转换为单一的虚拟 Docker 主机,使得容器可以组成跨主机的子网网络. 1. Swarm 认识 Swarm 是目前 Docker 官方唯一指定(绑定)的集群管理工具.Docker 1.
-
详解使用docker 1.12 搭建多主机docker swarm集群
swarm是docker公司自己的容器集群管理工具,本文介绍了使用docker 1.12 搭建多主机docker swarm集群,分享给大家 准备 准备至少两台的centos 7 主机(全新最小安装, 可以使用虚拟机安装) 开放端口2377 tcp端口, 7946 4789 tcp udp 端口 本文使用192.168.99.101(hostname:centos-node4) 作为swarm manager 192.168.99.102(hostname:centos-node5) 作为sw
-
轻松安装docker并运行docker swarm模式
概要 docker 1.12版本最大的改变在于集成了docker swarm,在docker engine下提供了 swarm 模式,这里主要说一下docker swarm. docker engine本身只提供了容器技术,没有解决集群环境下的容器编排和通信.docker swarm是一个容器编排管理工具,docker-engine在1.12版本之后集成了docker swarm,不需要再单独安装. docker swarm的功能,举个例子,有3台机器都安装了docker环境,称为3台docke
-
Docker的安装方法及运行Docker Swarm模式的使用
Docker简介 Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化.容器是完全使用沙箱机制,相互之间不会有任何接口. 概要 docker就给简单介绍这么多,这里主要说说docker swarm. docker engine本身只提供了容器技术,没有解决集群环境下的容器编排和通信.docker swarm是一个容器编排管理工具,docker-engine在1.12版本之后集成了docker
-
Docker Swarm从部署到基本操作
关于Docker Swarm Docker Swarm由两部分组成: Docker集群:将一个或多个Docker节点组织起来,用户就能以集群的方式进行管理: 应用编排:有一套API用来部署和管理容器: 官方资料:https://docs.docker.com/swarm/ 网络图 下图是个典型的Docker Swarm集群部署图,来自Docker官网: 接下来照着上图来搭建一个Docker Swarm集群. 准备工作 本次实战一共用到了5台机器,配置信息全部相同,如下: 操作系统:CentOS
-
详解Docker Swarm概念与用法
Docker Swarm是Docker公司开发的容器集群管理服务.从1.12.0版本开始,已经是Docker安装后自带的一部分(捆绑软件)了,又称为Swarm Mode,无需额外安装. 与Kubernetes相比,Docker Swarm是一个简单的软件,似乎不堪大用.但是它与docker-compose兼容的优点,可以弥补一切.对于没有集群使用经验的小白,用Docker Swarm起步,是一个很好的选择. 概念 Docker Swarm,主要包含以下概念: Swarm Node Stack S
-
Docker Swarm集群管理的使用及原理解析
Swarm 集群管理 简介 Docker Swarm 是 Docker 的集群管理工具.它将 Docker 主机池转变为单个虚拟 Docker 主机. Docker Swarm 提供了标准的 Docker API,所有任何已经与 Docker 守护程序通信的工具都可以使用 Swarm 轻松地扩展到多个主机. 支持的工具包括但不限于以下各项: Dokku Docker Compose Docker Machine 原理 如下图所示,swarm 集群由管理节点(manager)和工作节点(work
随机推荐
- yui3的AOP(面向切面编程)和OOP(面向对象编程)
- IOS 键盘挡住输入框的问题解决办法
- 使用PHP函数scandir排除特定目录
- JS IOS/iPhone的Safari浏览器不兼容Javascript中的Date()问题如何解决
- 浅析mybatis和spring整合的实现过程
- python实现简单的TCP代理服务器
- setTimeout函数的神奇使用
- python实现井字棋游戏
- asp 之上传漏洞终结篇
- java多线程之wait(),notify(),notifyAll()的详解分析
- javascript 获取网页标题代码实例
- MYSQL速度慢的问题 记录数据库语句
- 微信小程序 chooseImage选择图片或者拍照
- CentOS 6.3 Rsync客户端与Win2003 cwRsyncServer服务端实现数据同步
- 基于C语言实现简单的12306火车售票系统
- PHP fopen()和 file_get_contents()应用与差异介绍
- C#使用SqlDataAdapter对象获取数据的方法
- Android调用前后摄像头同时工作实例代码
- sql 修改表的所有者
- pytorch 共享参数的示例