其他分享
首页 > 其他分享> > 5, docker-compose; docker-swarm; docker stack 介绍

5, docker-compose; docker-swarm; docker stack 介绍

作者:互联网

一、什么是dockerfile?
    DockerFile 分为四部分组成:基础镜像信、维护者信息、镜像操作指令和容器启动时执行指令。
    build DockerFile文件生成项目镜像。
    
二、什么是docker-compose? (容器只能运行在单机而非分布式)
    Docker run 或者 Dockerfile 可以让用户管理一个单独的应用容器;而 Compose 则允许
    用户在一个模板(YAML 格式)中定义一组相关联的应用容器(被称为一个 project,即项
    目),docker run web mysql redis 
    使用 Docker compose 可以管理多个容器,在 docker compose 配置文件中,所有容器通
    过使用 service 来定义,然后使用 docker-compose 脚本来启动、停止和重启 docker 应用。
    
三、什么是docker-swarm?
    Manager:接收客户端服务定义,将任务发送到 worker 节点;维护集群期望状态和集群管
理功能及 Leader 选举。默认情况下 manager 节点也会运行任务,也可以配置只做管理任务。
Worker:接收并执行从管理节点分配的任务,并报告任务当前状态,以便管理节点维护每
个服务期望状态。

Docker swarm 两个重点
重点一:
    任务(Task):任务是 Swarm 中最小的调度单位,目前来说就是单一的容器。
重点二:
    服务(Services):服务是指一组任务的集合,服务定义了任务的属性,服务有两种
模式:
 replicated services (复制)按照一定规则在各个工作节点上运行指定个数的任务。
 global services 每个工作节点上运行一个任务



Swarm 集群由管理节点和工作节点组成。我们来创建一个包含一个管理节点和一个工作节点的最小 Swarm 集群。

docker-swarm集群搭建:
    192.168.0.11 (manager)
    192.168.0.12 (worker)
    192.168.0.13 (manager)
    192.168.0.14 (worker)
    
    
192.168.0.11上管理节点初始化 swarm :
[root@manager1 ~]# docker swarm init
Swarm initialized: current node (b0ohpxfmfrjz7su1zealie45l) is now a manager.

To add a worker to this swarm, run the following command:

    docker swarm join --token SWMTKN-1-1zkkaw3w2zfg6i8cj5kfojn858hyig5k6m1trqhwlc2q9ft8mn-5y0qmdcsbxw4ep6zbnv2fhjdl 192.168.0.11:2377

To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.

[root@manager1 ~]# systemctl stop firewalld
[root@manager1 ~]# 


192.168.0.12、192.168.0.14上工作节点加入 swarm :
    docker swarm join --token SWMTKN-1-1zkkaw3w2zfg6i8cj5kfojn858hyig5k6m1trqhwlc2q9ft8mn-5y0qmdcsbxw4ep6zbnv2fhjdl 192.168.0.11:2377


192.168.0.11上查看 swarm manager 的连接令牌
[root@manager1 ~]#docker swarm join-token manager
To add a manager to this swarm, run the following command:

    docker swarm join --token SWMTKN-1-1zkkaw3w2zfg6i8cj5kfojn858hyig5k6m1trqhwlc2q9ft8mn-cymca3h9llxtjw61geunexq0e 192.168.0.11:2377

[root@manager1 ~]#

192.168.0.13上管理节点加入 swarm :
 docker swarm join --token SWMTKN-1-1zkkaw3w2zfg6i8cj5kfojn858hyig5k6m1trqhwlc2q9ft8mn-cymca3h9llxtjw61geunexq0e 192.168.0.11:2377

至此docker-swarm 集群搭建完成!
[root@manager1 ~]# docker node ls
ID                            HOSTNAME   STATUS    AVAILABILITY   MANAGER STATUS   ENGINE VERSION
b0ohpxfmfrjz7su1zealie45l *   manager1   Ready     Active         Leader           20.10.17
w84rljbp8l4sr3xqnd1lc8e6j     manager2   Ready     Active         Reachable        20.10.17
mi687zicwmyq7492zj8mqadkb     work1      Ready     Active                          20.10.17
itd71adlroai072ek6qd1q6uw     work2      Ready     Active                          20.10.17
[root@manager1 ~]# 



查看 swarm worker 的连接令牌
docker swarm join-token worker

查看 swarm manager 的连接令牌
docker swarm join-token manager

使旧令牌无效并生成新令牌
docker swarm join-token --rotate


四、docker-swarm 服务部署及管理
# 创建服务
[root@manager1 ~]# docker service create --replicas 3 --name php richarvey/nginx-php-fpm
klqzg203vo8x07rnmajtul1up
overall progress: 3 out of 3 tasks 
1/3: running   [==================================================>] 
2/3: running   [==================================================>] 
3/3: running   [==================================================>] 
verify: Service converged 
[root@manager1 ~]# 
[root@manager1 ~]# 
[root@manager1 ~]# docker service ls
ID             NAME      MODE         REPLICAS   IMAGE                            PORTS
klqzg203vo8x   php       replicated   3/3        richarvey/nginx-php-fpm:latest   
[root@manager1 ~]# 
[root@manager1 ~]# 
[root@manager1 ~]# docker service ps k
ID             NAME      IMAGE                            NODE       DESIRED STATE   CURRENT STATE            ERROR     PORTS
xfshji5d37b2   php.1     richarvey/nginx-php-fpm:latest   work2      Running         Running 35 seconds ago             
5s8qg5ek05nb   php.2     richarvey/nginx-php-fpm:latest   work1      Running         Running 31 seconds ago             
aqjk5bd9tyzg   php.3     richarvey/nginx-php-fpm:latest   manager1   Running         Running 35 seconds ago             
[root@manager1 ~]# 


五、什么是docker-stack?
    我们使用 docker service create 一次只能部署一个服务,我们可以使用docker-compose.yaml 我们可以一次启动多个服务或启动多个相关联的服务。
    docker stack deploy -c docker-compose.yml wordpress

 

标签:compose,manager1,192.168,swarm,manager,docker,root
来源: https://www.cnblogs.com/k8s-pod/p/16388883.html