前言简介
Docker-machine(中文翻译docker机):一种提供管理多个docker主机的工具;提供docker主机容器的远程创建、管理、删除等功能;这样的docker主机容器前辈们称之为Dockerized主机;可用于运行docker容器。
Docker Machine 是 Docker 官方编排(Orchestration)项目之一,负责在多种平台上快速安装 Docker 环境。
Docker Machine 项目基于 Go 语言实现,目前在 Github 上进行维护。
虽然Docker Machine可以安装在本地或远程系统上,但最常见的方法是将其安装在本地计算机(本机安装或虚拟机)上,并使用它来部署Docker化远程服务器。
安装
Docker Machine 可以在多种操作系统平台上安装,包括 Linux、macOS,以及 Windows。
MacOS、Windows
Docker for Mac、Docker for Windows 自带 docker-machine
二进制包,安装之后即可使用。
Linux
在 Linux 上的也安装十分简单,从 官方 GitHub Release 处直接下载编译好的二进制文件即可。
例如,在 Linux 64 位系统上直接下载对应的二进制包。
docker-machine -v
使用
Docker Machine 支持多种后端驱动,包括虚拟机、本地主机和云平台等。
创建本地主机实例
Virtualbox 驱动
使用 virtualbox
类型的驱动,创建一台 Docker 主机,命名为 test。
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登录到计算机,请退出会话并再次登录。 在命令完成docker
和docker-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
心若向阳,无谓悲伤!