docker-builder 0.1.30 → 0.1.31

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 256e96eb177d0c4fd4fbc0f79a06d3ab615c3f16
4
- data.tar.gz: 648599fd31fa6686b2b67c1d577c40896041873e
3
+ metadata.gz: 31f8f20a4c06dcd857f30ecd4c51150aa00696e1
4
+ data.tar.gz: 1e421d96878d8ba19816b26e6244e6453530c3c9
5
5
  SHA512:
6
- metadata.gz: 10f38caa907ddf6e402031bb37e0fbe644c1a70ac49eefcfc57225725425b81b9172cb7daaa036abfbcb4c856c2dcba95b578181db92d219730f4a6f4f76944f
7
- data.tar.gz: ae32df32af0100d09903fb461b887af2d65a0b691976dbba273002a9e18be3cf7da8346383bd5252eb25b3be215e7518bf1b48f4d14f0f7ac3309810b9ab5483
6
+ metadata.gz: 1661019db55a933fb618017c8a6ae4c397fdd2e4a70685393a69fe01ad2779ebbbd4dfe32ef2076bb48c9e7924e299f6e13ab27395e75cca968acede7ca2037e
7
+ data.tar.gz: 29260015299048be1cd780983f4631b5d787c365a0fd7f3b1ff2a73973ba1742819ff0b0131bd9b212169cc0673daf1ef2a7d99edbea0b59681a5504c0900c68
@@ -1,2 +1,2 @@
1
1
  gem build docker-builder.gemspec
2
- gem install ./docker-builder-0.1.30.gem
2
+ gem install ./docker-builder-0.1.31.gem
@@ -162,12 +162,15 @@ class Manager
162
162
  # create
163
163
  cmd %Q(docker create --name #{settings.container_name} #{settings.docker_ports_string} #{settings.docker_volumes_string} #{settings.docker_volumes_from_string} #{settings.docker_links_string} #{settings.run_extra_options_string} #{settings.run_env_variables_string} #{settings.image_name} #{settings['docker']['command']} #{settings['docker']['run_options']})
164
164
 
165
- # second network
166
- network2 = settings['docker']['network_secondary']
167
- if network2
168
- ip = network2['ip']
169
- s_ip = "--ip #{ip}" if ip
170
- cmd %Q(docker network connect #{s_ip} #{network2['net']} #{settings.container_name})
165
+ # networks
166
+ networks = settings['docker'].fetch('network', {}).fetch('networks', [])
167
+ if networks
168
+ networks.each do |net|
169
+ ip = net['ip']
170
+ s_ip = "--ip #{ip}" if ip
171
+ #puts %Q(docker network connect #{s_ip} #{net['net']} #{settings.container_name})
172
+ cmd %Q(docker network connect #{s_ip} #{net['net']} #{settings.container_name})
173
+ end
171
174
  end
172
175
  end
173
176
 
@@ -184,22 +187,21 @@ class Manager
184
187
 
185
188
 
186
189
  def self.setup_container_after_start(settings)
187
- # second network
188
- network2 = settings['docker']['network_secondary']
189
190
 
190
- # fixes
191
- if network2
192
- gateway = network2['gateway']
191
+ # default gateway
192
+ network= settings['docker']['network']
193
+ if network
194
+ gateway = network['default_gateway']
193
195
 
194
196
  if gateway
195
- puts "setup network gateway"
196
-
197
197
  # fix default gateway
198
- cmd %Q(docker exec #{settings.container_name} ip route change default via #{gateway} dev eth1)
198
+ #cmd %Q(docker exec #{settings.container_name} ip route change default via #{gateway} dev eth1)
199
+ cmd %Q(docker exec #{settings.container_name} ip route change default via #{gateway})
199
200
  end
200
-
201
201
  end
202
202
 
203
+
204
+
203
205
  # fix hosts
204
206
  container_hosts = settings['docker']['hosts'] || []
205
207
  container_hosts.each do |r|
@@ -1,3 +1,3 @@
1
1
  module DockerBuilder
2
- VERSION = "0.1.30"
2
+ VERSION = "0.1.31"
3
3
  end
data/readme.md CHANGED
@@ -184,6 +184,57 @@ http://localhost:8080
184
184
 
185
185
 
186
186
 
187
+ # Install Docker container. Overview
188
+
189
+ Process:
190
+ * Create container - docker create
191
+ * setup network and other settings for container
192
+
193
+ * run provision to setup host machine. Script is running on the host machine.
194
+ ```
195
+ {
196
+ 'install'=>
197
+ {
198
+ 'host'=> {type: 'ruby', ..}
199
+ }
200
+ ...
201
+ }
202
+ ```
203
+
204
+ * run provision to setup not running container. Run script which can copy/change files in container.
205
+ ```
206
+ {
207
+ 'install'=>
208
+ {
209
+ 'setup'=> {type: 'ruby'}
210
+ }
211
+ ...
212
+ }
213
+ ```
214
+ * run container with `docker run`. Specify env variables, hostname and other options
215
+ * first provision of container - bootstrap script. Run script from inside running container only once.
216
+ Script should be located inside container.
217
+ ```
218
+ {
219
+ 'install'=>
220
+ {
221
+ 'bootstrap'=> {type: 'chef'}
222
+ }
223
+ ```
224
+
225
+ * provision to init container. Run script every time after container starts. Script should be located inside container.
226
+ ```
227
+ {
228
+ 'install'=>
229
+ {
230
+ 'init'=> {type: 'chef'}
231
+ }
232
+ ```
233
+
234
+ * Use lock file to make sure the container does not start until the provision is finished.
235
+
236
+
237
+
187
238
 
188
239
 
189
240
  # Basic usage
@@ -621,3 +672,74 @@ RUN chmod +x /opt/bootstrap/bootstrap.sh
621
672
 
622
673
  ```
623
674
 
675
+
676
+
677
+ # Run docker container
678
+
679
+ ## Network
680
+
681
+ * config
682
+ ```
683
+ 'docker'=> {
684
+ ..
685
+ 'network': {
686
+ default_gateway: '192.168.1.1',
687
+ networks: {
688
+ {net: 'bridge'}, # default docker bridge
689
+ {net: 'mybridge1', ip: '10.1.0.12'},
690
+ {net: 'my_overlay1', ip: '51.1.0.15'},
691
+ }
692
+
693
+ }
694
+
695
+ }
696
+ ```
697
+
698
+
699
+
700
+ ## multiple networks
701
+
702
+ ```
703
+ 'docker'=> {
704
+ ..
705
+ 'network': {
706
+ networks: {
707
+ {net: 'mybridge1', ip: '10.1.0.12'},
708
+ {net: 'my_overlay1', ip: '51.1.0.15'},
709
+ }
710
+
711
+ }
712
+
713
+ }
714
+ ```
715
+
716
+ * example:
717
+
718
+ * create networks
719
+ ```
720
+ # bridge
721
+
722
+ # macvlan
723
+ ```
724
+
725
+ see docker networks:
726
+ ```
727
+ docker network ls
728
+ ```
729
+
730
+
731
+ in this example container will be connected to three networks:
732
+ * docker default bridge named 'bridge'
733
+ * custom docker network named 'mybridge1' with ip='10.1.0.12'
734
+ * custom docker network named 'my_overlay1'
735
+
736
+
737
+
738
+
739
+ * check
740
+ ```
741
+ ip route
742
+
743
+ ...
744
+
745
+ ```
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: docker-builder
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.30
4
+ version: 0.1.31
5
5
  platform: ruby
6
6
  authors:
7
7
  - Max Ivak
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-02-08 00:00:00.000000000 Z
11
+ date: 2017-02-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler