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
Docker for Mac、Docker for Windows 自帶 docker-machine
二進制包,安裝以後便可使用。shell
在 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
類型的驅動,建立一臺 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
命令查看。
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 安裝 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
這裏主要講的是Centos 7 下面對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
第一個腳本使您能夠在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登陸到計算機,請退出會話並再次登陸。 在命令完成docker
和docker-machine
命令如今應該工做。 若是它不工做,它極可能是bash-completion
包沒有安裝。 若是是這樣,請使用如下命令安裝:
yum install bash-completion
ssh-keygen -t rsa ssh-copy-id 192.168.1.94 # 上面的192.168.1.94是遠端docker主機,是一個擁有操做系統的docker引擎,但不是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