一、利用docker-machine,在本地创建Linux虚拟机
docker-machine(工具)会随着Docker.dmg的安装自动安装好,docker-machine也可以做为工具单独安装。
本质上docker-machine是一个虚拟机管理工具,它通过创建一个安装好docker的虚拟机(支持VirtualBox,DigitalOcean,EC2等),并设置对应的环境变量(DOCKER_HOST,DOCKER_MACHINE_NAME等),使得本地的docker工具获得透明远程操作虚拟机的能力。从而使本身不支持docker的Windows和Mac系统能够直接使用docker命令。
安装好docker后,进入终端查看docker-machine版本:
docker-machine -version
安装Linux虚拟机(该命令安装好虚拟机后,会自动在虚拟机上安装Docker服务,本地主机需要安装好VirtualBox
软件):
docker-machine create demo
安装成功后输出:
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 demo
安装完成后,查看VirtualBox软件发现已经出现一台名为demo的虚拟机。
进入本机终端,列出当前已经创建或正在运行的虚拟机:
docker-machine ls
输出:
NAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORS
demo - virtualbox Running tcp://192.168.99.100:2376 v18.04.0-ce
可以看到已经出现了名为demo的虚拟机
进入到demo机器里面:
docker-machine ssh demo
还有其他docker-machine命令,使用命令提示:
# 提示所有命令
docker-machine --help
二、本地docker client连接虚拟机的docker daemon
在本地关闭docker服务后,运行docker version
,输出:
Client:
Version: 18.03.0-ce
API version: 1.37
Go version: go1.9.4
Git commit: 0520e24
Built: Wed Mar 21 23:06:22 2018
OS/Arch: darwin/amd64
Experimental: false
Orchestrator: swarm
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
可以看到此时本机的docker client无法连接到本机的docker deamon
进入本机终端,打印出demo虚拟机中的环境变量:
docker-machine env demo
输出:
export DOCKER_TLS_VERIFY="1"
export DOCKER_HOST="tcp://192.168.99.100:2376"
export DOCKER_CERT_PATH="/Users/xiangshaopeng/.docker/machine/machines/pengwork1"
export DOCKER_MACHINE_NAME="pengwork1"
# Run this command to configure your shell:
# eval $(docker-machine env pengwork1)
执行命令:
eval $(docker-machine env demo)
该命令的意思就是把$(docker-machine env demo)
的输出当做shell命令在当前shell下执行。最终的结果就是当前shell下多了几个环境变量,docker client就是靠着这些环境变量来决定和docker daemon交互的行为的。
最后在终端执行docker version
输出:
Client:
Version: 18.03.0-ce
API version: 1.37
Go version: go1.9.4
Git commit: 0520e24
Built: Wed Mar 21 23:06:22 2018
OS/Arch: darwin/amd64
Experimental: false
Orchestrator: swarm
Server:
Engine:
Version: 18.04.0-ce
API version: 1.37 (minimum version 1.12)
Go version: go1.9.4
Git commit: 3d479c0
Built: Tue Apr 10 18:23:35 2018
OS/Arch: linux/amd64
Experimental: false
此时本地docker client已经成功的连接到了demo虚拟机中的docker daemon
关于docker-machine连接阿里云服务器的相关步骤,请阅读下篇博客:
《Docker(三)docker-machine连接云服务器》