了解与docker供应商的stream浪汉

所以我的目标是让Vagrant启动一个我可以用作Rails Web应用程序开发环境的虚拟机。 我对Vagrant,Docker等非常非常陌生,并且想检查一下这是否合理:

我应该创build一个Docker镜像,还是两个? 我的想法是,一个图像将是rvm,ruby和rails,而另一个图像将是Apache。

目标是分配给less数人的东西,然后他们可以轻松地build立完全相同的环境。

这是我目前的Vagrantfile:

VAGRANTFILE_API_VERSION = "2" Vagrant.configure(VAGRANTFILE_API_VERSION) do |config| config.vm.box = "phusion/ubuntu-12.04-amd64" config.vm.network "forwarded_port", :guest => 80, :host => 5000 # Share the docker configs config.vm.synced_folder "./docker", "/docker" config.vm.provision "docker" do |d| d.build_image "-t me/rvm-dev /docker/rvm-dev" d.run "me/rvm-dev" end config.vm.host_name = "coursera-rail.dev" config.vm.network :forwarded_port, guest:80, host:8080 end 

这里是我目前(可能是错误的)Dockerfile(作为一边,我想find一些关于创build一个“docker”用户帐户的一个很好的指导,所以我不作为根运行的一切)

 ## Dockerfile FROM ubuntu:latest RUN apt-get update RUN apt-get upgrade -y RUN apt-get install -y curl RUN mkdir -p /tmp/downloads ## Install RVM, Ruby, Rails RUN cd /tmp/downloads RUN \curl -L https://get.rvm.io | bash -s stable --ruby --rails 

最后,上面的工作,如果我使用vagrant ssh我可以进入我的虚拟机,但显然我不能使用RVM没有做docker运行-i -t我/ rvm-dev和得到一个与docker的shell。 这应该是工作stream程?

在我的愚见中,最好的stream程是

1)分开你的应用程序和数据库堆栈到stream浪的箱子

要么

2)在主机(物理机器)和你的数据库实例(mysql等)内运行docker在一个无用的盒子里面。

选项一是最好的,因为你在Vagrant内部对沙盒的两个层(DB和APP)进行“沙箱化”,从而使本地计算机(windows,Linux,Mac OSX)上的操作系统保持不变。 当然,你可以在物理机器上安装/运行你的IDE。