美文网首页
Docker学习(三)-Docker相关工具

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

作者: 续写前生今世 | 来源:发表于2019-09-29 11:43 被阅读0次

    上一篇文章中我简单介绍了下如何安装并使用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入门吐血总结

    未完待续。。。

    相关文章

      网友评论

          本文标题:Docker学习(三)-Docker相关工具

          本文链接:https://www.haomeiwen.com/subject/purmuctx.html