docker——三剑客之Docker Machine

Docker Machine是Docker官方三剑客项目之一,负责使用Docker的第一步,在多种平台上快速安装Docker环境
它支持多种平台,让用户在很短时间内搭建一套Docker主机集群

Machine项目是Docker官方的开源项目,负责实现对Docker主机本身进行管理。
Machine项目主要由GO编写,用户可以在本地任意指定被Machine管理的Docker主机,并对其进行操作。
Machine定位是“在本地或者云环境中创建Docker主机”

Docker Machine是一个工具,它允许你在虚拟宿主机上安装Docker Engine,并使用docker-machine命令管理这些宿主机。
你可以使用Machine在你本地的Mac或Window box、公司网络、数据中心、或像AWS这样的云提供商上创建Docker宿主机。
使用docker-machine命令,你可以启动、审查、停止和重新启动托管的宿主机、升级Docker客户端和守护进程、并配置Docker客户端与你的宿主机通信。

Docker Machine使你能够在各种Linux上配置多个远程Docker宿主机。
此外,Machine允许你在较早的Mac或Windows系统上运行Docker。

如果你有一个Linux作为你的主系统,并且想要运行docker命令,你需要做的就是下载并且安装Docker Engine。
然而,如果你想要在网络上、云中甚至本地配置多个Docker宿主机,你需要Docker Machine。

无论你的主系统是Mac、Windows还是Linux,你都可以在其上安装Docker Machine,并且用docker-machine命令来配置和管理大量的Docker宿主机。
它会自动创建宿主机、在其上安装Docker Engine、然后配置docker客户端。
每个被管理的宿主机('machine')是Docker宿主机和配置好的客户端的结合。

Docker Engine是一个客户端-服务器应用程序,由Docker守护进程、一个REST API指定与守护进程交互的接口、和一个命令行接口(CLI)与守护进程通信。
Docker Engine从CLI中接受docker命令,例如docker run,docker ps。

Docker Machine是一个用户配置和管理你的宿主机(上面具有Docker Engine的主机)的工具
通常,你在你的本地系统上安装Docker Machine。Docker Machine有自己的命令行客户端docker-machine和Docker Engine客户端Docker。
你可以使用Machine在一个或多个虚拟系统上安装Docker Engine。
这些虚拟系统可以是本地的(就像你在Mac或者Windows上使用Machine在VirtualBox中安装和运行Docker Engine一样)或远程的(就像你使用Machine在云提供商上provision Dockerized宿主机上一样)。
Dockerized宿主机本身可以认为是,且有实就称为,被管理的"machines"。

 

1.安装

curl -L https://github.com/docker/machine/releases/download/v0.16.0/docker-machine-`uname -s`-`uname -m` >/tmp/docker-machine
chmod +x /tmp/docker-machine
sudo cp /tmp/docker-machine /usr/local/bin/docker-machine

 

2.使用

Docker Machine通过多种后端驱动来管理不同的资源,包括虚拟机、本地主机和云平台。
通过-d选项可以选择支持的驱动类型,下面主要讲通过本地主机来配置Docker主机。
这种驱动适合主机操作系统的SSH服务已经安装好,需要对其安装docker引擎。
首先确保本地主机可以通过user账号的key直接通过ssh连接到目标主机,这就需要提前复制公钥文件,达到无密码登录。


配置之前:

[root@centos004 .ssh]# docker
-bash: docker: command not found

可以发现目前并没有安装docker。

[root@centos003 .ssh]# docker-machine create -d generic --generic-ip-address=129.28.86.57 --generic-ssh-user=root test2
Running pre-create checks...
Creating machine...
(test2) No SSH key specified. Assuming an existing key at the default location.
Waiting for machine to be running, this may take a few minutes...
Detecting operating system of created instance...
Waiting for SSH to be available...  等待ssh响应
Detecting the provisioner...
Provisioning with centos...
Copying certs to the local machine directory...  拷贝证书
Copying certs to the remote machine...
Setting Docker configuration on the remote daemon...  配置daemon
Checking connection to Docker...
Docker is up and running!  启动Docker
To see how to connect your Docker Client to the Docker Engine running on this virtual machine, run: docker-machine env test2

