docker——三劍客之Docker Machine

Docker Machine是Docker官方三劍客項目之一,負責使用Docker的第一步,在多種平臺上快速安裝Docker環境
它支持多種平臺,讓用戶在很短時間內搭建一套Docker主機集群

Machine項目是Docker官方的開源項目,負責實現對Docker主機本身進行管理。
Machine項目主要由GO編寫,用戶可以在本地任意指定被Machine管理的Docker主機,并對其進行操作。
Machine定位是“在本地或者云環境中創建Docker主機”

Docker Machine是一個工具,它允許你在虛擬宿主機上安裝Docker Engine,并使用docker-machine命令管理這些宿主機。
你可以使用Machine在你本地的Mac或Window box、公司網絡、數據中心、或像AWS這樣的云提供商上創建Docker宿主機。
使用docker-machine命令,你可以啟動、審查、停止和重新啟動托管的宿主機、升級Docker客戶端和守護進程、并配置Docker客戶端與你的宿主機通信。

Docker Machine使你能夠在各種Linux上配置多個遠程Docker宿主機。
此外,Machine允許你在較早的Mac或Windows系統上運行Docker。

如果你有一個Linux作為你的主系統,并且想要運行docker命令,你需要做的就是下載并且安裝Docker Engine。
然而,如果你想要在網絡上、云中甚至本地配置多個Docker宿主機,你需要Docker Machine。

無論你的主系統是Mac、Windows還是Linux,你都可以在其上安裝Docker Machine,并且用docker-machine命令來配置和管理大量的Docker宿主機。
它會自動創建宿主機、在其上安裝Docker Engine、然后配置docker客戶端。
每個被管理的宿主機('machine')是Docker宿主機和配置好的客戶端的結合。

Docker Engine是一個客戶端-服務器應用程序,由Docker守護進程、一個REST API指定與守護進程交互的接口、和一個命令行接口(CLI)與守護進程通信。
Docker Engine從CLI中接受docker命令,例如docker run,docker ps。

Docker Machine是一個用戶配置和管理你的宿主機(上面具有Docker Engine的主機)的工具
通常,你在你的本地系統上安裝Docker Machine。Docker Machine有自己的命令行客戶端docker-machine和Docker Engine客戶端Docker。
你可以使用Machine在一個或多個虛擬系統上安裝Docker Engine。
這些虛擬系統可以是本地的(就像你在Mac或者Windows上使用Machine在VirtualBox中安裝和運行Docker Engine一樣)或遠程的(就像你使用Machine在云提供商上provision Dockerized宿主機上一樣)。
Dockerized宿主機本身可以認為是,且有實就稱為,被管理的"machines"。

?

1.安裝

curl -L https://github.com/docker/machine/releases/download/v0.16.0/docker-machine-`uname -s`-`uname -m` >/tmp/docker-machine
chmod +x /tmp/docker-machine
sudo cp /tmp/docker-machine /usr/local/bin/docker-machine

?

2.使用

Docker Machine通過多種后端驅動來管理不同的資源,包括虛擬機、本地主機和云平臺。
通過-d選項可以選擇支持的驅動類型,下面主要講通過本地主機來配置Docker主機。
這種驅動適合主機操作系統的SSH服務已經安裝好,需要對其安裝docker引擎。
首先確保本地主機可以通過user賬號的key直接通過ssh連接到目標主機,這就需要提前復制公鑰文件,達到無密碼登錄。


配置之前:

[root@centos004 .ssh]# docker
-bash: docker: command not found

可以發現目前并沒有安裝docker。

[root@centos003 .ssh]# docker-machine create -d generic --generic-ip-address=129.28.86.57 --generic-ssh-user=root test2
Running pre-create checks...
Creating machine...
(test2) No SSH key specified. Assuming an existing key at the default location.
Waiting for machine to be running, this may take a few minutes...
Detecting operating system of created instance...
Waiting for SSH to be available...  等待ssh響應
Detecting the provisioner...
Provisioning with centos...
Copying certs to the local machine directory...  拷貝證書
Copying certs to the remote machine...
Setting Docker configuration on the remote daemon...  配置daemon
Checking connection to Docker...
Docker is up and running!  啟動Docker
To see how to connect your Docker Client to the Docker Engine running on this virtual machine, run: docker-machine env test2

