(六)Docker三剑客之Swarm
1. 创建swarm集群
1) 创建一个管理节点
[root@Thor swarm]# docker swarm init
Swarm initialized: current node (x61xl0lp40736m963leujqypc) is now a manager.To add a worker to this swarm, run the following command:docker swarm join \--token SWMTKN-1-1i2q9napdouz8iimheo9ht9x9hsunffoaiwa2ixyhhcxyh3pu9-0t7xglalpspwop0q7hkfhlixp \192.168.99.1:2377To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.[root@Thor swarm]#
2) 创建两个工作节点:
- 创建一个docker-machine
- docker swarm join 到管理节点
[root@Thor swarm]# docker-machine create -d virtualbox worker1
Running pre-create checks...
Creating machine...
(worker1) Copying /root/.docker/machine/cache/boot2docker.iso to /root/.docker/machine/machines/worker1/boot2docker.iso...
(worker1) Creating VirtualBox VM...
(worker1) Creating SSH key...
(worker1) Starting the VM...
(worker1) Check network to re-create if needed...
(worker1) Waiting for an IP...
Waiting for machine to be running, this may take a few minutes...
Detecting operating system of created instance...
Waiting for SSH to be available...
Detecting the provisioner...
Provisioning with boot2docker...
Copying certs to the local machine directory...
Copying certs to the remote machine...
Setting Docker configuration on the remote daemon...
Checking connection to Docker...
Docker is up and running!
To see how to connect your Docker Client to the Docker Engine running on this virtual machine, run: docker-machine env worker1
[root@Thor swarm]#
[root@Thor swarm]# docker-machine ssh worker1## .## ## ## ==## ## ## ## ## ===/"""""""""""""""""\___/ ===~~~ {~~ ~~~~ ~~~ ~~~~ ~~~ ~ / ===- ~~~\______ o __/\ \ __/\____\_______/_ _ ____ _ _
| |__ ___ ___ | |_|___ \ __| | ___ ___| | _____ _ __
| '_ \ / _ \ / _ \| __| __) / _` |/ _ \ / __| |/ / _ \ '__|
| |_) | (_) | (_) | |_ / __/ (_| | (_) | (__| < __/ |
|_.__/ \___/ \___/ \__|_____\__,_|\___/ \___|_|\_\___|_|
Boot2Docker version 18.06.0-ce, build HEAD : 1f40eb2 - Thu Jul 19 18:48:09 UTC 2018
Docker version 18.06.0-ce, build 0ffa825
docker@worker1:~$
docker@worker1:~$ docker swarm join \
> --token SWMTKN-1-1i2q9napdouz8iimheo9ht9x9hsunffoaiwa2ixyhhcxyh3pu9-0t7xglalpspwop0q7hkfhlixp \
> 192.168.99.1:2377
This node joined a swarm as a worker.
docker@worker1:~$
2. 查看集群
[root@Thor swarm]# docker node ls
ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS
46fbdlksvu4w49lqqw9x9utgw worker1 Ready Active
x61xl0lp40736m963leujqypc * Thor Ready Active Leader
xyscoh7b2s62cl7gdvol1t642 worker2 Ready Active
3. 启动服务
[root@Thor swarm]# docker service create --replicas 3 --name httpd -p 777:80 httpd:latest
kyn022pzs4ap11wa5gz7qlbyq
[root@Thor swarm]#
在另一台设备上测试
[root@zbops ]$ curl 10.86.10.214:777
<html><body><h1>It works!</h1></body></html>
4. 查看服务
[root@Thor swarm]# docker service ps httpd
ID NAME IMAGE NODE DESIRED STATE CURRENT STATE ERROR PORTS
2rswqj0s0r1b httpd.1 httpd:latest worker2 Running Preparing 37 seconds ago
tk1wem0defjv httpd.2 httpd:latest Thor Running Running 36 seconds ago
wrydby42gw0d httpd.3 httpd:latest worker1 Running Preparing 37 seconds ago
5. 配置
配置文件的管理方式:
- 配置文件放入镜像;
- 设置环境变量;
- volume 动态挂载;
这3中方式,都降低了镜像的通用性。
Docker 17.06 及以上版本,新增了docker config
子命令来管理集中中的配置信息,无需将配置文件放入镜像或挂载的方式即可实现对服务的配置。但 docker config
只能在 docker swarm
集群中使用。
以前我们通过监听主机目录来配置 Redis,就需要在集群的每个节点放置该文件。
如果采用docker config
来管理服务的配置信息,我们只需在集群中的管理节点manager创建 config ,当部署服务时,集群会自动的将配置文件分发到运行服务的各个节点中,大大降低了配置信息的管理和分发难度。
帮助文档如下:
[root@PsqtestA10-211 ]# docker config --helpUsage: docker config COMMANDManage Docker configsOptions:Commands:create Create a config from a file or STDINinspect Display detailed information on one or more configsls List configsrm Remove one or more configsRun 'docker config COMMAND --help' for more information on a command.
1)创建
[root@PsqtestA10-211 redis]# docker config create redis.conf redis.conf
knyrzmssepg5jr4kcod19fxrq
2)查看
[root@PsqtestA10-211 redis]# docker config ls
ID NAME CREATED UPDATED
knyrzmssepg5jr4kcod19fxrq redis.conf 5 seconds ago 5 seconds ago
3)使用(docker swarm 为前提)
[root@PsqtestA10-211 redis]# docker service create --name redis --config redis.conf -p 6379:6379 redis redis-server /redis.conf
y05kisry81yarvau5c8etzg5l
overall progress: 1 out of 1 tasks
1/1: running [==================================================>]
verify: Service converged [root@PsqtestA10-211 redis]# docker service ls
ID NAME MODE REPLICAS IMAGE PORTS
y05kisry81ya redis replicated 1/1 redis:latest *:6379->6379/tcp
4)redis-cli
[root@PsqtestA10-211 redis]# ./redis-cli -p 6379
127.0.0.1:6377> keys *
HISTORY: /root/.rediscli_history
(empty list or set)
127.0.0.1:6377> set age 26
HISTORY: /root/.rediscli_history
OK
127.0.0.1:6377> get age
HISTORY: /root/.rediscli_history
"26"
127.0.0.1:6377>
转载于:https://www.cnblogs.com/walkinginthesun/p/9432085.html
(六)Docker三剑客之Swarm相关推荐
- Docker基础30--6.4 Docker三剑客之Swarm
6.4 Docker三剑客之Swarm Docker Swarm是Docker官方三剑客项目之一,提供Docker容器集群服务,是Docker官方对容器云生态进行支持的核心方案.使用它,用户可以将多个 ...
- Docker 三剑客之 Swarm
作为容器集群管理器,Swarm 最大的优势之一就是原生支持 Docker API,给用户使用带来极大的便利.各种基于标准 API 的工具比如 Compose.Docker SDK.各种管理软件,甚至 ...
- Docker三剑客之swarm
一.什么是docker swarm Swarm是Docker公司推出的用来管理docker集群的平台,几乎全部用GO语言来完成的开发的,代码开源在https://github.com/docker/s ...
- Docker三剑客之Docker Swarm
目录 一.什么是Docker Swarm 二.Docker Swarm 基本结构图 三.Swarm的几个关键概念 四.Swarm的工作模式 五.Swarm的调度策略 六.Swarm Cluster模式 ...
- docker三剑客之 Docker Machine Docker Compose Docker Swarm
Docker 三剑客 一.docker machine 1.Docker Machine 简介 2.Docker Machine实践 二.docker-compose 1.docker-compose ...
- Docker系列之五:Docker 三剑客之 Docker Swarm
title: Docker系列之五:Docker 三剑客之 Docker Swarm categories: Docker tags: - Docker timezone: Asia/Shanghai ...
- docker三剑客docker-compose、docker-machine、swarm
2019独角兽企业重金招聘Python工程师标准>>> Docker三大编排工具: Docker Compose:是用来组装多容器应用的工具,可以在 Swarm集群中部署分布式应用. ...
- Docker 三剑客之Docker Swarm
Docker Swarm 介绍 Swarm 在 Docker 1.12 版本之前属于一个独立的项目,在 Docker 1.12 版本发布之后,该项目合并到了 Docker 中,成为 Docker 的一 ...
- @Docker三剑客(三大编排工具):Compose、Machine和Swarm
文章目录 Docker 一.Docker三大编排工具: 二.Docker Compose [compose的概述] [compose的核心概念] [安装Docker compose] 三.Docker ...
最新文章
- 最全深度学习训练过程可视化工具(附github源码)
- Mockito对final类型和方法的支持(三):免配置的inline mock making
- linux uboot nfs启动,uboot中利用TFTP和NFS加载镜像到ram运行
- centos安装盘ntfs_在CentOS下挂载NTFS格式U盘的方法
- AutoIt: WinGetClassList可以把当前窗口所有的handle全部列出来
- 添加include文件路径_-isystem以及include_next的副作用
- 为什么POJO中变量不能用is开头
- 8086 按开关灯亮 c语言程序,基于MCS-51的交通灯程序设计(c语言控制直行左转)...
- R-CNN学习笔记1:Selective Search for Object Recognition
- C语言程序NS流程图生成器,请各位大神帮个忙,画个NS流程图,,急!!!
- 一个黑客的基本素养——社会工程学
- PLC编程技术的发展及应用
- Failed installing ‘Tomcat8‘ service?
- 模式化窗口问题![window.dialogArguments]
- 如何自定义starter
- python描述对象静态特性的数据为_外国法律中,对婚生子女的否认请求均规定有时效限制,日本法律规定的时效期限是 ( )_学小易找答案...
- 数据结构和算法(Java),上
- 防火墙、DCD与TCP Keep alive
- 【Hive】Hive练习题(一)
- Vue3 Application died in status LOADING_SOURCE_CODE: You need to export the functional lifecycles in