从命令输出上可以看出,Machine通过SSH连接到指定节点,并在上面安装Docker引擎。
创建成功之后可以通过docker-machine ls命令查看注册到本地管理列表中的DDocker主机。

[root@centos003 .ssh]# docker-machine ls
NAME    ACTIVE   DRIVER    STATE     URL                       SWARM   DOCKER     ERRORS  
test2   -        generic   Running   tcp://129.28.86.57:2376           v18.09.0

此时再去对应的主机上查看是否安装成功,可以通过版本号来验证:

[root@test ~]# docker -v
Docker version 18.09.0, build 4d60db4

可以通过inspect命令查看具体的主机信息。

 

3.Machine命令

命令格式:
  docker-machine [OPTIONS] COMMAND [arg...]

如果想要查看每个命令的完整信息可以使用--help。

  docker-machine COMMAND --help


OPTIONS选项列表:

  COMMAND选项列表:

 下面是具体的说明:

(1)active

Usage: docker-machine active [OPTIONS] [arg...]

(2)config

Usage: docker-machine config [OPTIONS] [arg...]

查看激活Docker主机的连接信息。

[root@centos003 .ssh]# docker-machine config test2
--tlsverify
--tlscacert="/root/.docker/machine/machines/test2/ca.pem"
--tlscert="/root/.docker/machine/machines/test2/cert.pem"
--tlskey="/root/.docker/machine/machines/test2/key.pem"
-H=tcp://129.28.86.57:2376

(3)create

Usage: docker-machine config [OPTIONS] [arg...]

创建一个Docker主机。

选项包括:

  • --driver, -d "virtualbox"  指定驱动类型
  • --engine-install-url "https://get.docker.com"  配置docker主机时的安装URL
  • --engine-opt [--engine-opt option --engine-opt option]  以键值对格式指定所创建Docker引擎的参数
  • --engine-insecure-registry [--engine-insecure-registry option --engine-insecure-registry option]  以键值对格式指定所创建Docker引擎允许访问的不支持认证的注册仓库服务
  • --engine-registry-mirror [--engine-registry-mirror option --engine-registry-mirror option] 指定使用注册仓库镜像
  • --engine-label [--engine-label option --engine-label option]  为所创建的Docker引擎添加标签
  • --engine-storage-driver  存储后端驱动类型
  • --engine-env [--engine-env option --engine-env option]  指定环境变量
  • --swarm  指定使用Swarm
  • --swarm-addr  指定地址发送广播加入Swarm集群服务
  • --swarm-discovery  Swarm集群的服务发现机制参数
  • --swarm-host "tcp://0.0.0.0:3376"  指定地址将监听Swarm master节点请求
  • --swarm-image "swarm:latest"使用Swarm时候采用的镜像
  • --swarm-master  配置机器作为Swarm集群的master节点
  • --swarm-opt [--swarm-opt option --swarm-opt option]  任意传递给Swarm的参数
  • --swarm-strategy "spread"  Swarm默认调度策略

(4)env

Usage: docker-machine env [OPTIONS] [arg...]

显式连接到某个主机需要的环境变量。

[root@centos003 .ssh]# docker-machine env test2
export DOCKER_TLS_VERIFY="1"
export DOCKER_HOST="tcp://129.28.86.57:2376"
export DOCKER_CERT_PATH="/root/.docker/machine/machines/test2"
export DOCKER_MACHINE_NAME="test2"
# Run this command to configure your shell: 
# eval $(docker-machine env test2)

(5)inspect

Usage: docker-machine inspect [OPTIONS] [arg...]

