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 |