docker-provider 0.0.2 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
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")