参考:
https://github.com/docker/machine/
https://docs.docker.com/machine/overview/
http://lizhenliang.blog.51cto.com/7876557/1730028
https://www.oschina.net/news/50591/docker-0-10
http://www.csdn.net/article/2015-08-11/2825438
概述
官方概述3点:
- Install and run Docker on Mac or Windows
- Provision and manage multiple remote Docker hosts
- Provision Swarm clusters
如果是windows和macos的用户,便默认已经带有docker-machine了,linux用户用它主要来做集群管理,管理docker等一系列的操作工具。
docker machine 是一个简化的Docker安装的命令工具,通过简单命令来进行响应平台的docker安装,比如virtualbox,microsoft azure。举个如果你有多个操作系统,ubuntu windows centos macos,那么我都需要按照官网文档上的来一步一步的学习安装,不同的操作系统安装步骤也都不一样,所以有了machine以后,它通过ssh来链接到主机,我们只需要几个简单的命令就可以让主机安装docker,这对集群来说是非常方便的。
简单来说docker解决了一下几个问题
- Docker Machine简化了部署的复杂度,无论是在本机的虚拟机上还是在公有云平台,只需要一条命令便可搭建好Docker主机
- Docker Machine提供了多平台多Docker主机的集中管理
- Docker Machine 使应用由本地迁移到云端变得简单,只需要修改一下环境变量即可和任意Docker主机通信部署应用
安装docker-machine
安装过程请参考:https://github.com/docker/machine/
在安装过程中,可能会遇到,curl下载不下来的情况,所以我们可以自己去git上去下载,选择自己得操作系统版本
我们可以使用windows翻墙或者用代理的方式去下载好machine传入给linux操作系统
后面发现,之所以慢,原来。。。。
在我翻墙或者使用迅雷下载以后
这个时候我们使用 docker-machine 命令就可以查看到此工具的帮助信息了
附加(安装docker-machine bash自动完成脚本)
- 命令自动完成
- 在shell提示符中显示活动的机器
- 一个函数包装器,它添加了docker-machine use子命令来切换活动的计算机
https://github.com/docker/machine/tree/master/contrib/completion/bash
Docker machine运行原理
这张图是官网介绍图,docker-machine是更方便集群管理的,就和你得服务器管理员一样,无论是做监控还是做操作,通过docker-machine便可以去管理一片docker主机,在使用过程中,我们可以去使用virtualbox来安装多个虚拟机器来安装docker,并且使用docker-machine来管理这些机器
命令解析
使用Docker Machine和本地虚拟机的docker主机
https://docs.docker.com/machine/get-started/
如果是linux的用户,在我们已经确保服务器含有 VirtualBox 软件后(如果没有装virtualbox我们使用<code>#apt install virtualbox</code>), 我们可以直接安装docker提供的一个 Boot2Docker,Boot2Docker是一个专门用于运行Docker容器的轻量级Linux发行版,这样可以保证我们的本地电脑资源尽可能的少被我们不需要的程序浪费掉。
Docker-machine在创建一个虚拟主机的时候会直接去下载boot2docker。
- 初探运行一个包含docker的虚拟主机
如果遇到如下问题
rror with pre-create check: "Get https://github-
cloud.s3.amazonaws.com/releases/14930729/2a7d9b36-1aba-11e7-951b-a7c27f5bb4fd.iso?X-
Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-
Credential=AKIAISTNZFOVBIJMK3TQ%2F20170414%2Fus-east-1%2Fs3%2Faws4_request&X-
Amz-Date=20170414T013059Z&X-Amz-Expires=300&X-Amz-
Signature=b4fb1737c6bc10503dec6f45e0bf6de269336fdf1f939eca6657fa207cb4c87b&X-Amz-
SignedHeaders=host&actor_id=0&response-content-
disposition=attachment%3B%20filename%3Dboot2docker.iso&response-content-
type=application%2Foctet-stream: dial tcp 52.216.64.200:443: getsockopt: connection refused"
我们可以手动的去下载此镜像,然后放到docker-machine能找到的地方
为了确保你不重复工作,请下载最新的boot2docker版本
安装Boot2Docker
https://github.com/boot2docker/boot2docker/releases首秀测试
root@ubuntu-docker:/home# docker-machine create -d virtualbox mh-keystore
Running pre-create checks...
Error with pre-create check: "This computer doesn't have VT-X/AMD-v enabled. Enabling it in the BIOS is mandatory"
我的ubuntu-docker是运行在windows10宿主机上的Vmware里面的一个Ubuntu16的操作系统。下面是我查询到的一些问题,解决方案就是在vmware当中开启虚拟化引擎就可以了
https://github.com/docker/machine/issues/2256
接着测试,如果出现以下结果,就说明virtualbox安装成功了
root@ubuntu-docker:~/.docker/machine/cache# docker-machine create -d virtualbox mh-keystore
Running pre-create checks...
Creating machine...
(mh-keystore) Copying /root/.docker/machine/cache/boot2docker.iso to /root/.docker/machine/machines/mh-keystore/boot2docker.iso...
(mh-keystore) Creating VirtualBox VM...
(mh-keystore) Creating SSH key...
(mh-keystore) Starting the VM...
(mh-keystore) Check network to re-create if needed...
(mh-keystore) Found a new host-only adapter: "vboxnet0"
(mh-keystore) Waiting for an IP...
Waiting for machine to be running, this may take a few minutes...
Detecting operating system of created instance...
Waiting for SSH to be available...
Detecting the provisioner...
Provisioning with boot2docker...
Copying certs to the local machine directory...
Copying certs to the remote machine...
Setting Docker configuration on the remote daemon...
Checking connection to Docker...
Docker is up and running!
To see how to connect your Docker Client to the Docker Engine running on this virtual machine, run: docker-machine env mh-keystore
这样我们就创建了一个新的含有docker虚拟主机的环境
不得不说我的环境确实奇葩(windows10宿主机>Vmware(Ubuntu Linux)>VirtualBox(boot2docker))
docker-machine的详细使用
在我们已经搭建docker-machine要使用的virtual-box和boot2docker后,我们已经成功的运行了一个虚拟的主机操作系统并且已经内置了docker
-
1.查看已经启动的机器
- 2.查看主机上的环境
root@ubuntu-docker:/# docker-machine env mh-keystore
export DOCKER_TLS_VERIFY="1"
export DOCKER_HOST="tcp://192.168.99.100:2376"
export DOCKER_CERT_PATH="/root/.docker/machine/machines/mh-keystore"
export DOCKER_MACHINE_NAME="mh-keystore"
# Run this command to configure your shell:
# eval $(docker-machine env mh-keystore)
- 3.链接到主机的shell,如果没有任何的报错,就说明链接成功了
#eval "$(docker-machine env my-machine)"
- 4.查看主机的IP地址
$ docker run -d -p 8000:80 nginx
案例,在主机my-host中创建一个nginx的webserver