之的九种用法

之的九种用法,第1张

docker之docker-machine用法详解

本文主要介绍docker-machine用法的详细说明,通过示例代码详细介绍,对大家的学习或工作有一定的参考价值。有需要的朋友下面跟边肖学习。

Docker-machine是Docker提供的官方docker管理工具。

Docker-machine可以轻松做到:

在Windows和MAC平台上安装并运行docker

构建和管理多个docker主机

建立一个群体集群

win环境下安装的virtualbox,virtualbox安装的centos7,网络模式下的NAT+hostonly。

ip:192.168.56.102(仅限主机)

1。安装Docker-Machine:

curl-Lhttps://github.com/docker/machine/releases/download/v0.13.0/docker-machine-`uname-s`-`uname-m`>/tmp/docker-machine&& chmod+x/tmp/docker-machine&& sudocp/tmp/docker-machine/usr/local/bin/docker-machine

2。检查docker-机器版本:

#docker-machineversion [root@docker~]#docker-machineversion docker-machineversion0.13.0,build9ba6da9

3。在centos7中创建机器:

[root@localhost~]#docker-machinecreate-dvirtualboxdefault CreatingCA:/root/.docker/machine/certs/ca.pem Creatingclientcertificate:/root/.docker/machine/certs/cert.pem Runningpre-createchecks... Errorwithpre-createcheck:"VBoxManagenotfound.MakesureVirtualBoxisinstalledandVBoxManageisinthepath"

但是它报错了,以为virtualbox安装的centos7环境支持virtualbox驱动,结果发现环境安装支持virtualbox驱动。

使用virtualbox驱动需要安装virtualbox,Ubuntu的解决方案是:

所以采用通用驱动,详细介绍官网:https://docs.docker.com/machine/drivers/generic/

[root@localhost~]#docker-machinecreate-dgeneric--generic-ip-address=192.168.56.102--generic-ssh-key~/.ssh/id_rsa--

generic-ssh-user=根虚拟机
运行创建前检查...
创建计算机...
(vm)导入SSH密钥...
正在等待机器运行,这可能需要几分钟...
正在检测创建的实例的 *** 作系统...
等待SSH可用...
创建机器时出错:检测 *** 作系统时出错:等待SSH可用时重试次数过多。最后一个错误:超过了最大重试次数(60次)
-generic-ip-address=192.168.56.102:此处的IP指的是这台机器。如果您需要为其他远程docker主机安装它,您可以将其更改为其他docker主机IP(这里是本地创建的docker-machine)

仍然报告一个错误,这是因为docker-machine在为这台机器创建机器时也需要ssh验证:

[root@localhost~]#ssh-keygen [root@localhost~]#ssh-copy-idroot@192.168.56.102

将密码发送给自己,然后再次继续创建机器:

[root@localhost~]#docker-machinecreate-dgeneric--generic-ip-address=192.168.56.102--generic-ssh-key~/.ssh/id_rsa--generic-ssh-user=rootvm Runningpre-createchecks... Creatingmachine... (vm)ImportingSSHkey... Waitingformachinetoberunning,thismaytakeafewminutes... Detectingoperatingsystemofcreatedinstance... WaitingforSSHtobeavailable... Detectingtheprovisioner... Provisioningwithcentos... Copyingcertstothelocalmachinedirectory... Copyingcertstotheremotemachine... SettingDockerconfigurationontheremotedaemon... CheckingconnectiontoDocker... Dockerisupandrunning! ToseehowtoconnectyourDockerClienttotheDockerEnginerunningonthisvirtualmachine,run:docker-machineenvvm

最后,机器制造成功。

检查对接机:

[root@localhost~]#docker-machinels NAMEACTIVEDRIVERSTATEURLSWARMDOCKERERRORS vm-genericRunningtcp://192.168.56.102:2376v17.09.0-ce

要查看虚拟机的环境变量:

