Docker三劍客之Machine

前言簡介

 

Docker-machine(中文翻譯docker機):一種提供管理多個docker主機的工具;提供docker主機容器的遠程建立、管理、刪除等功能;這樣的docker主機容器前輩們稱之爲Dockerized主機;可用於運行docker容器。html

Docker Machine 是 Docker 官方編排(Orchestration)項目之一,負責在多種平臺上快速安裝 Docker 環境。linux

Docker Machine 項目基於 Go 語言實現,目前在 Github 上進行維護。git

雖然Docker Machine能夠安裝在本地或遠程系統上,但最多見的方法是將其安裝在本地計算機(本機安裝或虛擬機)上,並使用它來部署Docker化遠程服務器。github

 

安裝

Docker Machine 能夠在多種操做系統平臺上安裝,包括 Linux、macOS,以及 Windows。docker

 

MacOS、Windows

Docker for Mac、Docker for Windows 自帶 docker-machine 二進制包,安裝以後便可使用。shell

 

Linux

在 Linux 上的也安裝十分簡單,從 官方 GitHub Release 處直接下載編譯好的二進制文件便可。macos

例如,在 Linux 64 位系統上直接下載對應的二進制包。windows

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

 

使用

Docker Machine 支持多種後端驅動,包括虛擬機、本地主機和雲平臺等。後端

 

建立本地主機實例

Virtualbox 驅動

使用 virtualbox 類型的驅動,建立一臺 Docker 主機,命名爲 test。centos

docker-machine create -d virtualbox test

你也能夠在建立時加上以下參數,來配置主機或者主機上的 Docker。

--engine-opt dns=114.114.114.114 配置 Docker 的默認 DNS

--engine-registry-mirror https://registry.docker-cn.com 配置 Docker 的倉庫鏡像

--virtualbox-memory 2048 配置主機內存

--virtualbox-cpu-count 2 配置主機 CPU

更多參數請使用 docker-machine create --driver virtualbox --help 命令查看。

 

MacOS xhyve 驅動

xhyve 驅動 GitHub: https://github.com/zchee/docker-machine-driver-xhyve

xhyve 是 MacOS 上輕量化的虛擬引擎,使用其建立的 Docker Machine 較 VirtualBox 驅動建立的運行效率要高。

brew install docker-machine-driver-xhyve
docker-machine create \
      -d xhyve \
      # --xhyve-boot2docker-url ~/.docker/machine/cache/boot2docker.iso \
      --engine-opt dns=114.114.114.114 \
      --engine-registry-mirror https://registry.docker-cn.com \
      --xhyve-memory-size 2048 \
      --xhyve-rawdisk \
      --xhyve-cpu-count 2 \
      xhyve

注意:非首次建立時建議加上 --xhyve-boot2docker-url ~/.docker/machine/cache/boot2docker.iso 參數,避免每次建立時都從 GitHub 下載 ISO 鏡像。

 

Windows 10

Windows 10 安裝 Docker for Windows 以後不能再安裝 VirtualBox,也就不能使用 virtualbox 驅動來建立 Docker Machine,咱們能夠選擇使用 hyperv 驅動。

注意,必須事先在 Hyper-V 管理器中新建一個 外部虛擬交換機 執行下面的命令時,使用 --hyperv-virtual-switch=MY_SWITCH 指定虛擬交換機名稱

docker-machine create --driver hyperv --hyperv-virtual-switch=MY_SWITCH vm

 

Linux

這裏主要講的是Centos 7 下面對docker-machine的使用,爲何要單獨作成一個部分,由於我主要用的就是這部分~

 

安裝docker-machine

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

 

安裝Docker-machine腳本

第一個腳本使您能夠在bash提示符中查看活動的機器。 當你使用和在多個Dockerized機器之間切換時,這很方便。 該腳本被稱爲docker-machine-prompt.bash 。 要下載它,請鍵入:

wget https://raw.githubusercontent.com/docker/machine/master/contrib/completion/bash/docker-machine-prompt.bash -O /etc/bash_completion.d/docker-machine-prompt.bash

要完成上述文件的安裝,你必須爲設置自定義值PS1在變量.bashrc文件。

vi ~/.bashrc
export PS1='[\u@\h \W$(__docker_machine_ps1 " [%s]")]\$ '
source /etc/bash_completion.d/docker-machine-wrapper.bash
source /etc/bash_completion.d/docker-machine-prompt.bash
source /etc/bash_completion.d/docker-machine.bash

當您激活一臺機器,它的名字會被插入到shell提示符

 

第二個腳本被稱爲docker-machine-wrapper.bash 。 它增長了use子命令將docker-machine的命令,所以很容易Dockerized機之間切換。 要下載它,請鍵入

wget https://raw.githubusercontent.com/docker/machine/master/contrib/completion/bash/docker-machine-wrapper.bash -O /etc/bash_completion.d/docker-machine-wrapper.bash

 

第三個腳本被稱爲docker-machine.bash 。 它增長了bash補全了docker-machine的命令。

wget https://raw.githubusercontent.com/docker/machine/master/contrib/completion/bash/docker-machine.bash -O /etc/bash_completion.d/docker-machine.bash

 

要應用您迄今爲止所作的更改,請關閉,而後從新打開終端。 若是您經過SSH登陸到計算機,請退出會話並再次登陸。 在命令完成dockerdocker-machine命令如今應該工做。 若是它不工做,它極可能是bash-completion包沒有安裝。 若是是這樣,請使用如下命令安裝:

yum install bash-completion

 

配置ssh密鑰對

ssh-keygen -t rsa
ssh-copy-id 192.168.1.94
# 上面的192.168.1.94是遠端docker主機,是一個擁有操做系統的docker引擎,但不是Dockerized主機

 

建立Dockerized主機

docker-machine create --driver generic --generic-ip-address=192.168.1.94 docker1

參數詳解

      --driver:指定docker-machine所使用的驅動類型,詳情請參考官網;Linux與Linux之間的交互使用generic驅動,而且使用generic驅動則必須指定generic驅動主機的地址

     官網參考地址:https://docs.docker.com/machine/drivers/

 

PS:咱們登錄到192.168.1.94查看具體配置,在/etc/systemd/system/docker.service.d下文件名是:10-machine.conf

-H tcp://0.0.0.0:2376 使docker daemon接受遠程鏈接

 

相關命令

docker-machine ls:查看docker-machine管理的Dockerized主機
docker-machine rm –f Dockerized:刪除指定的Dockerized主機
docker-machine env Dockerized:查看指定的Dockerized主機環境變量
docker-machine upgrate docker1 docker2:批量更新docker host版本
docker-machine config docker1:查看host的docker daemon配置
docker-machine start/status/restart/kill:對docker host所在的系統的操做
docker-machine scp:docker host之間複製
docker-machine use machine-name:激活docker化主機
docker-machine ip machine-name:顯示的主機的IP地址

 

參考地址:

https://yeasy.gitbooks.io/docker_practice/content/machine/usage.html

http://www.javashuo.com/article/p-kezgqtfq-eu.html

https://www.howtoing.com/how-to-provision-and-manage-remote-docker-hosts-with-docker-machine-on-centos-7

相關文章
相關標籤/搜索