[root@centos003 .ssh]# docker-machine inspect test2
{"ConfigVersion": 3,"Driver": {"IPAddress": "129.28.86.57","MachineName": "test2","SSHUser": "root","SSHPort": 22,"SSHKeyPath": "","StorePath": "/root/.docker/machine","SwarmMaster": false,"SwarmHost": "","SwarmDiscovery": "","EnginePort": 2376,"SSHKey": ""},"DriverName": "generic","HostOptions": {"Driver": "","Memory": 0,"Disk": 0,"EngineOptions": {"ArbitraryFlags": [],"Dns": null,"GraphDir": "","Env": [],"Ipv6": false,"InsecureRegistry": [],"Labels": [],"LogLevel": "","StorageDriver": "","SelinuxEnabled": false,"TlsVerify": true,"RegistryMirror": [],"InstallURL": "https://get.docker.com"},"SwarmOptions": {"IsSwarm": false,"Address": "","Discovery": "","Agent": false,"Master": false,"Host": "tcp://0.0.0.0:3376","Image": "swarm:latest","Strategy": "spread","Heartbeat": 0,"Overcommit": 0,"ArbitraryFlags": [],"ArbitraryJoinFlags": [],"Env": null,"IsExperimental": false},"AuthOptions": {"CertDir": "/root/.docker/machine/certs","CaCertPath": "/root/.docker/machine/certs/ca.pem","CaPrivateKeyPath": "/root/.docker/machine/certs/ca-key.pem","CaCertRemotePath": "","ServerCertPath": "/root/.docker/machine/machines/test2/server.pem","ServerKeyPath": "/root/.docker/machine/machines/test2/server-key.pem","ClientKeyPath": "/root/.docker/machine/certs/key.pem","ServerCertRemotePath": "","ServerKeyRemotePath": "","ClientCertPath": "/root/.docker/machine/certs/cert.pem","ServerCertSANs": [],"StorePath": "/root/.docker/machine/machines/test2"}},"Name": "test2"
}

(6)ip

获取指定Docker主机地址。

[root@centos003 .ssh]# docker-machine ip test2
129.28.86.57

(7)kill

直接杀死指定的Docker主机,指定Docker主机会强行停止。

 

转载于:https://www.cnblogs.com/yangmingxianshen/p/10153586.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/249996.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

egret:什么是脏矩形

脏矩形是2D图形性能优化一个重要的概念。Egret2.5开始脏矩形完全可以由引擎自动计算,即大名鼎鼎的"自动脏矩形"。 简单说脏矩形,就是画面刷新时,产生变化而需要重绘的舞台局部区域。 什么叫脏,即什么情况下会弄脏&#…

软件项目管理(一)

首先软件项目管理,什么是项目?什么是软件项目? 项目是唯一的,临时的,即在一定的时间内完成。 具体定义:项目是为了创造一个唯一的产品或提供一个唯一的服务而进行的临时性的努力。 项目的特征: …

strace参数

strace参数 strace参数 -c 统计每一系统调用的所执行的时间,次数和出错的次数等. -d 输出strace关于标准错误的调试信息. -f 跟踪由fork调用所产生的子进程. -ff 如果提供-o filename,则所有进程的跟踪结果输出到相应的filename.pid中,pid是各进程的进程号. -F 尝试跟踪vfork调…

软件项目管理(二)

根据上次的路线图 从项目初始开始:包括项目确立和生存期 项目确立分成 项目立项、项目招投标、项目授权 项目立项:确定项目的目标、时间、资源、资金,关键在于得到项目发起人的认可 一个软件项目的立项开始于软件项目的启动,只…

centos6.5和centos7.5统一字符集为zh_CN.UTF-8解决系统和MySQL数据库乱码问题

linux的服务器需要做的操作 centos6.5下&#xff1a; 修改默认字符集为 zh_CN.UTF-8&#xff0c;如果没有中文语言包可能需要安装中文语言包支持 [rootmeinv01 ~]# yum groupinstall chinese-support [rootmeinv01 ~]# cat /etc/sysconfig/i18n #<修改此配置文件为如下 L…

软件项目管理(三)

上次讲完了项目初始部分&#xff0c;包括立项、招投标、授权 在进入第二部分&#xff0c;项目计划 前我们要先了解软件的需求以及任务的分解 软件需求管理 软件需求定义&#xff1a;用户对软件功能和性能的要求 软件需求管理过程&#xff1a;需求获取、需求分析、需求规格…

Winform-图片上传

1.界面上拖个.pictureBox(pictureBox1) //上传点击按钮 private void button1_Click(object sender, EventArgs e) { OpenFileDialog fileDialog new OpenFileDialog(); DialogResult result fileDialog.ShowDialog(); if (result DialogResult.OK) { this.pictureBox1.Imag…

