win10这个奇葩,共享文件夹变得非常困难。

既然使用了docker,为什么要在windows下使用呢?因为策划测试用的都是windows呀(O(∩_∩)O),镜像还是会发布在linux。

图片 1

1 下载与安装Docker Toolbox

首先介绍一下docker在windows的支持,引用Docker 中文指南的描述:

因为Docker 引擎使用的是Linux内核特性,所以我们需要在 Windows 上使用一个轻量级的虚拟机 (VM) 来运行 Docker。我们使用 Windows的Docker客户端来控制 Docker 虚拟化引擎的构建、运行和管理 。
为了简化这个过程,我们设计了一个叫 Boot2Docker 的应用程序,你可以通过它来安装虚拟机和运行 Docker。
虽然你使用的是 Windows 的 Docker 客户端,但是 docker 引擎容器依然是运行在 Linux 宿主主机上(现在是通过Virtual box)。

目前docker对win10的支持已经做的很好了,但是对于低版本的win7相对来说还是有很多问题,win10直接下载https://www.docker.com/docker-windows
Docker for Windows直接安装即可,但是win7的安装方法完全不同。

首先我们需要下载官方提供的Docker
Toolbox安装包,地址为:https://www.docker.com/products/docker-toolbox
该安装包含了所需要的所有内容。

然后点击安装,出现如图示:

图片 2

安装界面1.png

图片 3

安装界面2.png

安装路径可以选择其它盘,我安装在了D盘。

图片 4

安装界面3.png

这是安装包具备的组件,其中Docker client,Docker
Machine是一定要安装的,Virtualbox和Git如果事先安装了可以不勾,不过virtualbox需要5.0版本以上,版本4是不行的,Kitematic是Docker的图形化管理界面,也勾上吧,虽然我不用。

图片 5

安装界面4.png

最后一直Next,点finish就完成了安装。

其他不说,关键点在于获取虚拟机的
ip,我的虚拟机系统是winxp,虚拟机本身可以上网。拿到ip,用这个ip还是无法访问\ip
的共享文件夹,因为win10需要安装一个组件:

2 初始化Docker ToolBox

安装完毕后会在桌面出现三个快捷方式:

图片 6

快捷方式

其中Docker Quickstart
Terminal是初始化脚本,可以去安装目录查看所有的组件:

图片 7

安装目录.png

里面的start.sh就是桌面上的Docker Quickstart
Terminal,可以看到是这是一个shell脚本,也就是需要bash来执行,因此在安装的时候如果win7没有安装Git的话一定要勾上,并且记住其安装位置,一般会在:

图片 8

bash

在执行这个脚本之前,我们先打开该脚本简单看看其做了什么事:

图片 9

start.sh.png

简单理解一下发现脚本主要初始化了各个工具的状态,以及设置了代理,其中virtualbox是第一个被检查的,因为需要通过VBoxManage创建虚拟机,因此在执行脚本之前我们先看看virtualbox是否正常,打开桌面的:

图片 10

Paste_Image.png

如果出现下图所示

图片 11

Paste_Image.png

那么恭喜你,可以进入下一步执行脚本了。(第一次的打开是都没有的,只要打开不报错就表示虚拟机没问题)
但是有部分机器可能会出现一些错误,比如我的机器就出现了:

图片 12

Paste_Image.png

获取 VirtualBox COM 对象失败,应用程序将被中断。
这个错误的解决方法有几种,
(1)兼容性问题

图片 13

Paste_Image.png

右击virtualbox图标属性中,兼容模式运行这个程序,选择除了win7之外的版本。

(2)a. 打开开始菜单—-然后点击运行—输入
"D:Program FilesOracleVirtualBoxVBoxSVC.exe“ /reregserver
然后按回车,(注意virtualbox的安装目录,我这里安装在D:Program
FilesOracleVirtualBox目录,视情况而定,改成自己的目录)
b.再打开开始菜单—运行—输入
regsvr32 "C:Program FilesOracleVirtualBoxVBoxC.dll"
regsvr32如果提示不存在可以去找一下自己系统的存放路径,使用绝对路径来使用,一般会在:

图片 14

Paste_Image.png

(3)修改注册表,一般这个方法是最有效的
引用这位博主的博文:http://blog.csdn.net/zp_00000/article/details/70207445

主要是修改修改注册表中如下的两项:

HKEY_CLASSES_ROOTCLSID{00020420-0000-0000-C000-000000000046}
HKEY_CLASSES_ROOTCLSID{00020424-0000-0000-C000-000000000046}

分别修改上面两项中的 InprocServer32的默认值为
C:Windowssystem32oleaut32.dll
具体操作可以跳转到上面链接,我这里就不赘述了。

virtualBox可以正常运行之后我们点击执行启动脚本,可以点击桌面上的快捷方式也可以点击start.sh,我启动的是桌面的,
启动后如图示;

图片 15

Paste_Image.png

这个过程会提示创建虚拟机,ssh等内容,在创建虚拟机过程时需要提供boot2docker.iso镜像,路径默认是在

C:Users用户名.dockermachinecache

启动脚本时会提示找不到,需要在线下载,这个过程会非常慢,其实Docker
ToolBox安装包是已经提供了boot2docker.iso了的,

图片 16

Paste_Image.png

我们只要手动将该文件拷贝到指定目录再重新去启动就不需要再联网下载了。

可能还会有同学拷贝了boot2docker.iso镜像,启动脚本时会提示该镜像不是最新的版本,并且会告诉你最新的版本,还是需要联网下载,这个如果是在外网搭建的话就直接让其联网下载,不过可能会很慢,因为我是在内网搭建,所以需要在外网下载好最新的boot2docker.iso镜像,再拷贝到