從命令輸出上可以看出,Machine通過SSH連接到指定節點,并在上面安裝Docker引擎。
創建成功之后可以通過docker-machine ls命令查看注冊到本地管理列表中的DDocker主機。

[root@centos003 .ssh]# docker-machine ls
NAME    ACTIVE   DRIVER    STATE     URL                       SWARM   DOCKER     ERRORS  
test2   -        generic   Running   tcp://129.28.86.57:2376           v18.09.0

此時再去對應的主機上查看是否安裝成功,可以通過版本號來驗證:

[root@test ~]# docker -v
Docker version 18.09.0, build 4d60db4

可以通過inspect命令查看具體的主機信息。

?

3.Machine命令

命令格式:
  docker-machine [OPTIONS] COMMAND [arg...]

如果想要查看每個命令的完整信息可以使用--help。

  docker-machine COMMAND --help


OPTIONS選項列表:

? COMMAND選項列表:

?下面是具體的說明:

(1)active

Usage: docker-machine active [OPTIONS] [arg...]

(2)config

Usage: docker-machine config [OPTIONS] [arg...]

查看激活Docker主機的連接信息。

[root@centos003 .ssh]# docker-machine config test2
--tlsverify
--tlscacert="/root/.docker/machine/machines/test2/ca.pem"
--tlscert="/root/.docker/machine/machines/test2/cert.pem"
--tlskey="/root/.docker/machine/machines/test2/key.pem"
-H=tcp://129.28.86.57:2376

(3)create

Usage: docker-machine config [OPTIONS] [arg...]

創建一個Docker主機。

選項包括:

  • --driver, -d "virtualbox"? 指定驅動類型
  • --engine-install-url "https://get.docker.com"? 配置docker主機時的安裝URL
  • --engine-opt [--engine-opt option --engine-opt option]? 以鍵值對格式指定所創建Docker引擎的參數
  • --engine-insecure-registry [--engine-insecure-registry option --engine-insecure-registry option]? 以鍵值對格式指定所創建Docker引擎允許訪問的不支持認證的注冊倉庫服務
  • --engine-registry-mirror [--engine-registry-mirror option --engine-registry-mirror option] 指定使用注冊倉庫鏡像
  • --engine-label [--engine-label option --engine-label option]? 為所創建的Docker引擎添加標簽
  • --engine-storage-driver? 存儲后端驅動類型
  • --engine-env [--engine-env option --engine-env option]? 指定環境變量
  • --swarm? 指定使用Swarm
  • --swarm-addr? 指定地址發送廣播加入Swarm集群服務
  • --swarm-discovery? Swarm集群的服務發現機制參數
  • --swarm-host "tcp://0.0.0.0:3376"? 指定地址將監聽Swarm master節點請求
  • --swarm-image "swarm:latest"使用Swarm時候采用的鏡像
  • --swarm-master? 配置機器作為Swarm集群的master節點
  • --swarm-opt [--swarm-opt option --swarm-opt option]? 任意傳遞給Swarm的參數
  • --swarm-strategy "spread"? Swarm默認調度策略

(4)env

Usage: docker-machine env [OPTIONS] [arg...]

顯式連接到某個主機需要的環境變量。

[root@centos003 .ssh]# docker-machine env test2
export DOCKER_TLS_VERIFY="1"
export DOCKER_HOST="tcp://129.28.86.57:2376"
export DOCKER_CERT_PATH="/root/.docker/machine/machines/test2"
export DOCKER_MACHINE_NAME="test2"
# Run this command to configure your shell: 
# eval $(docker-machine env test2)

(5)inspect

Usage: docker-machine inspect [OPTIONS] [arg...]

