DockerMachine怎么使用

這篇文章主要講解了“Docker Machine怎么使用”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“Docker Machine怎么使用”吧!

創(chuàng)新互聯(lián)專注于襄城企業(yè)網(wǎng)站建設(shè),響應(yīng)式網(wǎng)站開發(fā),商城網(wǎng)站建設(shè)。襄城網(wǎng)站建設(shè)公司,為襄城等地區(qū)提供建站服務(wù)。全流程定制網(wǎng)站開發(fā),專業(yè)設(shè)計,全程項目跟蹤,創(chuàng)新互聯(lián)專業(yè)和態(tài)度為您提供的服務(wù)

docker machine 是什么?

docker machine 是 docker 官方提供的一個工具,它可以幫助我們在遠(yuǎn)程的機(jī)器上安裝 docker,或者在虛擬機(jī) host 上直接安裝虛擬機(jī)并在虛擬機(jī)中安裝 docker。我們還可以通過 docker-machine 命令來管理這些虛擬機(jī)和 docker。下面是來自 docker machine 官方文檔的一張圖,很形象哦!

Docker Machine怎么使用

安裝 docker machine

安裝 docker machine 前請先在本地安裝 docker。

docker machine 的安裝十分簡單,在 ubuntu 中直接把可執(zhí)行文件下載到本地就可以了。

$ curl -l https://github.com/docker/machine/releases/download/v0.12.0/docker-machine-`uname -s`-`uname -m` > /tmp/docker-machine
$ chmod +x /tmp/docker-machine
$ sudo mv /tmp/docker-machine /usr/local/bin/docker-machine

其中 v0.12.0 是最新的版本。當(dāng)然 docker machine 是個開源項目,你可以選擇安裝不同的版本,或者是自行編譯。下圖為筆者安裝之后顯示的版本信息:

Docker Machine怎么使用

在遠(yuǎn)程主機(jī)上安裝 docker

如果我們有多臺 ubuntu 主機(jī)都需要安裝 docker,怎么辦呢?是不是一個個登錄上去通過 apt-get 命令安裝呢?當(dāng)然不需要,通過 docker-machine 命令我們可以輕松的在遠(yuǎn)程主機(jī)上安裝 docker。

前提條件

在使用 docker-machine 進(jìn)行遠(yuǎn)程安裝前我們需要做一些準(zhǔn)備工作:
1. 在目標(biāo)主機(jī)上創(chuàng)建一個用戶并加入sudo 組
2. 為該用戶設(shè)置 sudo 操作不需要輸入密碼
3. 把本地用戶的 ssh public key 添加到目標(biāo)主機(jī)上

比如我們要在遠(yuǎn)程主機(jī)上添加一個名為 nick 的用戶并加入 sudo 組:

$ sudo adduser nick
$ sudo usermod -a -g sudo nick

然后設(shè)置 sudo 操作不需要輸入密碼:

$ sudo visudo

把下面一行內(nèi)容添加到文檔的最后并保存文件:

nick all=(all:all) nopasswd: all

最后把本地用戶的 ssh public key 添加到目標(biāo)主機(jī)上:

$ ssh-copy-id -i ~/.ssh/id_rsa.pub nick@xxx.xxx.xxx.xxx

這幾步操作的主要目的是獲得足夠的權(quán)限可以遠(yuǎn)程的操作目標(biāo)主機(jī)。

安裝命令

在本地運行下面的命令:

$ docker-machine create -d generic \
 --generic-ip-address=xxx.xxx.xxx.xxx \
 --generic-ssh-user=nick \
 --generic-ssh-key ~/.ssh/id_rsa \
 krdevdb

