Docker三剑客部署(一)

Compose、Machine 和 Swarm是Docker原生提供的三个编排工具;

docker部署

 sudo yum install -y yum-utils
 sudo yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo
 sudo yum install docker-ce docker-ce-cli containerd.io	

Docker Compose项目

在实际生产环境中,一个应用往往由许多服务构成,而 docker 的最佳实践是一个容器只运行一个进程,因此运行多个微服务就要运行多个容器。多个容器协同工作需要一个有效的工具来管理他们,定义这些容器如何相互关联。compose 应运而生。

compose 是用来定义和运行一个或多个容器(通常都是多个)运行和应用的工具。使用 compose 可以简化容器镜像的构建以及容器的运行。

compose 使用 YAML 文件来定义多容器之间的关系。一个 docker-compose up 就可以把完整的应用跑起来。 本质上, compose 把 YAML 文件解析成 docker 命令的参数,然后调用相应的 docker 命令行接口,从而将应用以容器化的方式管理起来。它通过解析容器间的依赖关系顺序地启动容器。而容器间的依赖关系由 YAML 文件中的 links 标记指定。

yum -y install epel-release  
yum -y install python-pip
pip install docker-compose  #使用虚拟环境安装

或者

yum  -y install docker-compose #直接yum安装

Docker Machine 项目

Docker Machine 是一个简化Docker 安装的命令行工具。通过一个简单的命令行即可在相应的平台上安装 Docker,为用户提供了灵活的功能,使得用户可以在任一主机上运行 Docker 容器。简单说,一个 Docker Machine 就是一个 Docker host 主机和经过配置的 Docker client 的结合体。

技术上讲, Machine 是一个框架,比较开放。对于任何提供虚拟机服务的平台,只要在这个框架下开发针对该平台的驱动,,Docker Machine 就可以集成到该平台,在该平台上执行创建、删除、启动、停止等行为。

Docker Machine 的架构如图所示

Docker Machine 首先会创建一个虚拟机并在其上创建一个 Docker host,然后使用Docker client 和 Docker host 通信,从而在 Docker host 上创建镜像,启动容器。
用 Docker Machine 创建虚拟机的时候需要制定相应的驱动,目前支持本机的驱动有 VirtualBox 驱动、VMware 驱动及 Windows 下的 Hyper-V 驱动。除此之外,Machine 还支持云主机的创建。只要开发了符合框架规范的驱动,Docker Machine 就可以支持相应的平台。
Machine 创建的 Docker host 的IP地址是所创建的虚拟机的IP地址。
使用Docker Machine 及 VirtualBox 驱动创建本地虚拟机并搭建 Docker host 的运行流程如下:
1、执行 docker-machine create --driver virtualbox dev命令。此命令首先创建用于 Docker client 和 Docker host 通信用的 CA 证书。 其次创建 VirtualBox 虚拟机, 并配置用于通信的 TLS 参数及配置网络, 最后部署 Docker 的运行环境 即 Docker host。
2、在 Docker client 里运行 eval "$(docker-machine env dev)"命令, 配置用于 Docker host 通信的环境变量。
3、使用 docker 相关命令创建或启动相应的容器。
安装:

base=https://github.com/docker/machine/releases/download/v0.16.0 &&
curl -L $base/docker-machine-$(uname -s)-$(uname -m) >/tmp/docker-machine &&
sudo mv /tmp/docker-machine /usr/local/bin/docker-machine &&
chmod +x /usr/local/bin/docker-machine

Docker Swarm项目

docker swarm init --advertise-addr 192.168.11.21  #初始化集群
[root@D2 opt]# docker swarm init --advertise-addr 192.168.11.21 
Swarm initialized: current node (kdgrdmkps7a6ew9poomd4hebw) is now a manager.
To add a worker to this swarm, run the following command:
    docker swarm join --token SWMTKN-1-6argtzegffbcpl64sb2ced9oo1y2f8vb6twj0wzbgtiz2fmqpj-9k7zi0hpqcaacjon23mit0lat 192.168.11.21:2377
To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.

 子节点加入集群

#在节点主机执行加入集群
[root@D1 showdoc_data]# docker swarm join --token SWMTKN-1-6argtzegffbcpl64sb2ced9oo1y2f8vb6twj0wzbgtiz2fmqpj-9k7zi0hpqcaacjon23mit0lat 192.168.11.21:2377
This node joined a swarm as a worker.

 查看集群节点信息

[root@D2 opt]# docker node ls
ID                            HOSTNAME            STATUS              AVAILABILITY        MANAGER STATUS      ENGINE VERSION
impwdestst966k87mq1l8a249     D1                  Ready               Active                                  19.03.12
kdgrdmkps7a6ew9poomd4hebw *   D2                  Ready               Active              Leader              19.03.13     #  leader 表示为主节点

#如果你找不到加入命令了,可以在管理节点运行下列命令找回加入命令:

[root@D2 opt]# docker swarm join-token worker              # 以work节点加入集群
To add a worker to this swarm, run the following command:
    docker swarm join --token SWMTKN-1-6argtzegffbcpl64sb2ced9oo1y2f8vb6twj0wzbgtiz2fmqpj-9k7zi0hpqcaacjon23mit0lat 192.168.11.21:2377


[root@D2 opt]# docker swarm join-token manager             #以manager 管理节点加入集群
To add a manager to this swarm, run the following command:
    docker swarm join --token SWMTKN-1-6argtzegffbcpl64sb2ced9oo1y2f8vb6twj0wzbgtiz2fmqpj-827kms668gf3bgx3p6zh6muc4 192.168.11.21:2377

Docker Swarm  UI部署: 

docker service create \
--name portainer \
--publish 9000:9000 \
--constraint 'node.role == manager' \
--mount type=bind,src=//var/run/docker.sock,dst=/var/run/docker.sock \
portainer/portainer \
-H unix:///var/run/docker.sock

查看集群服务:

[root@D2 opt]# docker service ls
ID                  NAME                MODE                REPLICAS            IMAGE                        PORTS
3mx07vxwoas8        portainer           replicated          1/1                 portainer/portainer:latest   *:9000->9000/tcp

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值