docker-provider 0.0.2 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +25 -0
  3. data/Gemfile +7 -7
  4. data/Gemfile.lock +51 -40
  5. data/LICENSE.txt +1 -1
  6. data/README.md +130 -60
  7. data/Rakefile +6 -1
  8. data/boxes/dind/.gitignore +2 -0
  9. data/boxes/dind/Dockerfile +12 -0
  10. data/boxes/dind/README.md +10 -0
  11. data/boxes/{nginx → dind}/Vagrantfile.sample +2 -1
  12. data/boxes/{nginx → dind}/metadata.json +0 -0
  13. data/boxes/precise/Dockerfile +10 -9
  14. data/boxes/precise/Vagrantfile.sample +0 -1
  15. data/development/Vagrantfile +1 -9
  16. data/docker-provider.gemspec +1 -2
  17. data/example/Vagrantfile +11 -10
  18. data/lib/docker-provider.rb +2 -1
  19. data/lib/docker-provider/action.rb +17 -6
  20. data/lib/docker-provider/action/check_running.rb +1 -1
  21. data/lib/docker-provider/action/create.rb +14 -11
  22. data/lib/docker-provider/action/prepare_nfs_settings.rb +59 -0
  23. data/lib/docker-provider/action/prepare_nfs_valid_ids.rb +19 -0
  24. data/lib/docker-provider/config.rb +14 -7
  25. data/lib/docker-provider/driver.rb +30 -6
  26. data/lib/docker-provider/errors.rb +14 -0
  27. data/lib/docker-provider/plugin.rb +10 -3
  28. data/lib/docker-provider/provider.rb +1 -1
  29. data/lib/docker-provider/synced_folder.rb +20 -0
  30. data/lib/docker-provider/version.rb +1 -1
  31. data/locales/en.yml +13 -2
  32. data/spec/acceptance/provider/basic_spec.rb +94 -0
  33. data/spec/acceptance/provider/network_forwarded_port_spec.rb +29 -0
  34. data/spec/acceptance/provider/synced_folder_spec.rb +39 -0
  35. data/spec/acceptance/provisioner/chef_solo_spec.rb +37 -0
  36. data/spec/acceptance/provisioner/puppet_spec.rb +37 -0
  37. data/spec/acceptance/provisioner/shell_spec.rb +51 -0
  38. data/spec/acceptance/synced_folder/nfs_spec.rb +36 -0
  39. data/spec/unit/driver_spec.rb +70 -11
  40. data/vagrant-spec.config.rb +8 -0
  41. metadata +40 -29
  42. data/boxes/nginx/.gitignore +0 -1
  43. data/boxes/nginx/Dockerfile +0 -4
  44. data/boxes/nginx/README.md +0 -25
  45. data/boxes/nginx/start +0 -5
  46. data/lib/docker-provider/action/share_folders.rb +0 -63
  47. data/spec/acceptance/Vagrantfile +0 -25
  48. data/spec/acceptance/vagrant_ssh.bats +0 -34
  49. data/spec/acceptance/vagrant_up.bats +0 -35
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 75f8540cb7ab18e1d6592fc46a2dd3ef6675f766
4
- data.tar.gz: d098ade4f9e92f805ac2f479b354e4dc436c2be6
3
+ metadata.gz: fd2b96a22d7601dc0d40ebf0c15e7a609b9a7936
4
+ data.tar.gz: 5f2d19fb42756d513dfab0c10c62487230d42c66
5
5
  SHA512:
