zoukankan      html  css  js  c++  java
  • Docker学习—Machine

    前言

     前面《Docker学习—Compose》文中介绍了Compose的使用方式;接下来继续了解docker三剑客之一的 Machine;

    一、Docker Machine简介

     1、什么是Docker Machine?

      Docker Machine是一个可以在虚拟主机上安装Docker引擎,并使用Docker Machine命令管理主机的工具。您可以使用计算机在本地Mac或Windows box、公司网络、数据中心或云提供商(如Azure、AWS)上创建Docker主机。

      Docker Machine是一个工具,可以让您在虚拟主机上安装Docker Engine,使用Docker Machine命令,您可以启动、检查、停止和重新启动托管主机,升级Docker客户端和守护程序,并配置Docker客户端与主机对话。  

     2、为什么要用Docker Machine?

      Docker Machine有这两个广泛的用例。

    • 在旧的桌面系统,想在Mac或Windows上运行Docker

      

       如果您主要在旧版Mac或Windows笔记本电脑或桌面上工作,但不符合新的Docker desktop for Mac和Docker desktop for Windows apps的要求,则需要Docker Machine在本地运行Docker Engine。

    • 想在远程系统上配置Docker主机

       

       Docker引擎在Linux系统上本机运行。如果您的主系统是Linux机器,并且希望运行docker命令,您只需下载并安装docker Engine。但是,如果你想在一个网络上、云端甚至本地提供多个Docker主机,你需要Docker Machine。

     3、Docker Engine和Docker Machine有什么区别?

      通常说“ Docker”时,通常指的是Docker Engine,由Docker守护程序组成的客户端-服务器应用程序,用于指定与守护程序交互的接口的REST API和与守护程序进行对话的命令行界面(CLI)客户端(通过REST API包装器)。

      Docker Engine从CLI接受命令,

      例如 :docker run <image> 启动容器运行镜像;docker ps 列出正在运行的容器;docker image ls 列出镜像列表等

       

       Docker Machine是用于调配和管理Docker主机(带有Docker Engine的主机)的工具。通常,您在本地系统上安装Docker Machine。Docker Machine有自己的命令行客户端 docker-machine和Docker Engine客户端docker您可以使用Machine在一个或多个虚拟系统上安装Docker Engine。这些虚拟系统可以是本地的(如在Mac或Windows上使用Machine在VirtualBox中安装并运行Docker Engine时),也可以是远程的(如在Mac上使用Cloud在云提供商上配置Docker主机时)。可以将Dockeri主机本身视为(有时也称为托管的“机器”)。

     

      4、Docker Machine支持机器驱动程序

    二、Docker Machine应用示例

     本次示例采用windows docker 中使用Docker Machine来实现虚拟环境(hyper-v)中dcoker环境 生成

     1、安装Docker Machine:

    • MacOS中使用:
    $ base=https://github.com/docker/machine/releases/download/v0.16.0 &&
      curl -L $base/docker-machine-$(uname -s)-$(uname -m) >/usr/local/bin/docker-machine &&
      chmod +x /usr/local/bin/docker-machine
    • Linux中运行:
    $ 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
    • Windows中使用Git BASH 执行命令:
    $ base=https://github.com/docker/machine/releases/download/v0.16.0 &&
      mkdir -p "$HOME/bin" &&
      curl -L $base/docker-machine-Windows-x86_64.exe > "$HOME/bin/docker-machine.exe" &&
      chmod +x "$HOME/bin/docker-machine.exe"

     2、查看安装版本:docker-machine version

      

      3、设置hyper-网络代理

       进入Hyper-V 管理器添加虚拟交换器如下图:

        

     4、使用docker-machine创建docker环境:在Git BASH执行以下命令

    命令:docker-machine create -d hyperv --hyperv-virtual-switch <NameOfVirtualSwitch> <nameOfNode>
    示例:docker-machine create -d hyperv --hyperv-virtual-switch docker_Virtual_Switch worker1

      该命令下载安装了Docker守护程序的轻量级Linux发行版(boot2docker)并在hyperv中创建名为<nameOfNode>的实例运行。  具体docker-machine命令还需要进一步学习

      结果如下: 则创建docker环境成功

       

      5、进入创建docker环境:

    --进入worker1环境
    $ eval $(
    "C:Userscwshengindocker-machine.exe" env worker1) --查看worker1中运行容器 $ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

    三、Docker Machine命令   

    Options:
      --debug, -D                                           启用调试模式
      --storage-path, -s "C:Userscwsheng.dockermachine" 配置存储路径 [$MACHINE_STORAGE_PATH]
      --tls-ca-cert                                         验证远程CA [$MACHINE_TLS_CA_CERT]
      --tls-ca-key                                          生成证书的私钥 [$MACHINE_TLS_CA_KEY]
      --tls-client-cert                                     用于TLS的客户端证书 [$MACHINE_TLS_CLIENT_CERT]
      --tls-client-key                                      客户端TLS身份验证中使用的私钥[$MACHINE_TLS_CLIENT_KEY]
      --github-api-token                                    用于请求Github API的令牌 [$MACHINE_GITHUB_API_TOKEN]
      --native-ssh                                          使用本机(基于Go的)SSH实现 [$MACHINE_NATIVE_SSH]
      --bugsnag-api-token                                   用于崩溃报告的BugSnag API令牌 [$MACHINE_BUGSNAG_API_TOKEN]
      --help, -h                                            显示帮助列表
      --version, -v                                         显示版本
    Commands:
      active                输出活动状态的机器
      config                输出指定机器的连接配置
      create                创建一个机器
      env                   显示docker客户端环境设置的命令
      inspect               查看机器相关信息
      ip                    获取机器的IP地址
      kill                  杀死一台机器
      ls                    显示机器列表
      provision             重现提供现有机器
      regenerate-certs      为机器重新生成TLS证书
      restart               重启机器
      rm                    移除机器
      ssh                   在使用SSH的机器上登录或运行命令
      scp                   在机器之间复制文件
      mount                 从具有SSHFS的计算机上装载或卸载目录
      start                 启动机器
      status                获取机器状态
      stop                  暂停机器
      upgrade               将计算机升级到Docker的最新版本
      url                   获取机器的URL
      version               显示Docker Machine版本
      help                  显示命令的帮组列表

     重点关注创建时相关参数设置:

    --driver, -d "none"                                                                                  用来创建机器的驱动程序
    --engine-install-url "https://get.docker.com"                                                        用于引擎安装的自定义URL [$MACHINE_DOCKER_INSTALL_URL]
    --engine-opt [--engine-opt option --engine-opt option]                                               以flag=value的形式指定要包含在所创建引擎中的任意标志
    --engine-insecure-registry [--engine-insecure-registry option --engine-insecure-registry option]     指定创建引擎运行不安全注册表
    --engine-registry-mirror [--engine-registry-mirror option --engine-registry-mirror option]           指定要使用注册表镜像 [$ENGINE_REGISTRY_MIRROR]
    --engine-label [--engine-label option --engine-label option]                                         为创建的引擎指定标签
    --engine-storage-driver                                                                              指定要与引擎一起使用的存储驱动程序
    --engine-env [--engine-env option --engine-env option]                                               指定要在引擎中设置的环境变量
    --swarm                                                                                              机器集群配置
    --swarm-image "swarm:latest"                                                                         指定用于集群的docker镜像 [$MACHINE_SWARM_IMAGE]
    --swarm-master                                                                                       将机器设置集群管理节点
    --swarm-discovery                                                                                    使用swarm发现服务
    --swarm-strategy "spread"                                                                            为Swarm定义一个默认的调度策略
    --swarm-opt [--swarm-opt option --swarm-opt option]                                                  为swarm定义任意标志
    --swarm-host "tcp://0.0.0.0:3376"                                                                    监听Swarm master的ip/socket
    --swarm-addr                                                                                         为Swarm做addr的地址(默认:检测并使用机器IP)
    --swarm-experimental                                                 启用Swarm体验功能
    #####根据driver不同参数会有些不同######
    ……

    四、参考

      machine官方说明:https://docs.docker.com/machine/

      hyper-v驱动使用说明:https://docs.docker.com/machine/drivers/hyper-v/ 

    后续:下一篇将开始对docker集群进行学习,先使用swarm 方式

  • 相关阅读:
    Proj THUDBFuzz Paper Reading: The Art, Science, and Engineering of Fuzzing: A Survey
    Proj THUDBFuzz Paper Reading: A systematic review of fuzzing based on machine learning techniques
    9.3 付费代理的使用
    11.1 Charles 的使用
    第十一章 APP 的爬取
    10.2 Cookies 池的搭建
    10.1 模拟登录并爬取 GitHub
    11.5 Appium 爬取微信朋友圈
    11.4 Appium 的基本使用
    11.3 mitmdump 爬取 “得到” App 电子书信息
  • 原文地址:https://www.cnblogs.com/cwsheng/p/13977773.html
Copyright © 2011-2022 走看看