docker swarm的常用操作

1. 说明

本文档针对docker swarm操作。

针对的系统是以一个本地的测试系统为例。其中机器信息如下,172.16.1.13作为docker swarm的管理机。

本地测试的机器列表信息:


主机名


模拟的外网


内网IP


要部署模块


mini01


10.0.0.11


172.16.1.11


tomcat            【swarm管理】

hadoop-datanode    【swarm管理】

hbase-regionserver   【swarm管理】


mini02


10.0.0.12


172.16.1.12


tomcat             【swarm管理】

hadoop-datanode    【swarm管理】

hbase-regionserver   【swarm管理】


mini03


10.0.0.13


172.16.1.13


visualizer  # docker swarm 状态查看

spark              【swarm管理】

zookeeper         【swarm管理】

hadoop-namnode    【swarm管理】

hbase-master      【swarm管理】

2. docker swarm初始化

根据规划在172.16.1.13这台机器上操作:

 1 [[email protected] ~]# docker swarm init  # 针对机器只有一个IP的情况
 2 Error response from daemon: could not choose an IP address to advertise since this system has multiple addresses on different interfaces (172.16.1.13 on eth0 and 10.0.0.13 on eth1) - specify one with --advertise-addr
 3 [[email protected] ~]# docker swarm init --advertise-addr 172.16.1.13  # 针对机器有多个IP的情况,需要指定一个IP,一般都是指定内网IP
 4 Swarm initialized: current node (yo5f7qb28gf6g38ve4xhcis17) is now a manager.
 5
 6 To add a worker to this swarm, run the following command:
 7     # 在其他机器上执行,这样可以加入该swarm管理
 8     docker swarm join --token SWMTKN-1-4929ovxh6agko49u0yokrzustjf6yzt30iv1zvwqn8d3pndm92-0kuha3sa80u2u27yca6kzdbnb 172.16.1.13:2377
 9
10 To add a manager to this swarm, run ‘docker swarm join-token manager‘ and follow the instructions.

得到加入到该swarm的命令

1 [[email protected] ~]# docker swarm join-token worker
2 To add a worker to this swarm, run the following command:
3     # 在其他机器上执行,这样可以加入该swarm管理
4     docker swarm join --token SWMTKN-1-4929ovxh6agko49u0yokrzustjf6yzt30iv1zvwqn8d3pndm92-0kuha3sa80u2u27yca6kzdbnb 172.16.1.13:2377

3. 初始化网络

  初始化一个swarm网络,让系统组件使用这个指定的网络。

 1 [[email protected] ~]# docker network create -d overlay --attachable zhang
 2 vu07em5fvpuojih6wgckdkdzj
 3 [[email protected] docker-swarm]# docker network ls  # 查看网络
 4 NETWORK ID          NAME                DRIVER              SCOPE
 5 fa8a244c6bd5        bridge              bridge              local
 6 51c95dea1e5c        docker_gwbridge     bridge              local
 7 7a7e31f4bce8        host                host                local
 8 5hgg372xwxbl        ingress             overlay             swarm
 9 lmt3pjswf7l0        zhang               overlay             swarm
10 5ea08e9a282f        none                null                local
11 [[email protected] ~]# docker network inspect zhang  # 查看网络信息
12 [
13     {
14         "Name": "zhang",
15         "Id": "xiykborz8hn2td40ykhi20dck",
16         "Created": "0001-01-01T00:00:00Z",
17         "Scope": "swarm",
18         "Driver": "overlay",
19         "EnableIPv6": false,
20         "IPAM": {
21             "Driver": "default",
22             "Options": null,
23             "Config": []
24         },
25         "Internal": false,
26         "Attachable": true,
27         "Ingress": false,
28         "ConfigFrom": {
29             "Network": ""
30         },
31         "ConfigOnly": false,
32         "Containers": null,
33         "Options": {
34             "com.docker.network.driver.overlay.vxlanid_list": "4097"
35         },
36         "Labels": null
37     }
38 ]

