Access Docker features when using Vagrant

I’ve been using Vagrant for some time and am now exploring Docker. I’ve always loved Vagrant for its simplicity. Right now, I’m trying to use the Docker provider within Vagrant. I’m using the following Vagrantfile:

Vagrant.configure("2") do |config|
  config.vm.provider "docker" do |d|
    d.image = "fgrehm/vagrant-ubuntu:precise"
  end
end

My understanding is that I can just run vagrant up. I can then run the Docker container using vagrant docker-run -- <command>.

  • Docker inspect: Select field that has forward slash using jq
  • Is there a way to make the Docker Splunk Driver send the EC2 Instance Id to Splunk when it runs on the AWS EC2 Container Service (ECS)?
  • Azure VM with Docker failing to connect
  • Kubernetes Replication controller deletion
  • Docker issue in sharing folder on windows host through VBoxManage command
  • Docker Volume Containers for database, logs and metrics
  • So far so good. What makes Docker so awesome is the fact that you can mess around and commit changes. I do not understand is how to incorporate this in my workflow when using the Docker provider for Vagrant. E.g. how do I run docker commit to commit the state of the container? I’d expect some kind of vagrant docker-commit, but this does not exist?


    Edit: In hindsight, I think this is not the way you should be using Vagrant/Docker. Though it is claimed that both tools complement each other, my opinion is that they do not (yet) play really well together. Right now, we’re using Dockerfiles to build our images. Additionally, we made a set of bash scripts to launch a container.

  • Are docker-hosted databases somehow exempt from backup best practices?
  • PyCharm can't connect to interpreter in docker
  • How to install phpMyAdmin on Mage2 DevBox
  • docker repository name component must match
  • “no such file or directory” when running Docker image
  • Docker 32-bit Image downloaded, but tells its a 64-bit architecture
  • 2 Solutions collect form web for “Access Docker features when using Vagrant”

    Try to specify “has_ssh” to true, and ask Vagrant to use port 22 instead of 2222:

    ENV["VAGRANT_DEFAULT_PROVIDER"] = "docker"
    
    Vagrant.configure("2") do |config|
      config.vm.provider "docker" do |d, o|
        d.image = "fgrehm/vagrant-ubuntu:precise"
        d.has_ssh = true
        o.ssh.port = 22
      end
    end
    

    Then use vagrant up; vagrant ssh to access it.

    Another option if you have same client version of docker at your host-host machine as docker server started inside boot2docker VM. In that case you can set

    export DOCKER_HOST=tcp://:4243 (or 2375 depending on docker version)
    

    and then access all docker features running local client:

    docker ps -a
    
    Docker will be the best open platform for developers and sysadmins to build, ship, and run distributed applications.