C:Users用户名.dockermachinecache

下载路径为:https://github.com/boot2docker/boot2docker/releases
选择最新的:

图片 17

Paste_Image.png

再次启动start.sh脚本,这个时候等待其初始化完毕即可,应该不会再遇到什么问题了,最后初始化成功如下:

图片 18

Paste_Image.png

SMB 1.0
的组件,安装完大概就能连同了。不过网络邻居还是无法发现的(不知道怎么设置),要手写路径登陆,然后弹出用户登录框,输入guest,密码留空,就行了。如果你还是无法连通,可能是账户或者共享没设置好,这些都是小问题。

最近在忙着搭建游戏私服的事情,因此前面的关于游戏业务篇师徒系统的内容会迟一点写,这个坑怎么说都还是要填的,不要错过任何一次记录的机会。

简单介绍一下搭建游戏私服的需求,这主要是给策划和测试使用的,因为每个策划关注的内容,每个测试测试的点都不一样,都需要去修改测试服务器的配置或者策划表,以达到他们想要测试或验证的目的,这就不能都在一台测试服去频繁改动,当然也不可能为每个策划或者测试都配一台服务器(不要钱呀)。那么可不可以在他们的机器去搭建环境,在他们自己的机器部署游戏服务器呢?当然是可以的,不过这会搞死程序(O(∩_∩)O),比如说我们的游戏服务器使用的java,你感受到了为那么多个策划测试去部署java环境以及服务器依赖的组件的恐怖了吗!!!

docker.png

5 映射本地目录到容器

前面提到,策划测试需要频繁去改动静态文件,比如策划表,改改道具的数量,属性等,所以需要将容器的目录映射到windows的本地文件夹,这个目录假设用来存放策划表,那么就可以实现在windows查看修改文件,而服务运行在docker容器。

docker提供了数据卷来达到映射的目的,通过-v选项指定,如果是在Linux上使用docker,比如想要映射本地/home/tmp目录到容器的/tmp,可以这样:

docker run --name some-nginx  -v /home/tmp:/tmp -d -p 8080:80 nginx

但是在windows能不能直接在powershell直接通过-v指定本地目录呢?比如

 docker run -ti  -v /d/users:/tmp centos /bin/bash

映射d盘的users目录,这样能达到映射的目的吗?答案肯定是不行的,为什么呢?因为容器是运行在virtualbox虚拟机内的,指定的
/d/users目录virtualbox是不知道的,它无法识别。

玩过虚拟机的都知道要想虚拟机和主机共享目录需要对虚拟机进行设置,将主机的目录共享到虚拟机的某个目录,这也是目录映射,然后再将该目录映射到容器,这样就达到映射本地目录到容器的目的。

我们打开virtualbox,点击“”设置“,再点击“共享文件夹”,点击右边的“+”标志

图片 19

Paste_Image.png

然后设置共享文件夹的路径和名称,并且选择“自动挂载”和固定分配,然后在这个设置的共享目录里面就可以随意创建想要的目录,然后映射到容器了。

有同学不禁会问这个还要去打开图形界面设置共享文件夹很麻烦,Docker
Toolbox安装完成是默认共享了c/Users到虚拟机的,所以不想重新设置可以映射/c/Users的目录,像我需要在部署的时候直接通过运行脚本的形式运行容器,就不会再去重新设置了,虽然也可以通过VBoxManage命令来直接创建共享文件夹,但是不再去研究这个了,/c/Users已经可以满足需求。

来试试:

图片 20

Paste_Image.png

在Users创了Docker的目录,并新建了cv.txt文件,然后挂载到容器:

docker run -ti  -v /c/Users/docker:/home centos /bin/bash

-t 表示开启伪终端
-i 表示打开标准输入
/bin/bash 表示运行bash程序

执行成功之后会直接进入centos容器内部,然后我们去/home看看能不能找到cv.txt文件:

图片 21

Paste_Image.png

发现cv.txt文件出现了容器的home目录下,然后在该目录创建一个文件,

     touch test.sh

图片 22

Paste_Image.png

再看windows目录下的变化:

图片 23

Paste_Image.png

大功告成!

结语:
ok,到此为止就介绍完毕了搭建过程,写的有点啰嗦,有同学可能会觉得你这个整个过程下来也是很麻烦呀,是的,第一次安装的时候确实需要费点时间的,但是只要把常见的错误总结下,安装完Docker
Toolbox安装包之后的行为,可以通过脚本去控制所有的操作,这样部署docker环境策划只需要安装一个软件,执行一个脚本,以后更新游戏服的时候只需要拉取一下服务器上的镜像或者通过其他的形式去更新,这种简捷只有你真正用过了才会领略到,关于使用docker还有诸多好处,在这就不一一列举了,实在是表达能力不太好呀。

接下来还会介绍配置基础环境镜像,以及最后整个基于Docker私服的搭建过程,嗯,在这里又埋了一个坑了,一定会填的O(∩_∩)O。

以上是在win7部署docker的过程,希望对大家有所帮助,有什么问题可以留言讨论,大家一起学习。

Regards,
codjust.

参考文章:
http://blog.csdn.net/tina_ttl/article/details/51372604
http://www.jianshu.com/p/d809971b1fc1
http://www.cnblogs.com/studyzy/p/6113221.html
https://bjddd192.github.io/docker/2017/02/28/win7%E4%B8%8B%E4%BD%BF%E7%94%A8docker-toolbox.html
http://www.widuu.com/chinese_docker/installation/windows.html

相关文章