Docker Machine

Docker machine 是docker 官方编排项目之一,它可以帮助我们在远程的机器上安装Docker,或者在虚拟机host上直接安装虚拟机并在虚拟机中安装Docker.我们还可以通过docker-machine命令来管理这些虚拟机和Docker。

使用

Docker Machine 支持多种后端驱动,包括虚拟机,本地主机和云平台。

创建本地主机实例

  • VirtualBox驱动

使用virtualBox类型的驱动,创建一台Docker 主机,命名为test。

1
$ docker-machine create -d virtualbox test //默认使用boot2docker的镜像创建虚拟机。

有下面一些可以加入的参数,来配置主机或者主机上的Docker。

1
2
3
4
--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
  • macOS xhyve驱动

远程主机上安装Docker

通过Docker-machine命令可以轻松的在远程主机上安装Docker。但是有三个前提条件,1在目标主机上创建一个用户并加入sudo组,为该用户设置sudo 操作不需要输入密码。把本地用户的ssh public key 添加到目标主机上。

比如我们要在远程主机上添加一个名为 nick 的用户并加入 sudo 组:

1
2
$ sudo adduser nick
$ sudo usermod -a -G sudo nick

然后设置 sudo 操作不需要输入密码:

1
$ sudo visudo

把下面一行内容添加到文档的最后并保存文件:

1
nick   ALL=(ALL:ALL) NOPASSWD: ALL

最后把本地用户的 ssh public key 添加到目标主机上:

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

这几步操作的主要目的是获得足够的权限可以远程的操作目标主机。

安装命令

在本地运行下面的命令:

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

使用docker-machine ls命令查看当前可管理的主机列表。

然后执行 eval $(docker-machine env 远程主机Docker名字) 命令,就可以通过本地的客户端操作远程主机上的 Docker daemon 了。

切换管理不同的主机

只需要输入

1
eval $(docker-machine env 新主机Docker名字)# 即可切换。

要管理本地主机,需要重新开启一个终端就好。