OS X上的Docker和文件共享

Vic*_*nin 7 macos performance virtual-machine docker

好.我正在玩不同的工具来准备开发环境.Docker是不错的选择.我在docker中创建了整个开发环境,可以在其中构建一个项目.

此项目的源代码位于docker容器之外(在主机上).这样您就可以使用IDE编辑它并使用docker来构建它.

但是,有一个问题

a)OS X上的Docker使用VM(VirtualBox VM)

b)文件共享速度相当慢(比主机上的文件IO慢)

c)该项目有一个像gazzilion文件(夸大问题#a和#b).

如果我在docker中移动源代码,我将在IDE中遇到同样的问题(它将不得不访问共享文件,而且速度很慢).

我听说了一些解决方法,以使它快速.但是,我似乎无法找到有关此主题的任何信息.

更新1

我使用Docker文件共享功能(意思是我运行)

docker run -P -i  -v <VMDIR>:<DOCKERDIR> -t <imageName> /bin/bash
Run Code Online (Sandbox Code Playgroud)

但是,VM和Docker之间的共享不是问题.它很快.

瓶颈在主机和VM之间共享.

Myk*_*rov 2

我使用的解决方法是不使用 boot2docker ,而是使用docker 配置一个 vagrant VM 。挂载文件夹 host->vagrant->docker 没有这么大的惩罚。

不利的一面是,我必须将文件夹预先映射到 vagrant(基本上是我的整个工作目录),并预先公开从 vagrant 盒子到主机的一系列端口,以便直接从那里访问 docker 服务。

从好的方面来说,当我想清理未使用的 docker 垃圾(图像、卷等)时,我只需销毁 vagrant vm 并再次重新创建它:)

阐述

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.vm.box = "trusty-docker"
  config.vm.box_url = "https://oss-binaries.phusionpassenger.com/vagrant/boxes/latest/ubuntu-14.04-amd64-vbox.box"
  config.vm.provision "docker"

  #by default we'll claim ports 9080-9090 on the host system
  for i in 9080..9090
    config.vm.network :forwarded_port, guest: i, host: i
  end

  #NB: this folder mapping will not have the boot2docker issue of slow sync
  config.vm.synced_folder "~/work", "/home/vagrant/work"
end
Run Code Online (Sandbox Code Playgroud)

有了:

host$ vagrant up && vagrant ssh
vagrant$ docker run -it --rm -v $(pwd)/work:/work ubuntu:12.04 find /work
Run Code Online (Sandbox Code Playgroud)