Docker学习(三)-Docker相关工具

上一篇文章中我简单介绍了下如何安装并使用Docker,但是在实际的应用中,只是使用这些指令不足以应对更加复杂的场景,于是我们需要了解下Docker三剑客-三样非常好用的Docker工具。

Docker三剑客:Docker Compose、Docker Machine、Docker Swarm

Docker Compose:它允许用户通过一个单独的 docker-compose.yml 模板文件(YAML 格式)来定义一组相关联的应用容器为一个项目(project)。它可以帮助我们解决一个项目需要同时部署多个docker服务的问题。

它包含两个核心概念:

服务 (service):一个应用的容器,实际上可以包括若干运行相同镜像的容器实例

项目 (project):由一组关联的应用容器组成的一个完整业务单元,在 docker-compose.yml 文件中定义。

具体使用:

安装docker compose

$ sudo curl -L https://github.com/docker/compose/releases/download/1.24.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose

$ sudo chmod +x /usr/local/bin/docker-compose

编写 docker-compose.yml 文件,这个是 Compose 使用的主模板文件。

模板文件是使用 Compose 的核心,涉及到的指令关键字也比较多。但大家不用担心,这里面大部分指令跟 docker run 相关参数的含义都是类似的。

version: '3'

services:

  web:

    build: .

    ports:

    - "5000:5000"

  redis:

    image: "redis:alpine"

运行docker compose

docker-compose up

其核心内容就是docker-compose.yml,主要关键字为services,在services下面撰写对应的镜像/服务信息。若对上述实例不清楚的可以参见我的另一篇文章借鉴下如何实战docker-compose:

Docker Machine:Docker Machine 是 Docker 官方编排(Orchestration)项目之一,负责在多种平台上快速安装 Docker 环境。

使用:

$ sudo curl -L https://github.com/docker/machine/releases/download/v0.16.1/docker-machine-`uname -s`-`uname -m` > /usr/local/bin/docker-machine

$ sudo chmod +x /usr/local/bin/docker-machine

完成后,查看版本信息。

$ docker-machine -v

docker-machine version 0.16.1, build cce350d7

使用 virtualbox 类型的驱动,创建一台 Docker 主机,命名为 test。

$ docker-machine create -d virtualbox test

你也可以在创建时加上如下参数,来配置主机或者主机上的 Docker。

--engine-opt dns=114.114.114.114 配置 Docker 的默认 DNS

--engine-registry-mirror https://registry.docker-cn.com 配置 Docker 的仓库镜像

--virtualbox-memory 2048 配置主机内存

--virtualbox-cpu-count 2 配置主机 CPU

更多参数请使用 docker-machine create --driver virtualbox --help 命令查看。

Docker Swarm:Docker Swarm 是 Docker 官方三剑客项目之一,提供 Docker 容器集群服务,是 Docker 官方对容器云生态进行支持的核心方案。

节点:

运行 Docker 的主机可以主动初始化一个 Swarm 集群或者加入一个已存在的 Swarm 集群,这样这个运行 Docker 的主机就成为一个 Swarm 集群的节点 (node) 。

节点分为管理 (manager) 节点和工作 (worker) 节点。

管理节点用于 Swarm 集群的管理,docker swarm 命令基本只能在管理节点执行(节点退出集群命令 docker swarm leave 可以在工作节点执行)。一个 Swarm 集群可以有多个管理节点,但只有一个管理节点可以成为 leader,leader 通过 raft 协议实现。

工作节点是任务执行节点,管理节点将服务 (service) 下发至工作节点执行。管理节点默认也作为工作节点。你也可以通过配置让服务只运行在管理节点。

服务和任务:

任务 (Task)是 Swarm 中的最小的调度单位,目前来说就是一个单一的容器。

服务 (Services) 是指一组任务的集合,服务定义了任务的属性。服务有两种模式:

replicated services 按照一定规则在各个工作节点上运行指定个数的任务。

global services 每个工作节点上运行一个任务

两种模式通过 docker service create 的 --mode 参数指定。

来自 Docker 官网的这张图片形象的展示了容器、任务、服务的关系。

 

Docker-swarm

使用:

初始化集群

docker swarm init

执行 docker swarm init 命令的节点自动成为管理节点

增加工作节点

docker-machine ssh worker1

查看集群

docker node ls

部署服务

我们使用 docker service 命令来管理 Swarm 集群中的服务,该命令只能在管理节点运行。

新建服务

docker service create --replicas 3 -p 80:80 --name nginx nginx:1.13.7-alpine

查看服务

使用 docker service ls 来查看当前 Swarm 集群运行的服务

查看服务详情

使用 docker service ps 来查看某个服务的详情。

使用 docker service logs 来查看某个服务的日志。

我们可以使用 docker service scale 对一个服务运行的容器数量进行伸缩。

$ docker service scale nginx=2

使用 docker service rm 来从 Swarm 集群移除某个服务。

部署服务结合docker-compose

部署服务使用 docker stack deploy,其中 -c 参数指定 compose 文件名。

$ docker stack deploy -c docker-compose.yml wordpress

查看服务

docker stack ls

移除服务

docker stack down

如有疑问,请参考Docker从入门到实战

参考文章:Docker底层实现这可能是最为详细的Docker入门吐血总结

未完待续。。。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

毕知必会

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值