[root@localhost~]#docker-machineenvvm exportDOCKER_TLS_VERIFY="1" exportDOCKER_HOST="tcp://192.168.56.102:2376" exportDOCKER_CERT_PATH="/root/.docker/machine/machines/vm" exportDOCKER_MACHINE_NAME="vm" #Runthiscommandtoconfigureyourshell: #eval$(docker-machineenvvm)

加载环境变量:

[root@localhost~]#eval$(docker-machineenvvm)

使用ssh登录到机器:

[root@localhost~]#docker-machinessh--help Usage:docker-machinessh[arg...] LogintoorrunacommandonamachinewithSSH. Description: Argumentsare[machine-name][command] [root@localhost~]#docker-machinesshvm Lastlogin:SatNov417:55:532017from192.168.56.102 [root@vm~]#

现在开始在本地环境中创建一个容器:

[root@localhost~]#dockerrun-d--name=nginxnginx [root@localhost~]#dockerps-a CONTAINERIDIMAGECOMMANDCREATEDSTATUSPORTSNAMES 6e62975fab90nginx"nginx-g'daemon..."AboutaminuteagoUp59seconds80/tcpnginx

然后远程ssh到docker-machine:

[root@localhost~]#docker-machinesshvm Lastlogin:SatNov418:13:272017from192.168.56.102 [root@vm~]#dockerps-a CONTAINERIDIMAGECOMMANDCREATEDSTATUSPORTSNAMES 6e62975fab90nginx"nginx-g'daemon..."AboutaminuteagoUpAboutaminute80/tcpnginx

您可以看到docker主机和docker-machine主机中的容器id是相同的

docker-machine可以用来安装docker和创建容器