删除网络【慎用】

删除docker中的zhang网络

1 [[email protected] docker-swarm]# docker network rm zhang
2 zhang
3 [[email protected] docker-swarm]# docker network ls
4 NETWORK ID          NAME                DRIVER              SCOPE
5 fa8a244c6bd5        bridge              bridge              local
6 51c95dea1e5c        docker_gwbridge     bridge              local
7 7a7e31f4bce8        host                host                local
8 5hgg372xwxbl        ingress             overlay             swarm
9 5ea08e9a282f        none                null                local

4. 加入或退出swarm管理

  在mini01、mini02上执行 docker swarm join --token SWMTKN-1-4929ovxh6agko49u0yokrzustjf6yzt30iv1zvwqn8d3pndm92-0kuha3sa80u2u27yca6kzdbnb 172.16.1.13:2377 命令。

4.1. 当前swarm有哪些节点

1 [[email protected] ~]# docker node ls
2 ID                            HOSTNAME            STATUS              AVAILABILITY        MANAGER STATUS      ENGINE VERSION
3 2pfwllgxpajx5aitlvcih9vsq     mini01              Ready               Active                                  17.09.0-ce
4 zho14u85itt5l2i6cpg8fcd6t     mini02              Ready               Active                                  17.09.0-ce
5 yo5f7qb28gf6g38ve4xhcis17 *   mini03              Ready               Active              Leader              17.09.0-ce

4.2. 退出当前的swarm节点

 1 # 在swarm管理机mini03上的操作
 2 # 其中 2pfwllgxpajx5aitlvcih9vsq 是mini01在swarm机器上的ID,根据docker node ls 获取
 3 [[email protected] ~]# docker node rm --force 2pfwllgxpajx5aitlvcih9vsq  # 如果mini01上的docker没有停止服务,那么就需要使用 --force 选项
 4 2pfwllgxpajx5aitlvcih9vsq
 5 [[email protected] ~]# docker node ls
 6 ID                            HOSTNAME            STATUS              AVAILABILITY        MANAGER STATUS      ENGINE VERSION
 7 zho14u85itt5l2i6cpg8fcd6t     mini02              Ready               Active                                  17.09.0-ce
 8 yo5f7qb28gf6g38ve4xhcis17 *   mini03              Ready               Active              Leader              17.09.0-ce
 9 ##########################################
10 # 需要在mini01上执行的命令,这样mini01才能彻底退出swarm管理
11 [[email protected] ~]# docker swarm leave
12 Node left the swarm.

4.3. swarm管理机退出swarm

首先需要删除所有节点,然后强制退出swarm即可

1 [[email protected] ~]# docker node ls
2 ID                            HOSTNAME            STATUS              AVAILABILITY        MANAGER STATUS      ENGINE VERSION
3 yo5f7qb28gf6g38ve4xhcis17 *   mini03              Ready               Active              Leader              17.09.0-ce
4 [[email protected] ~]# docker swarm leave --force  # swarm管理机退出swarm,需要 --force 参数
5 Node left the swarm.
6 [[email protected] ~]# docker node ls
7 Error response from daemon: This node is not a swarm manager. Use "docker swarm init" or "docker swarm join" to connect this node to swarm and try again.

