Skip to main content

Working with Docker Provider

1. Configuring Docker Provider (config.vm.provider)

Option Values Notes
config.vm.provider "docker" Specifies the Docker provider for Vagrant

Example: Basic Docker Provider Configuration

Vagrant.configure("2") do |config|
  config.vm.provider "docker" do |d|
    d.image = "nginx:latest"
  end
end

2. Using Existing Image (d.image)

Option Values Notes
d.image "nginx:latest" Image to use for the container

Example: Using a Specific Image

Vagrant.configure("2") do |config|
  config.vm.provider "docker" do |d|
    d.image = "redis:6.2-alpine"
  end
end

3. Building from Dockerfile (d.build_dir)

Option Values Notes
d.build_dir "/path/to/Dockerfile" Directory containing Dockerfile to build

Example: Building from Dockerfile

Vagrant.configure("2") do |config|
  config.vm.provider "docker" do |d|
    d.build_dir = "./docker"
  end
end

4. Setting Container Name (d.name)

Option Values Notes
d.name "my-app" Name of the container

Example: Setting Container Name

Vagrant.configure("2") do |config|
  config.vm.provider "docker" do |d|
    d.name = "web-server"
  end
end

5. Configuring Port Mappings (d.ports)

Option Values Notes
d.ports ["80:80", "443:443"] Port mappings from host to container

Example: Port Mappings

Vagrant.configure("2") do |config|
  config.vm.provider "docker" do |d|
    d.ports = ["8080:80", "3306:3306"]
  end
end

6. Mounting Volumes (d.volumes)

Option Values Notes
d.volumes ["/host/path:/container/path"] Volume mounts from host to container

Example: Volume Mounting

Vagrant.configure("2") do |config|
  config.vm.provider "docker" do |d|
    d.volumes = ["/home/user/data:/app/data"]
  end
end

7. Setting Environment Variables (d.env)

Option Values Notes
d.env {"NODE_ENV" => "production"} Environment variables to set in container

Example: Setting Environment Variables

Vagrant.configure("2") do |config|
  config.vm.provider "docker" do |d|
    d.env = {"DATABASE_URL" => "postgres://db:5432/myapp"}
  end
end

8. Using Docker Compose (d.compose)

Option Values Notes
d.compose true Use Docker Compose instead of direct container creation

Example: Using Docker Compose

Vagrant.configure("2") do |config|
  config.vm.provider "docker" do |d|
    d.compose = true
  end
end

9. Configuring Network Mode (d.net)

Option Values Notes
d.net "bridge" Network mode to use (bridge, host, none)

Example: Setting Network Mode

Vagrant.configure("2") do |config|
  config.vm.provider "docker" do |d|
    d.net = "host"
  end
end

10. Running Privileged Container (d.privileged)

Option Values Notes
d.privileged true Run container in privileged mode

Example: Running Privileged Container

Vagrant.configure("2") do |config|
  config.vm.provider "docker" do |d|
    d.privileged = true
  end
end

11. Using Host VM (docker.vagrant_vagrantfile)

Option Values Notes
docker.vagrant_vagrantfile "/path/to/Vagrantfile" Path to Vagrantfile for host VM

Example: Using Host VM Vagrantfile

Vagrant.configure("2") do |config|
  config.vm.provider "docker" do |d|
    d.vagrant_vagrantfile = "/home/user/project/Vagrantfile"
  end
end

Was this article helpful?