Docker和VM共存问题

介绍

Docker基于hyper-v虚拟技术,hyper-v为windows自带,和vm虚拟技术有冲突不能共存,安装docker和hyper-v后,运行vm虚拟机报如下错误。

Docker和VM共存问题_第1张图片

 

最low就是使用vm时,到控制台添加和删除功能那里把hyper-v先去掉,但每次卸载重装重启很麻烦。也有通过修改启动项配置来共存的,开始加载了hyper-v,当需要使用vm时也需要重启,不是特别方便。

Docker和vm共存

在docker官方文档中,机器驱动有一个vmware,地址:https://docs.docker.com/machine/drivers/,如下图。

Docker和VM共存问题_第2张图片

 

下载后将其复制到docker.exe所在目录,即c:\program files\docker\docker\resources\bin下,如下图。

Docker和VM共存问题_第3张图片

 

然后打开命令行输入docker-machine ls来查看是否有创建的实例,docker-machine命令来创建环境和实例,ls罗列意思,如下图。

Docker和VM共存问题_第4张图片

 

上图内容是空,即没有实例,说到这里就顺便记一下docker-machine的常用参数,如下。

查看已有实例:docker-machine ls

暂停test实例:docker-machine stop test

删除test实例:docker-machine rm test

启动test实例:docker-machine start test

创建test实例:docker-machine create –-driver=vmwareworkstation dev(说明:driver指程序,即实例要运行哪个程序,vmwareworkstation就是我们刚才下载程序的文件名,这里注意文件名是docker-machine-driver-vmwareworkstation,我们取driver后面的即可,dev是name名称)。

重启test实例:docker-machine restart test

以上是几个常用的,更多可以看docker-machine参数说明。Docker-machine -help。

了解基本使用后,我们需要拿刚才下载的vm插件创建一个实例,如下图,这里记录一个错误(设置共存前我使用过hyper-v)。

 

提示没有返回ip请求超时,网上搜索资料说需要卸载hyper-v,否则vm无法正常启动,无法返回docker所需的ip等信息(这也说明,运行创建命令时需要把vm打开),卸载后再次运行依然报错,打开虚拟机依然失败,说明没有卸载成功,后来发现除了删除其功能外,启动引导处需要把hyperlaunch设置成off,命令是bcdedit /set hypervisorlaunchtype off,bcdedit是windows自带工具,用来设置启动菜单。设置完后重启,再打开vm可成功打开,这时再运行创建vm命令如下。

Docker和VM共存问题_第5张图片

 

创建完毕后,查看已创建的实例,如下图。

 

然后开启实例,默认state状态是running,否则可运行docker-machine start dev开启,确定开启后,运行docker-machine ssh dev来通过ssh链接dev实例,也就是启动docker,如下图。

Docker和VM共存问题_第6张图片

 

同时我也可以通过远程工具来连接,ip就是实例给出的url,端口默认22,账号密码默认为docker/tcuser,如下图。

Docker和VM共存问题_第7张图片

 

这时vm和docker已经实现了共存,相当于把hyper-v卸载后,用vm创建了一个docker虚拟机,然后我们本地就可以远程连接,这时打开vm它不会把docker自动加到列表,但会发现确实有一个虚拟机在运行,如下图。

 

我们可以直接打开此虚拟机,位置在C:\Users\Administrator\.docker\machine\machines\dev\,打开如下图。

Docker和VM共存问题_第8张图片

 

下次我们直接开其此虚拟机即可正常使用docker,同时也不会影响其他虚拟机的运行。当然这时我们就不能再运行docker的桌面程序,否则会要求开启hyper-v,这也就意味着docker的ui管理功能我们无法使用,但是无关紧要,命令行我们一样可以进行相关的管理。


                                                                     公众号推荐:aFa攻防实验室

                  分享关于信息搜集、Web安全、内网安全、代码审计、红蓝对抗、Java、Python等方面的东西。

                                                                        

你可能感兴趣的:(docker,docker,vmware)