注意,create 命令本是要創(chuàng)建虛擬主機(jī)并安裝 docker,因為本例中的目標(biāo)主機(jī)已經(jīng)存在,所以僅安裝 docker。-d 是 --driver 的簡寫形式,主要用來指定使用什么驅(qū)動程序來創(chuàng)建目標(biāo)主機(jī)。docker machine 支持在云服務(wù)器上創(chuàng)建主機(jī),就是靠使用不同的驅(qū)動來實現(xiàn)了。本例中使用 generic 就可以了。接下來以 --generic 開頭的三個參數(shù)主要是指定操作的目標(biāo)主機(jī)和使用的賬戶。最后一個參數(shù) krdevdb 是虛擬機(jī)的名稱,docker machine 會用它來設(shè)置目標(biāo)主機(jī)的名稱。
好了,就這么簡單!經(jīng)過簡短的等待 docker 就在目標(biāo)機(jī)器上安裝成功了:

Docker Machine怎么使用

檢查安裝結(jié)果

我們可以通過 docker machine 的 ls 命令查看當(dāng)前可管理的主機(jī)列表:

Docker Machine怎么使用

其中的 krdevdb 主機(jī)就是剛才我們安裝了 docker 的主機(jī),最后一列顯示了安裝的 docker 版本:v17.05.0-ce。
然后執(zhí)行 eval $(docker-machine env krdevdb) 命令,就可以通過本地的客戶端操作遠(yuǎn)程主機(jī)上的 docker daemon 了。執(zhí)行 docker version 命令看看:

Docker Machine怎么使用

請注意上圖中的 client 和 server 版本不一樣,這也說明了我們正在使用本地的 client 連接遠(yuǎn)程的 server。

在本地主機(jī)上安裝帶有 docker 的虛機(jī)

在實際使用中我們一般會在物理機(jī)上安裝 vsphere 等虛擬機(jī)管理軟件,并稱之為虛擬機(jī) host。然后通過 vsphere 工具安裝虛擬機(jī)進(jìn)行使用。接下來我們將介紹如何在本地的一臺安裝了 vsphere 的虛擬機(jī) host 上安裝帶有 docker 的虛擬機(jī)。直接上命令:

$ docker-machine create \
 --driver vmwarevsphere \
 --vmwarevsphere-vcenter=xxx.xxx.xxx.xxx \
 --vmwarevsphere-username=root \
 --vmwarevsphere-password=12345678 \
 --vmwarevsphere-cpu-count=1 \
 --vmwarevsphere-memory-size=512 \
 --vmwarevsphere-disk-size=10240 \
 testvm

解釋一下比較重要的參數(shù):

--driver vmwarevsphere
我們的虛擬機(jī) host 上安裝的是 vmware 的產(chǎn)品 vsphere,因此需要給 docker machine 提供對應(yīng)的驅(qū)動,這樣才能夠在上面安裝新的虛擬機(jī)。

--vmwarevsphere-vcenter=xxx.xxx.xxx.xxx \
--vmwarevsphere-username=root \
--vmwarevsphere-password=12345678 \
上面三行分別指定了虛擬機(jī) host 的 ip 地址、用戶名和密碼。

--vmwarevsphere-cpu-count=1 \
--vmwarevsphere-memory-size=512 \
--vmwarevsphere-disk-size=10240 \
上面三行則分別指定了新創(chuàng)建的虛擬機(jī)占用的 cpu、內(nèi)存和磁盤資源。

testvm

最后一個參數(shù)則是新建虛擬機(jī)的名稱。
很快虛擬機(jī)的創(chuàng)建就完成了。先在 vsphere 的客戶端中看一下:

Docker Machine怎么使用

名為 testvm 的虛擬機(jī)已經(jīng)在運行了。
再執(zhí)行 docker-machine ls 命令看看:

Docker Machine怎么使用

已經(jīng)可以看到 testvm了,并且它的 driver 顯示為 vmwarevsphere。
這就搞定了嗎?

好像哪里不對呀!是的,平時我們手動創(chuàng)建虛機(jī)時最重要的東西是什么?是安裝虛擬機(jī)的鏡像??!但這里我們并沒有指定相關(guān)的東西,那么docker-machine 究竟給我們安裝了一個什么系統(tǒng)?在使用 vmwarevsphere 驅(qū)動安裝虛機(jī)時,我們不能指定自己喜歡的虛機(jī)鏡像(可能是 docker machine 還沒有準(zhǔn)備好)。默認(rèn)使用一個叫做 boot2docker 的虛擬機(jī)鏡像,這個東西非常小,只有幾十兆,因此安裝會很快。