[root@centos003 .ssh]# docker-machine inspect test2
{"ConfigVersion": 3,"Driver": {"IPAddress": "129.28.86.57","MachineName": "test2","SSHUser": "root","SSHPort": 22,"SSHKeyPath": "","StorePath": "/root/.docker/machine","SwarmMaster": false,"SwarmHost": "","SwarmDiscovery": "","EnginePort": 2376,"SSHKey": ""},"DriverName": "generic","HostOptions": {"Driver": "","Memory": 0,"Disk": 0,"EngineOptions": {"ArbitraryFlags": [],"Dns": null,"GraphDir": "","Env": [],"Ipv6": false,"InsecureRegistry": [],"Labels": [],"LogLevel": "","StorageDriver": "","SelinuxEnabled": false,"TlsVerify": true,"RegistryMirror": [],"InstallURL": "https://get.docker.com"},"SwarmOptions": {"IsSwarm": false,"Address": "","Discovery": "","Agent": false,"Master": false,"Host": "tcp://0.0.0.0:3376","Image": "swarm:latest","Strategy": "spread","Heartbeat": 0,"Overcommit": 0,"ArbitraryFlags": [],"ArbitraryJoinFlags": [],"Env": null,"IsExperimental": false},"AuthOptions": {"CertDir": "/root/.docker/machine/certs","CaCertPath": "/root/.docker/machine/certs/ca.pem","CaPrivateKeyPath": "/root/.docker/machine/certs/ca-key.pem","CaCertRemotePath": "","ServerCertPath": "/root/.docker/machine/machines/test2/server.pem","ServerKeyPath": "/root/.docker/machine/machines/test2/server-key.pem","ClientKeyPath": "/root/.docker/machine/certs/key.pem","ServerCertRemotePath": "","ServerKeyRemotePath": "","ClientCertPath": "/root/.docker/machine/certs/cert.pem","ServerCertSANs": [],"StorePath": "/root/.docker/machine/machines/test2"}},"Name": "test2"
}

(6)ip

獲取指定Docker主機地址。

[root@centos003 .ssh]# docker-machine ip test2
129.28.86.57

(7)kill

直接殺死指定的Docker主機,指定Docker主機會強行停止。

?

轉載于:https://www.cnblogs.com/yangmingxianshen/p/10153586.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/249996.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/249996.shtml
英文地址,請注明出處:http://en.pswp.cn/news/249996.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

egret:什么是臟矩形

臟矩形是2D圖形性能優化一個重要的概念。Egret2.5開始臟矩形完全可以由引擎自動計算,即大名鼎鼎的"自動臟矩形"。 簡單說臟矩形,就是畫面刷新時,產生變化而需要重繪的舞臺局部區域。 什么叫臟,即什么情況下會弄臟&#…

軟件項目管理(一)

首先軟件項目管理,什么是項目?什么是軟件項目? 項目是唯一的,臨時的,即在一定的時間內完成。 具體定義:項目是為了創造一個唯一的產品或提供一個唯一的服務而進行的臨時性的努力。 項目的特征: …

strace參數

strace參數 strace參數 -c 統計每一系統調用的所執行的時間,次數和出錯的次數等. -d 輸出strace關于標準錯誤的調試信息. -f 跟蹤由fork調用所產生的子進程. -ff 如果提供-o filename,則所有進程的跟蹤結果輸出到相應的filename.pid中,pid是各進程的進程號. -F 嘗試跟蹤vfork調…

軟件項目管理(二)

根據上次的路線圖 從項目初始開始:包括項目確立和生存期 項目確立分成 項目立項、項目招投標、項目授權 項目立項:確定項目的目標、時間、資源、資金,關鍵在于得到項目發起人的認可 一個軟件項目的立項開始于軟件項目的啟動,只…

centos6.5和centos7.5統一字符集為zh_CN.UTF-8解決系統和MySQL數據庫亂碼問題

linux的服務器需要做的操作 centos6.5下&#xff1a; 修改默認字符集為 zh_CN.UTF-8&#xff0c;如果沒有中文語言包可能需要安裝中文語言包支持 [rootmeinv01 ~]# yum groupinstall chinese-support [rootmeinv01 ~]# cat /etc/sysconfig/i18n #<修改此配置文件為如下 L…

軟件項目管理(三)

上次講完了項目初始部分&#xff0c;包括立項、招投標、授權 在進入第二部分&#xff0c;項目計劃 前我們要先了解軟件的需求以及任務的分解 軟件需求管理 軟件需求定義&#xff1a;用戶對軟件功能和性能的要求 軟件需求管理過程&#xff1a;需求獲取、需求分析、需求規格…

Winform-圖片上傳

1.界面上拖個.pictureBox(pictureBox1) //上傳點擊按鈕 private void button1_Click(object sender, EventArgs e) { OpenFileDialog fileDialog new OpenFileDialog(); DialogResult result fileDialog.ShowDialog(); if (result DialogResult.OK) { this.pictureBox1.Imag…

