What is the best way for me to edit a file using sublime or other editors in Docker with Vagrant?
I'm working on Mac OSX environment, and I've followed the steps on Docker's official document.
http://docs.docker.io/en/latest/installation/vagrant/
git clone https://github.com/dotcloud/docker.git
cd docker
vagrant up
It seems like I've to use docker inside vagrant environment (on Mac Docker installation). So this makes me unable to edit my files with my sublime editor.
so how could I get to edit my files with original bash
(outside Vagrant and Docker environment), or did I have to set up all the environment again on vagrant to achieve it?
And I've looked up Vagrant official document
http://docs.vagrantup.com/v2/getting-started/up.html
after I've ssh to vagrant environment vagrant ssh
, go to cd /vagrant/
and create a file.
It should be in root of the docker repository where I've started up my Vagrant, isn't it? But I can't find it...
The code has to be on your computer, and shared down all the way to docker. This is actually pretty easy to do.
First you need to share the code to vagrant. This is done in the Vagrantfile, using the synced_folder
option. For example, if your code is in /Users/LiJung/code/
, you can try something like:
config.vm.synced_folder "/Users/LiJung/app", "/app", :nfs => true
We use NFS because the default way of sharing folders between host and VM (vboxfs) is dubious at best.
This will make your code available in the /app
folder inside the VM.
Next you want to run a container and mount an external volume into it, using the -v
option:
docker run -i -t -v /app:/app <yourcontainer> /bin/bash
This will run a container and mount the /app
folder of the VM to the /app
folder of the container.
You can now enjoy the comfort of your favorite editor!
You are not alone on this issue although it might be hard to reproduce. You can see it reported on this pull request and this question here at Stack Overflow (with possible workaround). When I had this issue, I just restarted the virtual machine and the files showed up on the /vagrant
folder.
You have to mount the host volume into boot2docker vagrant vm first, and then, mount the vm volume into your container, more info at http://felipejfc.com/2014/08/29/vagrant_docker_sync_folder/