... | ... |
@@ -5,11 +5,13 @@ BOX_NAME = ENV['BOX_NAME'] || "ubuntu" |
5 | 5 |
BOX_URI = ENV['BOX_URI'] || "http://files.vagrantup.com/precise64.box" |
6 | 6 |
AWS_REGION = ENV['AWS_REGION'] || "us-east-1" |
7 | 7 |
AWS_AMI = ENV['AWS_AMI'] || "ami-d0f89fb9" |
8 |
+FORWARD_DOCKER_PORTS = ENV['FORWARD_DOCKER_PORTS'] |
|
8 | 9 |
|
9 | 10 |
Vagrant::Config.run do |config| |
10 | 11 |
# Setup virtual machine box. This VM configuration code is always executed. |
11 | 12 |
config.vm.box = BOX_NAME |
12 | 13 |
config.vm.box_url = BOX_URI |
14 |
+ config.vm.forward_port 4243, 4243 |
|
13 | 15 |
|
14 | 16 |
# Provision docker and new kernel if deployment was not done |
15 | 17 |
if Dir.glob("#{File.dirname(__FILE__)}/.vagrant/machines/default/*/id").empty? |
... | ... |
@@ -70,3 +72,17 @@ Vagrant::VERSION >= "1.1.0" and Vagrant.configure("2") do |config| |
70 | 70 |
config.vm.box_url = BOX_URI |
71 | 71 |
end |
72 | 72 |
end |
73 |
+ |
|
74 |
+if !FORWARD_DOCKER_PORTS.nil? |
|
75 |
+ Vagrant::VERSION < "1.1.0" and Vagrant::Config.run do |config| |
|
76 |
+ (49000..49900).each do |port| |
|
77 |
+ config.vm.forward_port port, port |
|
78 |
+ end |
|
79 |
+ end |
|
80 |
+ |
|
81 |
+ Vagrant::VERSION >= "1.1.0" and Vagrant.configure("2") do |config| |
|
82 |
+ (49000..49900).each do |port| |
|
83 |
+ config.vm.network :forwarded_port, :host => port, :guest => port |
|
84 |
+ end |
|
85 |
+ end |
|
86 |
+end |
... | ... |
@@ -658,6 +658,10 @@ func (srv *Server) ImageImport(src, repo, tag string, in io.Reader, out io.Write |
658 | 658 |
|
659 | 659 |
func (srv *Server) ContainerCreate(config *Config) (string, error) { |
660 | 660 |
|
661 |
+ if config.Memory != 0 && config.Memory < 524288 { |
|
662 |
+ return "", fmt.Errorf("Memory limit must be given in bytes (minimum 524288 bytes)") |
|
663 |
+ } |
|
664 |
+ |
|
661 | 665 |
if config.Memory > 0 && !srv.runtime.capabilities.MemoryLimit { |
662 | 666 |
config.Memory = 0 |
663 | 667 |
} |
... | ... |
@@ -147,3 +147,25 @@ func TestCreateStartRestartStopStartKillRm(t *testing.T) { |
147 | 147 |
} |
148 | 148 |
|
149 | 149 |
} |
150 |
+ |
|
151 |
+func TestRunWithTooLowMemoryLimit(t *testing.T) { |
|
152 |
+ runtime, err := newTestRuntime() |
|
153 |
+ srv := &Server{runtime: runtime} |
|
154 |
+ if err != nil { |
|
155 |
+ t.Fatal(err) |
|
156 |
+ } |
|
157 |
+ defer nuke(runtime) |
|
158 |
+ // Try to create a container with a memory limit of 1 byte less than the minimum allowed limit. |
|
159 |
+ _, err = srv.ContainerCreate( |
|
160 |
+ &Config{ |
|
161 |
+ Image: GetTestImage(runtime).ID, |
|
162 |
+ Memory: 524287, |
|
163 |
+ CpuShares: 1000, |
|
164 |
+ Cmd: []string{"/bin/cat"}, |
|
165 |
+ }, |
|
166 |
+ ) |
|
167 |
+ if err == nil { |
|
168 |
+ t.Errorf("Memory limit is smaller than the allowed limit. Container creation should've failed!") |
|
169 |
+ } |
|
170 |
+ |
|
171 |
+} |