moment.js 快捷查詢

格式化日期 當前時間&#xff1a;moment().format(YYYY-MM-DD HH:mm:ss); //2014-09-24 23:36:09 今天是星期幾&#xff1a;moment().format(d); //3 轉換當前時間的Unix時間戳&#xff1a;moment().format(X); 相對時間 20120901相對當前日期是2年前moment("20120901&quo…

My97 DatePicker獲取自定義日期的前一天

1.控件&#xff0c;獲取第一個input中的時間&#xff0c;再將這個時間的前一天賦值給第二個input <input type"text" class"form-control input-sm" id"recordTime" style"width:145px" οnclick"WdatePicker({onpicked:chang…

Underscore.js 源碼學習筆記(下)

上接 Underscore.js 源碼學習筆記&#xff08;上&#xff09; 756 行開始 函數部分。 var executeBound function(sourceFunc, boundFunc, context, callingContext, args) {if (!(callingContext instanceof boundFunc)) return sourceFunc.apply(context, args);var self …

軟件項目管理(四)

上一篇介紹了軟件項目的需求分析和任務分解&#xff0c;即軟件項目的范圍計劃&#xff0c;那么對于一個軟件項目來說&#xff0c;我們還需要知道它需要多少時間多少成本&#xff0c;如何得到這些數據就是這次要解決的問題&#xff0c;即項目的成本計劃 在項目未完成之前誰也不…

js中的時間與毫秒數互相轉換

【1】js毫秒時間轉換成日期時間var oldTime (new Date("2012/12/25 20:11:11")).getTime(); //得到毫秒數 //不是上面格式的時間需要轉換//starttime 2012-12-25 20:17:24;starttime starttime.replace(new RegExp("-","gm"),"/");…

Spring Cloud Sleuth 中id的使用

Spring Cloud Sleuth采用的是Google的開源項目Dapper的專業術語。 Span&#xff1a;基本工作單元&#xff0c;發送一個遠程調度任務 就會產生一個Span&#xff0c;Span是一個64位ID唯一標識的&#xff0c;Trace是用另一個64位ID唯一標識的&#xff0c;Span還有其他數據信息&…

軟件項目管理(五)

在get到成本計劃后&#xff0c;我們便要著手開始對項目的進度進行計劃&#xff0c;即這次的核心計劃之一進度計劃。 進度計劃的重要性&#xff1a;按時完成項目是項目經理最大的挑戰之一&#xff0c;時間是項目規劃中靈活性最小的因素&#xff0c;進度問題是項目沖突的主要原因…

BZOJ2301: [HAOI2011]Problem b(莫比烏斯反演)

Description 對于給出的n個詢問&#xff0c;每次求有多少個數對(x,y)&#xff0c;滿足a≤x≤b&#xff0c;c≤y≤d&#xff0c;且gcd(x,y) k&#xff0c;gcd(x,y)函數為x和y的最大公約數。Input 第一行一個整數n&#xff0c;接下來n行每行五個整數&#xff0c;分別表示a、b、c…

Js正則表達式數字或者帶小數點的數字

function chk() {var patrn /^\d(\.\d)?$/;var result true;$("input[typetext]").each(function () {if (!patrn.exec(this.value)) {alert("請輸入正確的數字&#xff01;");result false;}})return result;}轉載于:https://www.cnblogs.com/smzd/p/…

FastJson/spring boot: json輸出

1.引入FastJson依賴包 <!-- FastJson --><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.15</version></dependency>pom.xml參考 <project xmlns"http://maven.apa…

safari 調試iPhone web頁面

safari設置-打開Safari偏好者設置&#xff0c;選中“高級菜單”&#xff0c;在頁面最下方看到“在菜單中顯示開發菜單”的復選框&#xff0c;在復選框內打鉤&#xff0c;這樣設置完畢就能在Safari菜單中看到開發菜單了iPhone 設置-打開iPhone手機設置app 選擇Safari&#xff0c…

new函數

使用new函數是另一種創建變量的方式。創建一個未命名的T類型變量&#xff0c;初始化為T類型的零值&#xff0c;并返回其地址。例如&#xff1a; p : new(int)使用new函數創建變量和取其地址的普通局部變量沒有不同&#xff0c;只是不需要引入聲明時的一個名字&#xff0c;有語法…