本篇是关于 docker 三剑客中的 docker machine。
注:环境为 CentOS7,docker 19.03。
docker-machine 是 docker 官方三剑客项目之一,它是一个命令行工具。利用 docker-machine 我们可以快速创建一个 docker 环境。同时它支持多种云计算环境,让用户能在多种平台上安装和维护 docker 运行环境。

上图是 docker-machine 的原理图,它连接不同类型的操作平台是通过对应驱动来实现的, ?前已经集成了包括AWS、 IBM、 Google, 以及OpenStack、 VirtualBox、 vSphere等多种云平台的?持。
在 linux 上安装 docker-machine 只需要从官方的release库中直接下载编译好的二进制文件即可
base=https://github.com/docker/machine/releases/download/v0.16.0 &&
curl -L $base/docker-machine-$(uname -s)-$(uname -m) >/tmp/docker-machine &&
sudo mv /tmp/docker-machine /usr/local/bin/docker-machine
chmod +x /usr/local/bin/docker-machine
安装完成后,查看其版本信息:
# docker-machine version
docker-machine version 0.16.0, build 702c267f
docker-machine 支持命令的补全,需要下载 machine 库中的bash文件
base=https://raw.githubusercontent.com/docker/machine/v0.16.0
for i in docker-machine-prompt.bash docker-machine-wrapper.bash docker-machine.bash
do
sudo wget "$base/contrib/completion/bash/${i}" -P /etc/bash_completion.d
done
然后执行
source /etc/bash_completion.d/docker-machine-prompt.bash
要启用 docker-machine shell 提示,请添加$(__docker_machine_ps1)到 PS1 设置中 ~/.bashrc。PS1=‘[\u@\h \W$(__docker_machine_ps1)]\$ ‘
docker-machine 支持多种环境的安装,这里我们介绍几种
docker-machine 支持通过 virtualbox 驱动安装并配置 docker 主机,前提是我需要安装 virtualbox (https://www.virtualbox.org/wiki/Downloads)
docker-machine create --driver virtualbox default
genernic 方式可以通过 ssh 直接在远程上安装 docker,但在这之前先要配置 ssh 认证
1.生成密钥
# ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:V7kl+8c0paW/yGFCA+TOvBoH86MtLdKBBZ432TwlrN0 root@centos1
The key's randomart image is:
+---[RSA 2048]----+
| .. |
| . oo . . |
| . o *o+ + . o|
| o *+=.E = +.|
| +oS+ooo o..|
| . .+.o .. +.|
| ..o= . o. +|
| . +*.. + o..|
| .oo. o . |
+----[SHA256]-----+
2.主机上安装密钥
# ssh-copy-id root@192.168.10.11
这样一来本机就可以不需要密码登陆远程主机了。
3.genernic安装docker
# docker-machine create --driver generic --generic-ip-address 192.168.10.11 --generic-ssh-key ~/.ssh/id_rsa --generic-ssh-user=root centos2
注:如果主机上没有安装 docker,这一过程的等待时间就会较长。
4.查看主机
# docker-machine ls
NAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORS
centos2 - generic Running tcp://192.168.10.11:2376 v19.03.1
其他平台的安装方式这里就不再详细说明,需要的话可以查阅 https://docs.docker.com/machine。
docker-machine 提供一系列的子命令,对应不同的功能。


下面介绍这些命令的具体用法
格式为 docker-machine active [arg...]。?持-timeout, -t "10" 选项, 代表超时时间, 默认为10s。 查看当前激活状态的Docker主机。 激活状态意味着当前的DOCKER_HOST环境变量指向该主机。 例如, 下?命令列出当前激活主机为dev主机:
# docker-machine ls
NAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORS
centos2 - generic Running tcp://192.168.10.11:2376 v19.03.1
格式为 docker-machine config [OPTIONS] [arg...]。?持 --swarm参数, 表?打印Swarm集群信息, ?不是Docker信息。 查看到Docker主机的连接配置信息。 例如, 下?显?dev主机的连接信息:
# docker-machine config centos2
--tlsverify
--tlscacert="/root/.docker/machine/machines/centos2/ca.pem"
--tlscert="/root/.docker/machine/machines/centos2/cert.pem"
--tlskey="/root/.docker/machine/machines/centos2/key.pem"
-H=tcp://192.168.10.11:2376
格式为 docker-machine create [OPTIONS] [arg...]。 创建?个Docker主机环境。 ?持的选项包括:
例如, 通过如下命令可以创建?个Docker主机的虚拟机镜像:
# docker-machine create -d virtualbox --engine-storage-driver overlay --engine-label name=testmachine --engine-label year=2018 --engine-opt dns=8.8.8.8 --engine-env HTTP_PROXY=http://proxy.com:3128 --engine-insecure-registry registry.private.com mydockermachine
所创建Docker主机虚拟机中的Docker引擎将:
格式为 docker-machine env [OPTIONS] [arg...]。显?连接到某个主机需要的环境变量。 ?持的选项包括:
·-swarm: 显?Swarm集群配置;
·-shell: 指定所?向的Shell环境, 默认为当前?动探测;
·-unset, -u: 取消对应的环境变量;
·-no-proxy: 添加对象主机地址到NO_PROXY环境变量。
例如, 显?连接到default主机所需要的环境变量:
# docker-machine env centos2
export DOCKER_TLS_VERIFY="1"
export DOCKER_HOST="tcp://192.168.10.11:2376"
export DOCKER_CERT_PATH="/root/.docker/machine/machines/centos2"
export DOCKER_MACHINE_NAME="centos2"
# Run this command to configure your shell:
# eval $(docker-machine env centos2)
格式为 docker-machine inspect [OPTIONS] [arg...]。以json格式输出指定Docker主机的详细信息。 ?持 -format, -f 选项使?指定的Go模板格式化输出。
获取指定Docker主机地址。 例如, 获取 centos2 主机的地址, 可以?如下命令:
# docker-machine ip centos2
192.168.10.11
直接杀死指定的Docker主机。指定Docker主机会强?停?。
列出所有管理的主机。 格式为 docker-machine ls [OPTIONS] [arg...]。可以通过--filter只输出某些Docker主机, ?持过滤器包括名称正则表达式、 驱动类型、 Swarm管理节点名称、 状态等。 例如:
# docker-machine ls --filter state=Running
NAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORS
centos2 - generic Running tcp://192.168.10.11:2376 v19.03.1
?持选项包括:
原文:https://www.cnblogs.com/xingyys/p/11423657.html