moment.js 快捷查询

格式化日期 当前时间&#xff1a;moment().format(YYYY-MM-DD HH:mm:ss); //2014-09-24 23:36:09 今天是星期几&#xff1a;moment().format(d); //3 转换当前时间的Unix时间戳&#xff1a;moment().format(X); 相对时间 20120901相对当前日期是2年前moment("20120901&quo…

My97 DatePicker获取自定义日期的前一天

1.控件&#xff0c;获取第一个input中的时间&#xff0c;再将这个时间的前一天赋值给第二个input <input type"text" class"form-control input-sm" id"recordTime" style"width:145px" οnclick"WdatePicker({onpicked:chang…

Underscore.js 源码学习笔记(下)

上接 Underscore.js 源码学习笔记&#xff08;上&#xff09; 756 行开始 函数部分。 var executeBound function(sourceFunc, boundFunc, context, callingContext, args) {if (!(callingContext instanceof boundFunc)) return sourceFunc.apply(context, args);var self …

软件项目管理(四)

上一篇介绍了软件项目的需求分析和任务分解&#xff0c;即软件项目的范围计划&#xff0c;那么对于一个软件项目来说&#xff0c;我们还需要知道它需要多少时间多少成本&#xff0c;如何得到这些数据就是这次要解决的问题&#xff0c;即项目的成本计划 在项目未完成之前谁也不…

js中的时间与毫秒数互相转换

【1】js毫秒时间转换成日期时间var oldTime (new Date("2012/12/25 20:11:11")).getTime(); //得到毫秒数 //不是上面格式的时间需要转换//starttime 2012-12-25 20:17:24;starttime starttime.replace(new RegExp("-","gm"),"/");…

Spring Cloud Sleuth 中id的使用

Spring Cloud Sleuth采用的是Google的开源项目Dapper的专业术语。 Span&#xff1a;基本工作单元&#xff0c;发送一个远程调度任务 就会产生一个Span&#xff0c;Span是一个64位ID唯一标识的&#xff0c;Trace是用另一个64位ID唯一标识的&#xff0c;Span还有其他数据信息&…

软件项目管理(五)

在get到成本计划后&#xff0c;我们便要着手开始对项目的进度进行计划&#xff0c;即这次的核心计划之一进度计划。 进度计划的重要性&#xff1a;按时完成项目是项目经理最大的挑战之一&#xff0c;时间是项目规划中灵活性最小的因素&#xff0c;进度问题是项目冲突的主要原因…

BZOJ2301: [HAOI2011]Problem b(莫比乌斯反演)

Description 对于给出的n个询问&#xff0c;每次求有多少个数对(x,y)&#xff0c;满足a≤x≤b&#xff0c;c≤y≤d&#xff0c;且gcd(x,y) k&#xff0c;gcd(x,y)函数为x和y的最大公约数。Input 第一行一个整数n&#xff0c;接下来n行每行五个整数&#xff0c;分别表示a、b、c…

Js正则表达式数字或者带小数点的数字

function chk() {var patrn /^\d(\.\d)?$/;var result true;$("input[typetext]").each(function () {if (!patrn.exec(this.value)) {alert("请输入正确的数字&#xff01;");result false;}})return result;}转载于:https://www.cnblogs.com/smzd/p/…

FastJson/spring boot: json输出

1.引入FastJson依赖包 <!-- FastJson --><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.15</version></dependency>pom.xml参考 <project xmlns"http://maven.apa…

safari 调试iPhone web页面

safari设置-打开Safari偏好者设置&#xff0c;选中“高级菜单”&#xff0c;在页面最下方看到“在菜单中显示开发菜单”的复选框&#xff0c;在复选框内打钩&#xff0c;这样设置完毕就能在Safari菜单中看到开发菜单了iPhone 设置-打开iPhone手机设置app 选择Safari&#xff0c…

new函数

使用new函数是另一种创建变量的方式。创建一个未命名的T类型变量&#xff0c;初始化为T类型的零值&#xff0c;并返回其地址。例如&#xff1a; p : new(int)使用new函数创建变量和取其地址的普通局部变量没有不同&#xff0c;只是不需要引入声明时的一个名字&#xff0c;有语法…