Windows下使用Docker的一些经验
发布于 9 年前 作者 pentium100 11964 次浏览 最后一次编辑是 8 年前 来自 分享

Windows下使用Docker的一些经验

  • 安装Docker Toolbox. from link: https://www.docker.com/toolbox
  • Docker Toolbox 包括了Kitematic, VirtualBox, Boot2Docker
    • Kitematic还处在Alpha阶段,bug不少,经常启动一两次后,boot2docker就启动不了了。各种错误,什么证书与IP地址不匹配,IP连不上什么的。建议无视。直接用VirtualBox就可以了。
    • VirtualBox没什么问题,还算好用。就是不要去点里面的设备-〉安装增强功能…,点了以后会把Boot2Docker的虚拟光驱卸掉,换上VirtualBox的扩展工具光盘,然后Boot2Docker就启动不了了。误点以后,把光盘换回去,应该也是可以恢复的。
    • Boot2Docker, 机器打开了,是一个TinyCoreLinux的系统,可能因为系统是一个iso光盘上的,所有的更改都不会保存,下次启动就不见了。比如你在用户目录下建的文件,关机后,再开,就没有了。能保存数据的目录是/mnt/sda1/目录下。
  • 注册hub.docker.com帐号,在Git建立Dockerfile, 并通过Webhooks & Services建立与hub.docker.com的连接,每次Push后,自动Build image.
  • 在Boot2Docker中docker pull上一步的image.这步需要比较长的时间,视乎你image的大小。
  • 因为是做开发用的,而开发主要在windows下进行,如何在host和docker里共享文件就比较重要。在这里尝试了几种方法,
    • 首先想到的是把windows里的文件夹通过virtualbox共享文件夹mount到Boot2Docker中.通过几个操作是可以做到。 http://tuhrig.de/mount-windows-folder-to-boot2docker-vm/ 。但是共享进来的目录在boot2docker中做npm install时会出错,http://askubuntu.com/questions/269727/npm-errors-when-installing-packages-on-windows-share, 要打no-bin-links,另外,windows不支持太长的目录名,我是用nodejs开发的,有些包的依赖很深 ,整个路径超长,windows容易出错。所以就否决了这个方法。
    • 后来想的办法是通过SAMBA共享boot2docker的文件到host上。
      • 首先在/var/lib/也就是/mnt/sda1/var/lib下,建程序目录
      • docker pull dperson/samba , 这是一个samba的docker image.可以直接运行一个带samba服务的容器。
      • docker run -v 要共享的目录:/目录名称 dperson/samba -S “共享名称;共享的目录”
      • 在host上, 通过\\docker主机ip就可以访问到这个目录。
      • 在docker里,就把这个目录挂载上去。这样就实现目录的共享。
  • Docker Compose 是Docker的编排工具。可以简化运行容器时的一些命令。比如端口映射,卷的加载,容器间的链接。
    • Windows版的Docker Toolbox是不带Docker Compose的。需要另装。
    • 装compose需要先安装python, 再装pip, 才能pip install compose.
    • 结果 tce-load -i python-distribute, 成功了以后, python --version, 还是python not found.我怀疑是boot2docker是只读的问题。重启后,刚安装的python就不见了。
    • 后来找到了一个docker compose的image, dduportal/docker-compose/, 通过他就可以运行docker compose而不用在boot2docker中安装。是一个比较好的可行的方案。

刚开始学Docker,累积了一些粗浅经验,大家见笑了。

4 回复

不错,棒棒哒

装个debian 最小化安装到vbox里,在里边装docker就好了

windows下boot2docker好像不稳定?

如果担心依赖深的话, 可以考虑用npm >= 3.0。

回到顶部