4.4. 当前swarm有哪些服务

 1 [[email protected] ~]# docker service ls  # 只是示例,不是实际数据
 2 ID            NAME                  MODE        REPLICAS  IMAGE                                            PORTS
 3 lq7zkkal6ujt  hadoop_datanode       global      2/2       bde2020/hadoop-datanode:2.0.0-hadoop2.7.4-java8
 4 ph2fu37k886b  hadoop_namenode       replicated  1/1       bde2020/hadoop-namenode:2.0.0-hadoop2.7.4-java8  *:50070->50070/tcp
 5 ca47u5i2ubes  hbase-master          replicated  1/1       bde2020/hbase-master:1.0.0-hbase1.2.6            *:16010->16010/tcp
 6 mkks4oa2ppcn  hbase-regionserver-1  replicated  1/1       bde2020/hbase-regionserver:1.0.0-hbase1.2.6
 7 j4mhizg4j67p  hbase-regionserver-2  replicated  1/1       bde2020/hbase-regionserver:1.0.0-hbase1.2.6
 8 yndrkc2bcpra  hbase_zoo1            replicated  1/1       zookeeper:3.4.10                                 *:2181->2181/tcp
 9 r5ycrvo0zout  spark_spark           replicated  1/1       zhang/spark:latest                               *:4040->4040/tcp,*:7777->7777/tcp,*:8081->8081/tcp,*:18080->8080/tcp
10 f2v091nz24rg  tomcat_tomcat         global      2/2       zhang/tomcat:latest                              *:6543->6543/tcp,*:9999->9999/tcp,*:18081->8081/tcp
11 clfpryaerq2l  visualizer            replicated  1/1       dockersamples/visualizer:latest                  *:8080->8080/tcp

5. swarm标签管理

5.1. 标签添加

根据最开始的主机和组件部署规划,标签规划如下:在swarm管理机mini03上执行。

 1 # 给mini01机器的标签
 2 docker node update --label-add tomcat=true mini01
 3 docker node update --label-add datanode=true mini01
 4 docker node update --label-add hbase-regionserver-1=true mini01
 5
 6 # 给mini02机器的标签
 7 docker node update --label-add tomcat=true mini02
 8 docker node update --label-add datanode=true mini02
 9 docker node update --label-add hbase-regionserver-2=true mini02
10
11 # 给mini03机器的标签
12 docker node update --label-add spark=true mini03
13 docker node update --label-add zookeeper=true mini03
14 docker node update --label-add namenode=true mini03
15 docker node update --label-add hbase-master=true mini03

5.2. 删除标签

在swarm管理机mini03上执行,示例如下:

1 docker node update --label-rm zookeeper mini03

5.3. 查看swarm当前的标签

在swarm管理机mini03上执行:

1 [[email protected] ~]# docker node ls -q | xargs docker node inspect -f ‘{{.ID}}[{{.Description.Hostname}}]:{{.Spec.Labels}}‘
2 6f7dwt47y6qvgs3yc6l00nmjd[mini01]:map[tomcat:true datanode:true hbase-regionserver-1:true]
3 5q2nmm2xaexhkn20z8f8ezglr[mini02]:map[tomcat:true datanode:true hbase-regionserver-2:true]
4 ncppwjknhcwbegmliafut0718[mini03]:map[hbase-master:true namenode:true spark:true zookeeper:true]

6. 查看日志

启动容器时,查看相关日志,例如如下:

1 docker stack ps hadoop
2 docker stack ps hadoop --format "{{.Name}}: {{.Error}}"
3 docker stack ps hadoop --format "{{.Name}}: {{.Error}}" --no-trunc
4 docker stack ps hadoop --no-trunc

原文地址:https://www.cnblogs.com/zhanglianghhh/p/9900640.html

时间: 2024-08-29 14:00:18

docker swarm的常用操作的相关文章

docker容器的常用操作

1.创建容器 Docker的容器十分轻量级,用户可以随时创建或删除容器. 新建容器:docker create Example:docker create –ti ubuntu 说明:使用docker create命令创建的容器处于停止状态,可以使用docker start命令启动它. 新建并启动容器:docker run Example: docker run ubuntu /bin/echo "Hello World" 说明: 等价于先执行docker create命令,再执行do

docker基础命令,常用操作

