在单台主机上安装Docker并不困难,当试图在其他主机上管理Docker安装时就比较麻烦了。
Docker Machine主要是一个便利程序。将大量配置外部宿主机的繁琐的指令包装起来,变成一些易于上手的命令。
安装Docker Machine:
[root@localhost ~]# curl -L https://github.com/docker/machine/releases/download/v0.16.1/docker-machine-`uname -s`-`uname -m` > /tmp/docker-machine 其他操作系统,可以参考:https://github.com/docker/machine/releases [root@localhost ~]# chmod +x /tmp/docker-machine [root@localhost ~]# cp /tmp/docker-machine /usr/local/bin/docker-machine
为了演示Docker Machine的用法,可以创建一个上面运行着Docker守护进程的虚拟机。假定选用VirtualBox虚拟机管理器。
安装VirtualBox:
[root@localhost ~]# wget https://download.virtualbox.org/virtualbox/6.0.4/VirtualBox-6.0-6.0.4_128413_el7-1.x86_64.rpm [root@localhost ~]# yum -y install VirtualBox-6.0-6.0.4_128413_el7-1.x86_64.rpm [root@localhost ~]# yum -y install gcc make perl kernel kernel-devel [root@localhost ~]# /sbin/vboxconfig vboxdrv.sh: Stopping VirtualBox services. vboxdrv.sh: Starting VirtualBox services. vboxdrv.sh: Building VirtualBox kernel modules.
Docker Machine创建虚拟机需要用到boot2docker.iso文件,首次下载时速度较慢,可以通过其他途径下载:
可以使用迅雷快速下载:https://github.com/boot2docker/boot2docker/releases/download/v18.09.2/boot2docker.iso 下载完成后,将文件添加到/root/.docker/machine/cache/目录下
如果是在VMWare虚拟机里使用docker-machine,需要设置VMWare虚拟机虚拟化引擎(在虚拟机关机状态才能设置),否则创建虚拟机过程会报错:
Error with pre-create check: "This computer doesn't have VT-X/AMD-v enabled. Enabling it in the BIOS is mandatory"
设置方法如下图,选中“虚拟化 Intel VT-x/EPT 或 AMD-V/RVI(V)”复选框:
创建一个正常运行着Docker守护进程的虚拟机,通过--driver参数来指定虚拟机类型:
[root@localhost ~]# docker-machine create --driver virtualbox host1 Running pre-create checks... Creating machine... (host1) Copying /root/.docker/machine/cache/boot2docker.iso to /root/.docker/machine/machines/host1/boot2docker.iso... (host1) Creating VirtualBox VM... (host1) Creating SSH key... (host1) Starting the VM... (host1) Check network to re-create if needed... (host1) Found a new host-only adapter: "vboxnet0" (host1) 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 host1
如果想为创建的虚拟机指定其他参数,可以通过以下命令获取帮助:
[root@localhost ~]# docker-machine create --driver virtualbox --help
通过以下命令,获取新创建的虚拟机的相关信息:
[root@localhost ~]# docker-machine env host1 export DOCKER_TLS_VERIFY="1" export DOCKER_HOST="tcp://192.168.99.100:2376" export DOCKER_CERT_PATH="/root/.docker/machine/machines/host1" export DOCKER_MACHINE_NAME="host1" # Run this command to configure your shell: # eval $(docker-machine env host1)
通过eval $(docker-machine env host1)命令可以获取到docker-machine env host1命令的输出,然后将它应用到当前bash环境。运行该命令之后,Docker命令将会指向到创建好的虚拟机上,而不再是之前使用的宿主机。
[root@localhost ~]# eval $(docker-machine env host1) [root@localhost ~]# env | grep DOCKER DOCKER_HOST=tcp://192.168.99.100:2376 DOCKER_MACHINE_NAME=host1 DOCKER_TLS_VERIFY=1 DOCKER_CERT_PATH=/root/.docker/machine/machines/host1 [root@localohst ~]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
也可以通过ssh的方式直接连接到新的虚拟机上:
[root@localhost ~]# docker-machine ssh host1
Docker Machine为通过一个客户端机管理多台Docker宿主机提供了管理命令,如下表:
子命令 |
作用 |
create |
创建一台新的虚拟机 |
ls |
列出Docker宿主机,当前活跃的机器旁边标有一个星号 |
stop |
停止机器 |
start |
启动机器 |
restart |
重启机器 |
rm |
销毁一台机器 |
kill |
杀掉一台机器 |
inspect |
以JSON格式返回机器的元数据 |
config |
返回连接机器所需的配置信息 |
ip |
返回一台机器的IP地址 |
url |
返回一台机器上Docker守护进程的URL |
upgrade |
将宿主机上的Docker升级到最新版本 |
如何切换回原来宿主机上的Docker实例?
第一种,可以使用docker-machine rm命令删除所有虚拟机; 第二种,通过unset DOCKER_HOST DOCKER_MACHINE_NAME DOCKER_TLS_VERIFY DOCKER_CERT_PATH命令删除之前设置的环境变量。
以上,通过虚拟机了解了如何使用Docker Machine,如何在远程主机使用呢?
[root@localhost ~]# docker-machine create --driver generic --generic-ip-address=192.168.1.102 --generic-ssh-user=root --generic-ssh-key=/root/.ssh/id_rsa host2