以上是在本地为自己创建一台机器,现在为远程docker主机创建一台docker-machine:
环境:centos7,192.168.101.14,Docker安装在vmware和docker-machine下,为这台Docker主机创建一台机器,192.168.56.102:
(两个IP转发不同,所以可以访问(vm下nat的静态IP为

1.首先,验证192.168.101.14和主机192.168.56.102之间的ssh连接:

[root@docker~]#ssh-keygen [root@docker~]#ssh-copy-idroot@192.168.56.102

2.创建机器:

[root@docker~]#docker-machinecreate-dgeneric--generic-ip-address=192.168.56.102--generic-ssh-key~/.ssh/id_rsa--generic-ssh-user=rootdefault CreatingCA:/root/.docker/machine/certs/ca.pem Creatingclientcertificate:/root/.docker/machine/certs/cert.pem Runningpre-createchecks... Creatingmachine... (default)ImportingSSHkey... Waitingformachinetoberunning,thismaytakeafewminutes... Detectingoperatingsystemofcreatedinstance... WaitingforSSHtobeavailable... Detectingtheprovisioner... Provisioningwithcentos... Copyingcertstothelocalmachinedirectory... Copyingcertstotheremotemachine... SettingDockerconfigurationontheremotedaemon... CheckingconnectiontoDocker... Dockerisupandrunning! ToseehowtoconnectyourDockerClienttotheDockerEnginerunningonthisvirtualmachine,run:docker-machineenvdefault

执行环境变量并进入机器环境:

[root@docker~]#docker-machineenvdefault [root@docker~]#eval$(docker-machineenvdefault)

3.检查创建的机器:

[root@docker~]#docker-machinels NAMEACTIVEDRIVERSTATEURLSWARMDOCKERERRORS default-genericRunningtcp://192.168.56.102:2376v17.09.0-ce

您可以看到在192.168.101.14环境中为远程主机192.168.56.102创建的机器。

4.创建容器:

[root@docker~]#dockerrun-d--name=nginxnginx(本地没有nginx镜像) b1f08986f6d5dbb1ede699e915bde734bab278fbe70f93af06ec2267fae2fef3 [root@docker~]#dockerps-a CONTAINERIDIMAGECOMMANDCREATEDSTATUSPORTSNAMES b1f08986f6d5nginx"nginx-g'daemon..."4secondsagoUp3seconds80/tcpnginx 5、ssh到machine: [root@docker~]#docker-machinesshdefault Lastlogin:SatNov418:51:492017from192.168.56.1 [root@default~]#dockerps-a CONTAINERIDIMAGECOMMANDCREATEDSTATUSPORTSNAMES b1f08986f6d5nginx"nginx-g'daemon..."23secondsagoUp22seconds80/tcpnginx

现在检查远程主机是否创建了容器:

[root@localhost~]#dockerps-a couldnotreadCAcertificate"/root/.docker/machine/machines/default/ca.pem":open/root/.docker/machine/machines/default/ca.pem:nosuchfileordirectory

错误报告原因:

因为我刚刚在192.168.56.102上为自己设置了机器,所以我保留了前一台机器的环境变量。虽然现在已经删除了,但是我设置了环境变量,取消了刚刚设置的环境变量:

[root@localhost~]#unsetDOCKER_TLS_VERIFY [root@localhost~]#unsetDOCKER_CERT_PATH [root@localhost~]#unsetDOCKER_MACHINE_NAME [root@localhost~]#unsetDOCKER_HOST

然后再检查一遍:

[root@localhost~]#dockerps-a CONTAINERIDIMAGECOMMANDCREATEDSTATUSPORTSNAMES b1f08986f6d5nginx"nginx-g'daemon..."8minutesagoUp8minutes80/tcpnginx

可以发现远程主机的容器已成功创建。

现在192.168.101.14上存在映像centos_nginx:v4,但是远程主机192.168.56.102没有这个映像。现在创建一个容器,看看远程主机能否创建成功?

[root@docker~]#dockerpullregistry.cn-hangzhou.aliyuncs.com/wadeson/jsonhc:v4 [root@docker~]#dockerimages REPOSITORYTAGIMAGEIDCREATEDSIZE nginxlatestb72d63324dbb13hoursago108MB registry.cn-hangzhou.aliyuncs.com/wadeson/jsonhcv46c5128aaff052daysago464MB

然后在远程主机上检查它:

[root@localhost~]#dockerimages REPOSITORYTAGIMAGEIDCREATEDSIZE nginxlatestb72d63324dbb13hoursago108MB registry.cn-hangzhou.aliyuncs.com/wadeson/jsonhcv46c5128aaff052daysago464MB

您可以看到两台主机的镜像是同步的,容器也是同步的。

下面vm的docker可以在virtualbox下为docker创建容器
,更本地的可以通过docker-machine为云等其他环境创建容器

在此之前,192.168.101.14的图像都没有了。这是因为设置了机器环境变量:

unsetDOCKER_TLS_VERIFY unsetDOCKER_CERT_PATH unsetDOCKER_MACHINE_NAME unsetDOCKER_HOST

执行上述 *** 作,取消机器的环境变量,返回到原始环境:

[root@docker~]#dockerimages REPOSITORYTAGIMAGEIDCREATEDSIZE centos_initv1383ff350244326hoursago448MB centos_nginxv86f792dc07c352daysago464MB centos_nginxv79e875385d6be2daysago464MB centos_nginxv6959fdf4d42882daysago464MB centos_nginxv55c11313066862daysago464MB registry.cn-hangzhou.aliyuncs.com/wadeson/jsonhcv46c5128aaff052daysago464MB 192.168.101.14:5000/centos_nginxv46c5128aaff052daysago464MB centos_nginxv46c5128aaff052daysago464MB centos_nginxv30e49a2c0562f2daysago464MB centos_nginxv22031faf8894a2daysago464MB centos_nginxv178d18f16e7573daysago464MB registrylatest2ba7189700c89daysago33.3MB ubuntulatest747cb2d60bbe3weeksago122MB centoslatest196e0ce0c9fb7weeksago197MB

如果需要返回机器环境,只需继续执行机器环境变量。这样,本地和远程镜像和容器就被很好地隔离了。

关于docker-machine用法的详细解释这篇文章就到这里了。有关docker-machine用法的更多信息,请搜索我们以前的文章或继续浏览下面的相关文章。希望大家以后能多多支持我们!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/774171.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-03
下一篇 2022-05-03

发表评论

登录后才能评论

评论列表(0条)

保存