docker-machine 的几个实用技巧

Feb 13, 2020

1. 使用本地 iso 文件创建 docker 机器

docker-machine create --driver virtualbox --virtualbox-boot2docker   http://.....boot2docker.iso  machine_name

但是在我大中华区, boot2docker.iso 的下载却并不轻松,我们可以借用 xunlei 预先下载好 iso 文件,放到本地某个文件夹。然后通过下面的命令快速安装 docker 机器

docker-machine create --driver virtualbox --virtualbox-boot2docker  file://$PWD/boot2docker.iso  docker0

同样的方法也可以在本地安装 rancheros 机器

2. 使用 docker-machine 连接远程 docker 机器

docker-machine create --driver generic --generic-ip-address ip/domain --generic-ssh-user  username  machine_name

通过 docker-machine ls 可以查看所有通过 docker-machine 管理的主机
同时通过 docker-machine ssh machine_name 还可以直接登录机器

需要注意的是,需要为你的远程机器分配不需要输入密码的 sudo 权限,否则 docker-machine 的远程连接会失败

结论:

在这里 docker-machine 用到了两个参数一个是 --driver 简写成 -d ,代表了机器运行使用的驱动程序,第二个是 --virtualbox-boot2docker-url 指定了用到的 iso 镜像 URL,既然是 URL 类型的地址,我们也可以使用 file://absolute_path/file.iso 来引导安装本地 iso 文件。

由于 docker-machine  的参数比较冗长,我们可以建立两个 bash 脚本来简化 创建本地机器添加远程机器 的命令

创建本地机器脚本: make_machine.sh

建立一个本地文件 make_machine.sh ,内容如下:

#!/bin/env  bash
docker-machine create --driver virtualbox --virtualbox-boot2docker  $1  $2

可以这样使用:

./make_machine.sh file://$PWD/boot2docker.iso docker0

添加远程机器 add_remote.sh

建立一个本地文件 add_remote.sh ,内容如下:

#!/bin/env  bash
docker-machine create --driver generic --generic-ip-address $1 --generic-ssh-user  $2  $3

这里有三个参数,第一个是机器域名或 ip, 第二个是用户名,第三个是映射到本地对应的机器名

可以这样使用:

./add_remote.sh  www.domain.com  root docker0

经过实践证明,iso 设置为相对路径也可以正常工作

Nicholas X.

山穷水复疑无路,柳暗花明又一村