管理遠(yuǎn)程的 docker

客戶端服務(wù)器模式

docker 一直是以客戶端和服務(wù)器的模式運行的,只不過起初的版本是通過同一個二進(jìn)制文件 docker 來啟動服務(wù)器端 daemon 和客戶端的。在近期的版本中,服務(wù)端的可執(zhí)行文件已經(jīng)和客戶端的可執(zhí)行文件分離開了。查看 /usr/bin 目錄下的可執(zhí)行文件:

Docker Machine怎么使用

其中 dockerd 就是執(zhí)行服務(wù)器端任務(wù)的可執(zhí)行文件。而我們平時執(zhí)行本機(jī) docker 任務(wù)則主要通過 docker 這個客戶端命令給本機(jī)的服務(wù)器端發(fā)送任務(wù)。

使用本地的客戶端連接遠(yuǎn)程的服務(wù)器

那么本地的客戶端可不可以連接并發(fā)送任務(wù)給遠(yuǎn)程的 docker 服務(wù)器端呢?當(dāng)然是可以的,只不過我們手動設(shè)置起來稍微麻煩一些。不過沒關(guān)系,docker machine 都為我們做好了!下面就讓我們看看如何通過本地的 docker 客戶端在 krdevdb 這臺主機(jī)上運行容器:

$ docker-machine env krdevdb

Docker Machine怎么使用

這個命令輸出的內(nèi)容可以作為命令來設(shè)置一些 docker 客戶端使用的環(huán)境變量,從而讓本機(jī)的 docker 客戶端可以與遠(yuǎn)程的 docker 服務(wù)器通信。按照上面的提示執(zhí)行命令:

$ eval $( docker-machine env krdevdb)

好了,在當(dāng)前的命令行終端中,接下來運行的 docker 命令操作的都是遠(yuǎn)程主機(jī) krdevdb 上的 docker daemon。為了區(qū)分本機(jī)的 docker daemon 操作,我們重新啟動一個新的命令行終端,然后分別執(zhí)行 docker ps 命令:

Docker Machine怎么使用

從上圖中可以明顯的看出本地主機(jī)和遠(yuǎn)程主機(jī)上分別運行著不同的容器。

管理遠(yuǎn)程 docker daemon

除了運行基本的 docker 命令,docker machine 還能夠管理遠(yuǎn)程的 docker 主機(jī)。比如我們可以通過 start, stop, restart 命令分別啟動、關(guān)閉和重啟遠(yuǎn)程的 docker daemon。這里的情況稍微復(fù)雜一些,只有支持這些命令的驅(qū)動才能完成相關(guān)的操作。比如,我們分別關(guān)閉 krdevdb 和 testvm:

Docker Machine怎么使用

前一個提示 generic 驅(qū)動不支持 stop 命令。而 testvm 是通過 vmwarevsphere 驅(qū)動安裝的,所以成功的執(zhí)行了 stop。

對于遠(yuǎn)程管理來說,ssh 的支持是必不可少的!docker machine 當(dāng)然也盡職盡責(zé)的完成了任務(wù):

$ docker-machine ssh krdevdb

執(zhí)行上面的命令就可以了。注意,這個命令可不會提示你輸入密碼,當(dāng)然更不會讓你去配置 ssh 秘鑰什么的,因為 docker machine 私下全把臟活累活干完了。

感謝各位的閱讀,以上就是“Docker Machine怎么使用”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對Docker Machine怎么使用這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識點的文章,歡迎關(guān)注!

分享題目:DockerMachine怎么使用
地址分享:http://muchs.cn/article46/jpiihg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供自適應(yīng)網(wǎng)站、外貿(mào)建站、Google、響應(yīng)式網(wǎng)站、電子商務(wù)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)