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:\Users\cwsheng\bin\docker-machine.exe" env worker1) --查看worker1中运行容器 $ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

三、Docker Machine命令   

Options:
  --debug, -D                                           启用调试模式
  --storage-path, -s "C:\Users\cwsheng\.docker\machine" 配置存储路径 [$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 方式

 

posted @ 2020-11-15 20:19  chaney1992  阅读(481)  评论(0编辑  收藏  举报