前面《Docker学习—Compose》文中介绍了Compose的使用方式;接下来继续了解docker三剑客之一的 Machine;html
Docker Machine是一个能够在虚拟主机上安装Docker引擎,并使用Docker Machine命令管理主机的工具。您可使用计算机在本地Mac或Windows box、公司网络、数据中心或云提供商(如Azure、AWS)上建立Docker主机。node
Docker Machine是一个工具,可让您在虚拟主机上安装Docker Engine,使用Docker Machine命令,您能够启动、检查、中止和从新启动托管主机,升级Docker客户端和守护程序,并配置Docker客户端与主机对话。 git
Docker Machine有这两个普遍的用例。github
若是您主要在旧版Mac或Windows笔记本电脑或桌面上工做,但不符合新的Docker desktop for Mac和Docker desktop for Windows apps的要求,则须要Docker Machine在本地运行Docker Engine。docker
Docker引擎在Linux系统上本机运行。若是您的主系统是Linux机器,而且但愿运行docker命令,您只需下载并安装docker Engine。可是,若是你想在一个网络上、云端甚至本地提供多个Docker主机,你须要Docker Machine。windows
一般说“ Docker”时,一般指的是Docker Engine,由Docker守护程序组成的客户端-服务器应用程序,用于指定与守护程序交互的接口的REST API和与守护程序进行对话的命令行界面(CLI)客户端(经过REST API包装器)。api
Docker Engine从CLI接受命令,安全
例如 :docker run <image> 启动容器运行镜像;
docker ps
列出正在运行的容器;docker image ls
列出镜像列表等服务器
Docker Machine是用于调配和管理Docker主机(带有Docker Engine的主机)的工具。一般,您在本地系统上安装Docker Machine。Docker Machine有本身的命令行客户端 docker-machine
和Docker Engine客户端docker
。您可使用Machine在一个或多个虚拟系统上安装Docker Engine。这些虚拟系统能够是本地的(如在Mac或Windows上使用Machine在VirtualBox中安装并运行Docker Engine时),也能够是远程的(如在Mac上使用Cloud在云提供商上配置Docker主机时)。能够将Dockeri主机自己视为(有时也称为托管的“机器”)。网络
本次示例采用windows docker 中使用Docker Machine来实现虚拟环境(hyper-v)中dcoker环境 生成
一、安装Docker Machine:
$ base=https://github.com/docker/machine/releases/download/v0.16.0 && curl -L $base/docker-machine-$(uname -s)-$(uname -m) >/usr/local/bin/docker-machine && chmod +x /usr/local/bin/docker-machine
$ 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
$ base=https://github.com/docker/machine/releases/download/v0.16.0 && mkdir -p "$HOME/bin" && curl -L $base/docker-machine-Windows-x86_64.exe > "$HOME/bin/docker-machine.exe" && chmod +x "$HOME/bin/docker-machine.exe"
二、查看安装版本:docker-machine version
三、设置hyper-网络代理
进入Hyper-V 管理器添加虚拟交换器以下图:
四、使用docker-machine建立docker环境:在Git BASH执行如下命令
命令:docker-machine create -d hyperv --hyperv-virtual-switch <NameOfVirtualSwitch> <nameOfNode>
示例:docker-machine create -d hyperv docker_Virtual_Switch worker1--hyperv-virtual-switch
该命令下载安装了Docker守护程序的轻量级Linux发行版(boot2docker)并在hyperv中建立名为<nameOfNode>的实例运行。 具体docker-machine命令还须要进一步学习
结果以下: 则建立docker环境成功
五、进入建立docker环境:
--进入worker1环境
$ eval $("C:\Users\cwsheng\bin\docker-machine.exe" env worker1) --查看worker1中运行容器 $ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
Options: --debug, -D 启用调试模式 --storage-path, -s "C:\Users\cwsheng\.docker\machine" 配置存储路径 [$MACHINE_STORAGE_PATH] --tls-ca-cert 验证远程CA [$MACHINE_TLS_CA_CERT] --tls-ca-key 生成证书的私钥 [$MACHINE_TLS_CA_KEY] --tls-client-cert 用于TLS的客户端证书 [$MACHINE_TLS_CLIENT_CERT] --tls-client-key 客户端TLS身份验证中使用的私钥[$MACHINE_TLS_CLIENT_KEY] --github-api-token 用于请求Github API的令牌 [$MACHINE_GITHUB_API_TOKEN] --native-ssh 使用本机(基于Go的)SSH实现 [$MACHINE_NATIVE_SSH] --bugsnag-api-token 用于崩溃报告的BugSnag API令牌 [$MACHINE_BUGSNAG_API_TOKEN] --help, -h 显示帮助列表 --version, -v 显示版本 Commands: active 输出活动状态的机器 config 输出指定机器的链接配置 create 建立一个机器 env 显示docker客户端环境设置的命令 inspect 查看机器相关信息 ip 获取机器的IP地址 kill 杀死一台机器 ls 显示机器列表 provision 重现提供现有机器 regenerate-certs 为机器从新生成TLS证书 restart 重启机器 rm 移除机器 ssh 在使用SSH的机器上登陆或运行命令 scp 在机器之间复制文件 mount 从具备SSHFS的计算机上装载或卸载目录 start 启动机器 status 获取机器状态 stop 暂停机器 upgrade 将计算机升级到Docker的最新版本 url 获取机器的URL version 显示Docker Machine版本 help 显示命令的帮组列表
重点关注建立时相关参数设置:
启用Swarm体验功能--driver, -d "none" 用来建立机器的驱动程序 --engine-install-url "https://get.docker.com" 用于引擎安装的自定义URL [$MACHINE_DOCKER_INSTALL_URL] --engine-opt [--engine-opt option --engine-opt option] 以flag=value的形式指定要包含在所建立引擎中的任意标志 --engine-insecure-registry [--engine-insecure-registry option --engine-insecure-registry option] 指定建立引擎运行不安全注册表 --engine-registry-mirror [--engine-registry-mirror option --engine-registry-mirror option] 指定要使用注册表镜像 [$ENGINE_REGISTRY_MIRROR] --engine-label [--engine-label option --engine-label option] 为建立的引擎指定标签 --engine-storage-driver 指定要与引擎一块儿使用的存储驱动程序 --engine-env [--engine-env option --engine-env option] 指定要在引擎中设置的环境变量 --swarm 机器集群配置 --swarm-image "swarm:latest" 指定用于集群的docker镜像 [$MACHINE_SWARM_IMAGE] --swarm-master 将机器设置集群管理节点 --swarm-discovery 使用swarm发现服务 --swarm-strategy "spread" 为Swarm定义一个默认的调度策略 --swarm-opt [--swarm-opt option --swarm-opt option] 为swarm定义任意标志 --swarm-host "tcp://0.0.0.0:3376" 监听Swarm master的ip/socket --swarm-addr 为Swarm作addr的地址(默认:检测并使用机器IP) --swarm-experimental
#####根据driver不一样参数会有些不一样######
……
machine官方说明:https://docs.docker.com/machine/
hyper-v驱动使用说明:https://docs.docker.com/machine/drivers/hyper-v/
后续:下一篇将开始对docker集群进行学习,先使用swarm 方式