docker基础命令 使用docker镜像 获取镜像 从docker registry获取镜像的命令是docker pull.命令格式是: docker pull [选项][docker registry地址] 仓库名:标签 docker register地址:地址的格式一般是 域名:端口,默认地址是docker hub 仓库名:仓库名是两段格式,用户名/软件名,如果不写用户,默认docker hub用户名是library,也就是官方镜像 列出服务器所有的镜像文件 # 列出所有的imaga文件

Docker Swarm群集配置实战

Docker Swarm 和 Docker Compose 一样,都是 Docker 官方容器编排项目,但不同的是,Docker Compose 是一个在单个服务器或主机上创建多个容器的工具,而 Docker Swarm 则可以在多个服务器或主机上创建容器集群服务,对于微服务的部署,显然 Docker Swarm 会更加适合. 从 Docker 1.12.0 版本开始,Docker Swarm 已经包含在 Docker 引擎中(docker swarm),并且已经内置了服务发现工具,我们就不需要

部署Docker swarm集群(一)

一.Docker swarm简介 Docker swarm与docker-compose一样,都是docker官方推出的docker容器的编排工具.但不同的是,Docker Compose 是一个在单个服务器或主机上创建多个容器的工具,而 Docker Swarm 则可以在多个服务器或主机上创建容器集群服务,对于微服务的部署,显然 Docker Swarm 会更加适合. Docker swarm:其作用就是把若干个Docker主机抽象为一个整体,并且通过一个入口统一管理这些Docker主机上的各

容器常用操作 - 每天5分钟玩转 Docker 容器技术(25)

前面讨论了如何运行容器,本节学习容器的其他常用操作. stop/start/restart 容器 通过 docker stop 可以停止运行的容器. 容器在 docker host 中实际上是一个进程,docker stop 命令本质上是向该进程发送一个 SIGTERM 信号.如果想快速停止容器,可使用 docker kill 命令,其作用是向容器进程发送 SIGKILL 信号. 对于处于停止状态的容器,可以通过 docker start 重新启动. docker start 会保留容器的第一次

Docker 基础概念科普 和 常用操作介绍

Docker 基础概念 Docker是什么? Docker的思想来自于集装箱,集装箱解决了:在一艘大船上,可以把货物规整的摆放起来.并且各种各样的货物被集装箱标准化了,集装箱和集装箱之间不会互相影响.那么我就不需要专门运送瓷器的船和专门运送化学物品的船了.只要这些货物在集装箱里封装的好好的,那我就可以用一艘大船把他们都运走. 不同的应用程序可能会有不同的应用环境,比如.net开发的网站和php开发的网站依赖的软件就不一样,如果把他们依赖的软件都安装在一个服务器上就要调试很久,而且很麻烦,还会造成

(三) Docker 常用操作与CentOS7 防火墙命令

参考并感谢 Docker 常用命令 https://docs.docker.com/engine/reference/commandline/docker/ Docker 登录docker账户 docker login -u 用户名 -p 密码 根据本地待上传镜像 修改新镜像,新镜像名称需要与hub中的repository保持一致 docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG] 查看所有镜像 docker images 查看特定镜像 docker

Docker Swarm(二)常用命令

# 管理配置文件 docker config     # 查看已创建配置文件     - docker config ls     # 将已有配置文件添加到docker配置文件中     - docker config create docker 配置文件名 本地配置文件 # 管理swarm节点 docker node     # 查看集群中的节点     - docker node ls     # 将manager角色降级为worker     - docker node demote 主机

Docker Swarm集群初探

前言 相信Docker技术大家都有所了解,单个Docker能发挥的作用毕竟有限,也不便于管理,所以Docker得组集群来使用才能发挥强大的技术优势.既然要组集群那就涉及诸如Docker的资源调度.管理等等一系列问题.目前涉及Docker集群的三个主要的技术无外乎Swarm.Kubernetes.Mesos三种.从本文开始作者将会一一实践这几种主要的Docker集群技术,话不多说,现在开始. 注意:作者的kubernetes相关实践在此 环境准备 Mac OS X 10.13.2 Docker 1