Update docker provider networking docs from pull request feedback

This commit is contained in:
Brian Cain 2019-03-25 13:25:49 -07:00
parent 9d200bdb72
commit f4c6aa8aa1
No known key found for this signature in database
GPG Key ID: 9FC4639B2E4510A0
1 changed files with 33 additions and 30 deletions

View File

@ -31,8 +31,16 @@ there are no more containers using the network.
## Docker Network Options ## Docker Network Options
Most of the options given align with the command line flags Most of the options work similar to other Vagrant providers. Defining either an
for the [docker network create](https://docs.docker.com/engine/reference/commandline/network_create/) ip or using `type: 'dhcp'` will give you a network on your container.
```ruby
docker.vm.network :private_network, type: "dhcp"
docker.vm.network :private_network, ip: "172.20.128.2"
```
If you want to set something specific with a new network you can use scoped options
which align with the command line flags for the [docker network create](https://docs.docker.com/engine/reference/commandline/network_create/)
command. If there are any specific options you want to enable from the `docker network create` command. If there are any specific options you want to enable from the `docker network create`
command, you can specify them like this: command, you can specify them like this:
@ -50,13 +58,13 @@ to a given network, you can use the following value in your network config:
docker_connect__option: "value" docker_connect__option: "value"
``` ```
It should be noted that if you want the container to have a specific IP instead The docker provider will automatically determine a usable subnet for your containers
of using DHCP, you also will have to specify a subnet due to how docker networks behave. network, however if you wish to specify a subnet and or netmask, you can use the
`subnet` and or `netmask` options for this. By default, Vagrant will use a netmask
of `/24` for IPv4 and `/64` for IPv6.
It should also be noted that if you want a specific IPv6 address, your network More examples are shared below which demonstrate creating a few common network
option should use `ip6` rather than `ip`. If you just want to use DHCP, you can interfaces.
simply say `type: "dhcp"` insetad. More examples are shared below which demonstrate
creating a few common network interfaces.
## Docker Network Example ## Docker Network Example
@ -71,8 +79,8 @@ Vagrant.configure("2") do |config|
config.vm.define "docker" do |docker| config.vm.define "docker" do |docker|
docker.vm.network :private_network, type: "dhcp", docker_network__internal: true docker.vm.network :private_network, type: "dhcp", docker_network__internal: true
docker.vm.network :private_network, docker.vm.network :private_network,
ip: "172.20.128.2", subnet: "172.20.0.0/16" ip: "172.20.128.2", netmask: "16"
docker.vm.network :private_network, type: "dhcp", ipv6: "true", subnet: "2a02:6b8:b010:9020:1::/80" docker.vm.network :private_network, type: "dhcp", subnet: "2a02:6b8:b010:9020:1::/80"
docker.vm.provider "docker" do |d| docker.vm.provider "docker" do |d|
d.build_dir = "docker_build_dir" d.build_dir = "docker_build_dir"
end end
@ -116,32 +124,27 @@ brian@localghost:vagrant-sandbox % docker exec 370f4e5d2217 ip addr
valid_lft forever preferred_lft forever valid_lft forever preferred_lft forever
``` ```
## Useful Debugging Tips You can also connect your containers to a docker network that was created outside
of Vagrant:
If you provide Vagrant with a faulty config option when setting up a network, Vagrant ```
will pass that option along to the `docker network` commands it uses. That command $ docker network create my-custom-network --subnet=172.20.0.0/16
line tool should give you some insight if there is something wrong with the option ```
you configured:
```ruby ```ruby
docker.vm.network :private_network, Vagrant.configure("2") do |config|
ip: "172.20.128.2", subnet: "172.20.0.0/16", config.vm.define "docker" do |docker|
unsupported: "option" docker.vm.network :private_network, type: "dhcp" name: "my-custom-network"
docker.vm.provider "docker" do |d|
d.build_dir = "docker_build_dir"
end
end
end
``` ```
``` Vagrant will not delete or modify these outside networks when deleting the container, however.
A Docker command executed by Vagrant didn't complete successfully!
The command run along with the output from the command is shown
below.
Command: ["docker", "network", "create", "vagrant_network_172.20.0.0/16", "--subnet=172.20.0.0/16", "--unsupported=option", {:notify=>[:stdout, :stderr]}] ## Useful Debugging Tips
Stderr: unknown flag: --unsupported
See 'docker network create --help'.
Stdout:
```
The `docker network` command provides some helpful insights to what might be going The `docker network` command provides some helpful insights to what might be going
on with the networks Vagrant creates. For example, if you want to know what networks on with the networks Vagrant creates. For example, if you want to know what networks