6
- metadata.gz: 4582b7287bad91333f450a779ad56ee9db01df6511ca8386146485c8e1a34747a32fd1a2439679b16663b862047e45475b766ad55c0d41e03fd05d15374347ad
7
- data.tar.gz: 83c0bc91abbf40202ba6944d76910bbf845fe6b39ad8754ec53e112d372c1bee2fc71cb7f93c2b7a989a18a8d29a297e22d34fe14870a7f375d8c73ffd3c2f31
6
+ metadata.gz: af80b4c0dc7eb16a30f9188604eb05376bebc308be091d6b26872f9be1ef2290036baf173acfaadd0df6389c4d22182f22ca5bca3eb416f99210d33b8bb13105
7
+ data.tar.gz: e3dfb68c443d0604b52c0810a15fa456e69a0678d9dab3da4da2a000c544573a1ab005c8b649d8dd0e8224a11fb734a4017636a63afed70e7e3901e2b245e2e4
@@ -1,3 +1,28 @@
1
+ ## [0.1.0](https://github.com/fgrehm/docker-provider/compare/v0.0.2...0.1.0) (Feb 27, 2014)
2
+
3
+ BACKWARDS INCOMPATIBILITY:
4
+
5
+ - Support for Vagrant < 1.4 and Docker < 0.7.0 are gone, please use a previous
6
+ plugin version if you can't upgrade.
7
+
8
+ FEATURES:
9
+
10
+ - Trusted build for official base boxes Docker images [GH-5]
11
+ - New base boxes / images for running Ubuntu 12.04 in "machine mode"
12
+ - New [dind](https://github.com/jpetazzo/dind) Ubuntu 12.04 base box
13
+ - Support for NFS Synced Folders
14
+ - Support for running privileged containers
15
+
16
+ IMPROVEMENTS:
17
+
18
+ - Decrease timeout taken before killing a container on `vagrant halt`s
19
+ - Remove volumes along with containers with `docker rm -v` on `vagrant destroy`s
20
+ - Sanity checks using [vagrant-spec](https://github.com/mitchellh/vagrant-spec)
21
+
22
+ BUG FIXES:
23
+
24
+ - Fix `vagrant up` failure with newer Vagrant and Docker versions.
25
+
1
26
  ## [0.0.2](https://github.com/fgrehm/docker-provider/compare/v0.0.1...v0.0.2) (November 5, 2013)
2
27
 
3
28
  - Fix provisioning with Vagrant's built in provisioners
data/Gemfile CHANGED
@@ -4,7 +4,8 @@ source 'https://rubygems.org'
4
4
  gemspec
5
5
 
6
6
  group :development, :test do
7
- gem 'vagrant', github: 'mitchellh/vagrant'
7
+ gem 'vagrant', github: 'mitchellh/vagrant', tag: 'v1.4.3'
8
+ gem 'vagrant-spec', github: 'mitchellh/vagrant-spec', ref: 'fbd067bbe5e2a789bb2b29c38d1224cdd9386836'
8
9
  end
9
10
 
10
11
  group :development do
@@ -12,10 +13,9 @@ group :development do
12
13
  gem 'guard-rspec'
13
14
  gem 'rb-inotify'
14
15
 
15
- gem 'vagrant-notify', github: 'fgrehm/vagrant-notify'
16
- gem 'vagrant-cachier', github: 'fgrehm/vagrant-cachier'
17
- gem 'vagrant-pristine', github: 'fgrehm/vagrant-pristine'
18
- gem 'vagrant-lxc', github: 'fgrehm/vagrant-lxc'
19
- gem 'vagrant-global-status', github: 'fgrehm/vagrant-global-status'
20
- gem 'ventriloquist', github: 'fgrehm/ventriloquist'
16
+ gem 'vagrant-notify', github: 'fgrehm/vagrant-notify'
17
+ gem 'vagrant-cachier', github: 'fgrehm/vagrant-cachier'
18
+ gem 'vagrant-pristine', github: 'fgrehm/vagrant-pristine'
19
+ gem 'vagrant-lxc', github: 'fgrehm/vagrant-lxc'
20
+ gem 'ventriloquist', github: 'fgrehm/ventriloquist'
21
21
  end
@@ -1,81 +1,91 @@
1
1
  GIT
2
2
  remote: git://github.com/fgrehm/vagrant-cachier.git
3
- revision: 536ca7ad54b3096644993f91f363df8a884d4600
3
+ revision: 2faa6615466f8d518893f5ba51b493b877d2efde
4
4
  specs:
5
- vagrant-cachier (0.4.2.dev)
6
-
7
- GIT
8
- remote: git://github.com/fgrehm/vagrant-global-status.git
9
- revision: a0295400a0e47756cbcb8f97ed9f4449b1fb6b56
10
- specs:
11
- vagrant-global-status (0.1.1)
5
+ vagrant-cachier (0.6.1.dev)
12
6
 
13
7
  GIT
14
8
  remote: git://github.com/fgrehm/vagrant-lxc.git
15
- revision: 4ca375ec5049fd2e50773b486df84ecd14f0dc4f
9
+ revision: 4a84d95ff26bf2d887b127765a9ae404899734f9
16
10
  specs:
17
- vagrant-lxc (0.6.5.dev)
11
+ vagrant-lxc (0.8.1.dev)
18
12
 
19
13
  GIT
20
14
  remote: git://github.com/fgrehm/vagrant-notify.git
21
- revision: 4fd0040dc63ac88094aaa52c21496badebe1f938
15
+ revision: 56cc81882a6ca0c74ad662c81fca8105a307782c
22
16
  specs:
23
- vagrant-notify (0.3.0)
17
+ vagrant-notify (0.4.1.dev)
24
18
 
25
19
  GIT
26
20
  remote: git://github.com/fgrehm/vagrant-pristine.git
27
- revision: 4638491786943bfbf6f115b1fc379f069963fe46
21
+ revision: 503dbc47848c81d0fbfa6840491856f518d244a1
28
22
  specs:
29
23
  vagrant-pristine (0.3.0)
30
24
 
31
25
  GIT
32
26
  remote: git://github.com/fgrehm/ventriloquist.git
33
- revision: 0eadf36c67417b13890715bc365b858b8adcd959
27
+ revision: 8f87f95e69f5dba6faf1b9b8c74ad51a0068d8b7
28
+ specs:
29
+ ventriloquist (0.4.2.dev)
30
+ vocker (~> 0.4.1)
31
+
32
+ GIT
33
+ remote: git://github.com/mitchellh/vagrant-spec.git
34
+ revision: fbd067bbe5e2a789bb2b29c38d1224cdd9386836
35
+ ref: fbd067bbe5e2a789bb2b29c38d1224cdd9386836
34
36
  specs:
35
- ventriloquist (0.3.3.dev)
36
- vocker (~> 0.3.3)
37
+ vagrant-spec (0.0.1)
38
+ childprocess (~> 0.3.7)
39
+ log4r (~> 1.1.9)
40
+ rspec (~> 2.14)
41
+ thor (~> 0.18.1)
37
42
 
38
43
  GIT
39
44
  remote: git://github.com/mitchellh/vagrant.git
40
- revision: a92e03cf4ce936243d3959b7b5603262a234a58d
45
+ revision: 4f0eb9504cc786d5a57a43814427e8eb35407a4c
46
+ tag: v1.4.3
41
47
  specs:
42
- vagrant (1.3.6.dev)
48
+ vagrant (1.4.3)
43
49
  childprocess (~> 0.3.7)
44
50
  erubis (~> 2.7.0)
45
51
  i18n (~> 0.6.0)
46
52
  log4r (~> 1.1.9)
47
53
  net-scp (~> 1.1.0)
48
- net-ssh (~> 2.6.6)
54
+ net-ssh (>= 2.6.6, < 2.8.0)
49
55
 
50
56
  PATH
51
57
  remote: .
52
58
  specs:
53
- docker-provider (0.0.2)
59
+ docker-provider (0.1.0)
54
60
 
55
61
  GEM
56
62
  remote: https://rubygems.org/
57
63
  specs:
58
64
  celluloid (0.15.2)
59
65
  timers (~> 1.1.0)
66
+ celluloid-io (0.15.0)
67
+ celluloid (>= 0.15.0)
68
+ nio4r (>= 0.5.0)
60
69
  childprocess (0.3.9)
61
70
  ffi (~> 1.0, >= 1.0.11)
62
- coderay (1.0.9)
63
- diff-lcs (1.2.4)
71
+ coderay (1.1.0)
72
+ diff-lcs (1.2.5)
64
73
  erubis (2.7.0)
65
74
  ffi (1.9.3)
66
75
  formatador (0.2.4)
67
- guard (2.2.2)
76
+ guard (2.5.1)
68
77
  formatador (>= 0.2.4)
69
- listen (~> 2.1)
78
+ listen (~> 2.6)
70
79
  lumberjack (~> 1.0)
71
80
  pry (>= 0.9.12)
72
81
  thor (>= 0.18.1)
73
- guard-rspec (4.0.3)
74
- guard (>= 2.1.1)
75
- rspec (~> 2.14)
76
- i18n (0.6.5)
77
- listen (2.2.0)
82
+ guard-rspec (4.2.7)
83
+ guard (~> 2.1)
84
+ rspec (>= 2.14, < 4.0)
85
+ i18n (0.6.9)
86
+ listen (2.6.1)
78
87
  celluloid (>= 0.15.2)
88
+ celluloid-io (>= 0.15.0)
79
89
  rb-fsevent (>= 0.9.3)
80
90
  rb-inotify (>= 0.9)
81
91
  log4r (1.1.10)
@@ -83,27 +93,28 @@ GEM
83
93
  method_source (0.8.2)
84
94
  net-scp (1.1.2)
85
95
  net-ssh (>= 2.6.5)
86
- net-ssh (2.6.8)
87
- pry (0.9.12.2)
88
- coderay (~> 1.0.5)
96
+ net-ssh (2.7.0)
97
+ nio4r (1.0.0)
98
+ pry (0.9.12.6)
99
+ coderay (~> 1.0)
89
100
  method_source (~> 0.8)
90
101
  slop (~> 3.4)
91
- rake (10.1.0)
92
- rb-fsevent (0.9.3)
93
- rb-inotify (0.9.2)
102
+ rake (10.1.1)
103
+ rb-fsevent (0.9.4)
104
+ rb-inotify (0.9.3)
94
105
  ffi (>= 0.5.0)
95
106
  rspec (2.14.1)
96
107
  rspec-core (~> 2.14.0)
97
108
  rspec-expectations (~> 2.14.0)
98
109
  rspec-mocks (~> 2.14.0)
99
110
  rspec-core (2.14.7)
100
- rspec-expectations (2.14.3)
111
+ rspec-expectations (2.14.5)
101
112
  diff-lcs (>= 1.1.3, < 2.0)
102
- rspec-mocks (2.14.4)
103
- slop (3.4.6)
113
+ rspec-mocks (2.14.6)
114
+ slop (3.4.7)
104
115
  thor (0.18.1)
105
116
  timers (1.1.0)
106
- vocker (0.3.3)
117
+ vocker (0.4.1)
107
118
 
108
119
  PLATFORMS
109
120
  ruby
@@ -118,8 +129,8 @@ DEPENDENCIES
118
129
  rspec
119
130
  vagrant!
120
131
  vagrant-cachier!
121
- vagrant-global-status!
122
132
  vagrant-lxc!
123
133
  vagrant-notify!
124
134
  vagrant-pristine!
135
+ vagrant-spec!
125
136
  ventriloquist!
@@ -1,4 +1,4 @@
1
- Copyright (c) 2013 Fabio Rehm
1
+ Copyright (c) 2013-2014 Fabio Rehm
2
2
 
3
3
  MIT License
4
4
 
data/README.md CHANGED
@@ -1,19 +1,20 @@
1
1
  # docker-provider
2
2
 
3
- A spike on a [Docker](http://www.docker.io/) provider for [Vagrant](http://www.vagrantup.com/)
4
- 1.3+.
3
+ [![Build Status](https://travis-ci.org/fgrehm/docker-provider.png?branch=master)](https://travis-ci.org/fgrehm/docker-provider) [![Gem Version](https://badge.fury.io/rb/docker-provider.png)](http://badge.fury.io/rb/docker-provider) [![Gittip](http://img.shields.io/gittip/fgrehm.svg)](https://www.gittip.com/fgrehm/)
4
+
5
+ A [Docker](http://www.docker.io/) provider for [Vagrant](http://www.vagrantup.com/)
6
+ 1.4+.
5
7
 
6
8
 
7
9
  ## Warning
8
10
 
9
- This is highly experimental and is just 8 [tomatoes](http://pomodorotechnique.com/)
10
- worth of development / testing.
11
+ This is experimental, expect things to break.
11
12
 
12
13
 
13
14
  ## Requirements
14
15
 
15
- * Vagrant 1.3+
16
- * Docker 0.6.5+
16
+ * Vagrant 1.4+
17
+ * Docker 0.7.0+
17
18
 
18
19
 
19
20
  ## Features
@@ -22,75 +23,142 @@ worth of development / testing.
22
23
  * Port forwarding
23
24
  * Synced / shared folders support
24
25
  * Set container hostnames from Vagrantfiles
25
- * Provision Docker containers with any built-in Vagrant provider
26
+ * Provision Docker containers with any built-in Vagrant provisioner (as long as the container has a SSH server running)
27
+
28
+ You can see the plugin in action by watching the following asciicasts I published
29
+ prior to releasing 0.0.1:
30
+
31
+ * http://asciinema.org/a/6162
32
+ * http://asciinema.org/a/6177
26
33
 
27
34
 
28
35
  ## Getting started
29
36
 
30
- If you are on a Mac / Windows machine, please fire up a x64 VM with Docker +
31
- Vagrant installed or use [this Vagrantfile](https://gist.github.com/fgrehm/fc48fb51ec7df64439e4)
32
- and follow the instructions from there.
37
+ If you are on a Mac / Windows machine, please fire up a x64 Linux VM with Docker +
38
+ Vagrant 1.4+ installed or use [this Vagrantfile](https://gist.github.com/fgrehm/fc48fb51ec7df64439e4)
39
+ and follow the instructions from within the VM.
33
40
 
34
- The plugin is not very user friendly at the moment, so please download the base
35
- Docker image manually with `docker pull fgrehm/vagrant-ubuntu:precise` in order
36
- to have some feedback about the download process.
41
+ _It is likely that the plugin works with [boot2docker](http://boot2docker.github.io/)
42
+ but I personally haven't tried that yet. If you are able to give it a go please
43
+ [let me know](https://github.com/fgrehm/docker-provider/issues/new)._
37
44
 
38
- Assuming you have Vagrant 1.3+ and Docker 0.6.5+ installed just sing that same
45
+ ### Initial setup
46
+
47
+ _If you are trying things out from a Vagrant VM using the `Vagrantfile` gisted
48
+ above, you can skip to the next section_
49
+
50
+ The plugin requires Docker's executable to be available on current user's `PATH`
51
+ and that the current user has been added to the `docker` group since we are not
52
+ using `sudo` when interacting with Docker's CLI. For more information on setting
53
+ this up please check [this page](http://docs.docker.io/en/latest/installation/ubuntulinux/#giving-non-root-access).
54
+
55
+ ### `vagrant up`
56
+
57
+ On its current state, the plugin is not "user friendly" and won't provide any kind
58
+ of feedback about the process of downloading Docker images, so before you add a
59
+ `docker-provider` [base box](http://docs.vagrantup.com/v2/boxes.html) it is recommended
60
+ that you `docker pull` the associated base box images prior to spinning up `docker-provider`
61
+ containers (otherwise you'll be staring at a blinking cursor without any progress
62
+ information for a while).
63
+
64
+ Assuming you have Vagrant 1.4+ and Docker 0.7.0+ installed just sing that same
39
65
  old song:
40
66
 
41
- ```
67
+ ```sh
42
68
  vagrant plugin install docker-provider
43
- vagrant box add precise http://bit.ly/vagrant-docker-precise
44
- vagrant init precise
69
+ docker pull fgrehm/vagrant-ubuntu:precise
70
+ vagrant box add precise64 http://bit.ly/vagrant-docker-precise
71
+ vagrant init precise64
45
72
  vagrant up --provider=docker
46
73
  ```
47
74
 
75
+ Under the hood, that base box will [configure](#configuration) `docker-provider`
76
+ to use the [`fgrehm/vagrant-ubuntu:precise`](https://index.docker.io/u/fgrehm/vagrant-ubuntu/)
77
+ image that approximates a standard Vagrant box (`vagrant` user, default SSH key,
78
+ etc.) and you should be good to go.
79
+
48
80
 
49
81
  ## Using custom images
50
82
 
51
83
  If you want to use a custom Docker image without creating a Vagrant base box,
52
- you can use a "dummy" box:
53
-
54
- ```
55
- vagrant box add dummy http://bit.ly/vagrant-docker-dummy
56
- ```
57
-
58
- And configure things from your `Vagrantfile` like in [vagrant-digitalocean](https://github.com/smdahlen/vagrant-digitalocean#configure)
84
+ you can use a "dummy" box and configure things from your `Vagrantfile` like
85
+ in [vagrant-digitalocean](https://github.com/smdahlen/vagrant-digitalocean#configure)
59
86
  or [vagrant-aws](https://github.com/mitchellh/vagrant-aws#quick-start):
60
87
 
61
88
  ```ruby
62
89
  Vagrant.configure("2") do |config|
63
90
  config.vm.box = "dummy"
91
+ config.vm.box_url = "http://bit.ly/vagrant-docker-dummy"
64
92
  config.vm.provider :docker do |docker|
65
93
  docker.image = "your/image:tag"
66
- docker.cmd = ["/path/to/your", "command"]
67
94
  end
68
95
  end
69
96
  ```
70
97
 
71
98
 
72
- ## Limitations
99
+ ## Configuration
73
100
 
74
- There's probably a whole lot of limitations right now but during these early days
75
- of the plugin I can tell you for sure that some things are probably not going to
76
- work as you might expect. For instance forwarded ports, synced folders and containers'
77
- hostnames will not be reconfigured on `vagrant reload`s if they have changed and
78
- the plugin **_will not give you any kind of warning or message_**. For instance,
79
- if you change your Puppet manifests / Chef cookbooks paths (which are shared /
80
- synced folders under the hood), **_you'll need to start from scratch_**. Oh,
81
- and forwarded ports automatic collision handling is **_not supported as well_**.
101
+ This provider exposes a few provider-specific configuration options
102
+ that are passed on to `docker run` under the hood when the container
103
+ is being created:
82
104
 
83
- The plugin also requires Docker's executable to be available on current user's `PATH`
84
- and that the current user has been added to the `docker` group since we are not
85
- using `sudo` when interacting with Docker's CLI. For more information on setting
86
- this up please check [this page](http://docs.docker.io/en/latest/use/basics/#why-sudo).
105
+ * `image` - Docker image to run (required)
106
+ * `privileged` - Give extended privileges to the container (defaults to false)
107
+ * `cmd` - An array of strings that makes up for the command to run the container (defaults to what has been set on your `Dockerfile` as `CMD` or `ENTRYPOINT`)
108
+ * `ports` - An array of strings that makes up for the mapped network ports
109
+ * `volumes` - An array of strings that makes up for the data volumes used by the container
87
110
 
88
- Another thing to keep in mind is that Docker is all about _application containers_
89
- and not _machine containers_. I failed to boot a Docker container in what people
90
- have been calling "[machine mode](https://github.com/dotcloud/docker/issues/2170#issuecomment-26118964)"
91
- and some hacking will be required in order to run multiple processes on the
92
- container as described below. For more information about the issues related to
93
- it, please search Docker's issue tracker for `/sbin/init` and / or "machine mode".
111
+ These can be set like typical provider-specific configuration:
112
+
113
+ ```ruby
114
+ Vagrant.configure("2") do |config|
115
+ # ... other stuff
116
+
117
+ config.vm.provider :docker do |docker|
118
+ docker.image = 'fgrehm/vagrant-ubuntu-dind:precise'
119
+ docker.privileged = true
120
+ docker.cmd = ['/dind', '/sbin/init']
121
+
122
+ docker.ports << '1234:22'
123
+ docker.volumes << '/var/lib/docker'
124
+ end
125
+ end
126
+ ```
127
+
128
+
129
+ ## Networks
130
+
131
+ Networking features in the form of `config.vm.network` are not supported with
132
+ `docker-provider` apart from [forwarded ports]().
133
+ If any of [`:private_network`](http://docs.vagrantup.com/v2/networking/private_network.html)
134
+ or [`:public_network`](http://docs.vagrantup.com/v2/networking/public_network.html)
135
+ are specified, Vagrant **won't** emit a warning.
136
+
137
+ The same applies to changes on forwarded ports after the container has been
138
+ created, Vagrant **won't** emit a warning to let you know that the ports specified
139
+ on your `Vagrantfile` differs from what has been passed on to `docker run` when
140
+ creating the container.
141
+
142
+ _At some point the plugin will emit warnings on the scenarios described above, but
143
+ not on its current state. Pull Requests are encouraged ;)_
144
+
145
+
146
+ ## Synced Folders
147
+
148
+ There is support for synced folders on the form of [Docker volumes](http://docs.docker.io/en/latest/use/working_with_volumes/#mount-a-host-directory-as-a-container-volume)
149
+ but as with forwarded ports, you won't be able to change them after the container
150
+ has been created. [NFS](http://docs.vagrantup.com/v2/synced-folders/nfs.html)
151
+ synced folders are also supported (as long as you set the `privileged`
152
+ [config](#configuration) to true so that `docker-provider` can mount it on the
153
+ guest container) and are capable of being reconfigured between `vagrant reload`s
154
+ (different from Docker volumes).
155
+
156
+ This is good enough for all built-in Vagrant provisioners (shell,
157
+ chef, and puppet) to work!
158
+
159
+ _At some point the plugin will emit warnings when the configured `Vagrantfile`
160
+ synced folders / volumes differs from the ones used upon the container creation,
161
+ but not on its current state. Pull Requests are encouraged ;)_
94
162
 
95
163
 
96
164
  ## Box format
@@ -104,25 +172,29 @@ The box format is basically just the required `metadata.json` file along with a
104
172
  for this provider.
105
173
 
106
174
 
107
- ## Running multiple processes on the container
175
+ ## Available base boxes
108
176
 
109
- Unless you are able to run the container in "machine mode", you'll need to create
110
- a custom command / script that starts the processes you need prior to firing up
111
- the SSH server. An example can be found at the [`boxes/nginx`](boxes/nginx)
112
- folder of this repo.
177
+ | LINK | DESCRIPTION |
178
+ | --- | --- |
179
+ | http://bit.ly/vagrant-docker-precise | Ubuntu 12.04 Precise x86_64 with Puppet and Chef preinstalled and configured to run `/sbin/init` |
180
+ | http://bit.ly/vagrant-docker-precise-dind | Ubuntu 12.04 Precise x86_64 based on the box above and ready to run [DinD](https://github.com/jpetazzo/dind) |
113
181
 
114
- On a side note, if you really need your Docker containers to behave like machines
115
- with Vagrant and you can't get it to work that way like me, you might want to use
116
- [vagrant-lxc](https://github.com/fgrehm/vagrant-lxc) as an alternative.
117
182
 
183
+ ## Limitations
118
184
 
119
- ## Got feedback?
185
+ As explained on the [networks](#networks) and [synced folder](#synced-folders)
186
+ sections above, there are some "gotchas" when using the plugin that you need to have
187
+ in mind before you start to pull your hair out.
120
188
 
121
- Please keep in mind that this is a spike and I'm not sure if / how the project
122
- will evolve. I'm planning to write about why I built this at some point but
123
- in case you have any feedback feel free to open up an [issue here on GitHub](https://github.com/fgrehm/docker-provider/issues),
124
- shoot a tweet to [@fgrehm](https://twitter.com/fgrehm) or send a mail to the
125
- address available on my GitHub profile.
189
+ For instance, forwarded ports, synced folders and containers' hostnames will not be
190
+ reconfigured on `vagrant reload`s if they have changed and the plugin **_will not
191
+ give you any kind of warning or message_**. As an example, if you change your Puppet
192
+ manifests / Chef cookbooks paths (which are shared / synced folders under the hood),
193
+ **_you'll need to start from scratch_** (unless you make them NFS shared folders).
194
+ This is due to a limitation in Docker itself as we can't change those parameters
195
+ after the container has been created.
196
+
197
+ Forwarded ports automatic collision handling is **_not supported as well_**.
126
198
 
127
199
 
128
200
  ## Contributing
@@ -132,5 +204,3 @@ address available on my GitHub profile.
132
204
  3. Commit your changes (`git commit -am 'Add some feature'`)
133
205
  4. Push to the branch (`git push origin my-new-feature`)
134
206
  5. Create new Pull Request
135
-
136
- [![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/fgrehm/docker-provider/trend.png)](https://bitdeli.com/free "Bitdeli Badge")