Docker學習—Machine

前言

 前面《Docker學習—Compose》文中介紹了Compose的使用方式;接下來繼續瞭解docker三劍客之一的 Machine;html

1、Docker Machine簡介

 一、什麼是Docker Machine?

  Docker Machine是一個能夠在虛擬主機上安裝Docker引擎,並使用Docker Machine命令管理主機的工具。您可使用計算機在本地Mac或Windows box、公司網絡、數據中心或雲提供商(如Azure、AWS)上建立Docker主機。node

  Docker Machine是一個工具,可讓您在虛擬主機上安裝Docker Engine,使用Docker Machine命令,您能夠啓動、檢查、中止和從新啓動託管主機,升級Docker客戶端和守護程序,並配置Docker客戶端與主機對話。  git

 二、爲何要用Docker Machine?

  Docker Machine有這兩個普遍的用例。github

  • 在舊的桌面系統,想在Mac或Windows上運行Docker

  

   若是您主要在舊版Mac或Windows筆記本電腦或桌面上工做,但不符合新的Docker desktop for Mac和Docker desktop for Windows apps的要求,則須要Docker Machine在本地運行Docker Engine。docker

  • 想在遠程系統上配置Docker主機

   

   Docker引擎在Linux系統上本機運行。若是您的主系統是Linux機器,而且但願運行docker命令,您只需下載並安裝docker Engine。可是,若是你想在一個網絡上、雲端甚至本地提供多個Docker主機,你須要Docker Machine。windows

 三、Docker Engine和Docker Machine有什麼區別?

  一般說「 Docker」時,一般指的是Docker Engine,由Docker守護程序組成的客戶端-服務器應用程序,用於指定與守護程序交互的接口的REST API和與守護程序進行對話的命令行界面(CLI)客戶端(經過REST API包裝器)。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主機自己視爲(有時也稱爲託管的「機器」)。網絡

 

  四、Docker Machine支持機器驅動程序

2、Docker Machine應用示例

 本次示例採用windows docker 中使用Docker Machine來實現虛擬環境(hyper-v)中dcoker環境 生成

 一、安裝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"

 二、查看安裝版本:docker-machine version

  

  三、設置hyper-網絡代理

   進入Hyper-V 管理器添加虛擬交換器以下圖:

    

 四、使用docker-machine建立docker環境:在Git BASH執行如下命令

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

  該命令下載安裝了Docker守護程序的輕量級Linux發行版(boot2docker)並在hyperv中建立名爲<nameOfNode>的實例運行。  具體docker-machine命令還須要進一步學習

  結果以下: 則建立docker環境成功

   

  五、進入建立docker環境:

--進入worker1環境
$ eval $(
"C:\Users\cwsheng\bin\docker-machine.exe" env worker1) --查看worker1中運行容器 $ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

3、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                  顯示命令的幫組列表

 重點關注建立時相關參數設置:

啓用Swarm體驗功能--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                                                 
#####根據driver不一樣參數會有些不一樣######
……

4、參考

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

  hyper-v驅動使用說明:https://docs.docker.com/machine/drivers/hyper-v/ 

後續:下一篇將開始對docker集羣進行學習,先使用swarm 方式

相關文章
相關標籤/搜索