Skip to content

Commit a97cf23

Browse files
committed
add docs
2 parents 1086355 + 030cc8d commit a97cf23

27 files changed

+387
-98
lines changed

Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@ release: $(BINRELEASE)
5050
s3cmd -P put $(BINRELEASE) s3://get.docker.io/builds/`uname -s`/`uname -m`/docker-$(RELEASE_VERSION).tgz
5151
s3cmd -P put docker-latest.tgz s3://get.docker.io/builds/`uname -s`/`uname -m`/docker-latest.tgz
5252
s3cmd -P put $(SRCRELEASE)/bin/docker s3://get.docker.io/builds/`uname -s`/`uname -m`/docker
53+
echo $(RELEASE_VERSION) > latest ; s3cmd -P put latest s3://get.docker.io/latest ; rm latest
5354

5455
srcrelease: $(SRCRELEASE)
5556
deps: $(DOCKER_DIR)
@@ -65,7 +66,6 @@ $(BINRELEASE): $(SRCRELEASE)
6566
rm -f $(BINRELEASE)
6667
cd $(SRCRELEASE); make; cp -R bin docker-$(RELEASE_VERSION); tar -f ../$(BINRELEASE) -zv -c docker-$(RELEASE_VERSION)
6768
cd $(SRCRELEASE); cp -R bin docker-latest; tar -f ../docker-latest.tgz -zv -c docker-latest
68-
6969
clean:
7070
@rm -rf $(dir $(DOCKER_BIN))
7171
ifeq ($(GOPATH), $(BUILD_DIR))

Vagrantfile

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,6 @@ Vagrant::Config.run do |config|
2020
pkg_cmd = "apt-get update -qq; apt-get install -q -y python-software-properties; " \
2121
"add-apt-repository -y ppa:dotcloud/lxc-docker; apt-get update -qq; " \
2222
"apt-get install -q -y lxc-docker; "
23-
# Listen on all interfaces so that the daemon is accessible from the host
24-
pkg_cmd << "sed -i -E 's| /usr/bin/docker -d| /usr/bin/docker -d -H 0.0.0.0|' /etc/init/docker.conf;"
2523
# Add X.org Ubuntu backported 3.8 kernel
2624
pkg_cmd << "add-apt-repository -y ppa:ubuntu-x-swat/r-lts-backport; " \
2725
"apt-get update -qq; apt-get install -q -y linux-image-3.8.0-19-generic; "

api.go

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -488,7 +488,12 @@ func postContainersCreate(srv *Server, version float64, w http.ResponseWriter, r
488488
return err
489489
}
490490

491-
if len(config.Dns) == 0 && len(srv.runtime.Dns) == 0 && utils.CheckLocalDns() {
491+
resolvConf, err := utils.GetResolvConf()
492+
if err != nil {
493+
return err
494+
}
495+
496+
if len(config.Dns) == 0 && len(srv.runtime.Dns) == 0 && utils.CheckLocalDns(resolvConf) {
492497
out.Warnings = append(out.Warnings, fmt.Sprintf("Docker detected local DNS server on resolv.conf. Using default external servers: %v", defaultDns))
493498
config.Dns = defaultDns
494499
}
@@ -793,6 +798,7 @@ func postBuild(srv *Server, version float64, w http.ResponseWriter, r *http.Requ
793798
remoteURL := r.FormValue("remote")
794799
repoName := r.FormValue("t")
795800
rawSuppressOutput := r.FormValue("q")
801+
rawNoCache := r.FormValue("nocache")
796802
repoName, tag := utils.ParseRepositoryTag(repoName)
797803

798804
var context io.Reader
@@ -839,8 +845,12 @@ func postBuild(srv *Server, version float64, w http.ResponseWriter, r *http.Requ
839845
if err != nil {
840846
return err
841847
}
848+
noCache, err := getBoolParam(rawNoCache)
849+
if err != nil {
850+
return err
851+
}
842852

843-
b := NewBuildFile(srv, utils.NewWriteFlusher(w), !suppressOutput)
853+
b := NewBuildFile(srv, utils.NewWriteFlusher(w), !suppressOutput, !noCache)
844854
id, err := b.Build(context)
845855
if err != nil {
846856
fmt.Fprintf(w, "Error build: %s\n", err)

archive.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -173,7 +173,7 @@ func CopyWithTar(src, dst string) error {
173173
}
174174
// Create dst, copy src's content into it
175175
utils.Debugf("Creating dest directory: %s", dst)
176-
if err := os.MkdirAll(dst, 0700); err != nil && !os.IsExist(err) {
176+
if err := os.MkdirAll(dst, 0755); err != nil && !os.IsExist(err) {
177177
return err
178178
}
179179
utils.Debugf("Calling TarUntar(%s, %s)", src, dst)

builder.go

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,12 @@ func (builder *Builder) Create(config *Config) (*Container, error) {
8080
return nil, err
8181
}
8282

83-
if len(config.Dns) == 0 && len(builder.runtime.Dns) == 0 && utils.CheckLocalDns() {
83+
resolvConf, err := utils.GetResolvConf()
84+
if err != nil {
85+
return nil, err
86+
}
87+
88+
if len(config.Dns) == 0 && len(builder.runtime.Dns) == 0 && utils.CheckLocalDns(resolvConf) {
8489
//"WARNING: Docker detected local DNS server on resolv.conf. Using default external servers: %v", defaultDns
8590
builder.runtime.Dns = defaultDns
8691
}

buildfile.go

Lines changed: 31 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -26,11 +26,12 @@ type buildFile struct {
2626
builder *Builder
2727
srv *Server
2828

29-
image string
30-
maintainer string
31-
config *Config
32-
context string
33-
verbose bool
29+
image string
30+
maintainer string
31+
config *Config
32+
context string
33+
verbose bool
34+
utilizeCache bool
3435

3536
tmpContainers map[string]struct{}
3637
tmpImages map[string]struct{}
@@ -94,15 +95,17 @@ func (b *buildFile) CmdRun(args string) error {
9495

9596
utils.Debugf("Command to be executed: %v", b.config.Cmd)
9697

97-
if cache, err := b.srv.ImageGetCached(b.image, b.config); err != nil {
98-
return err
99-
} else if cache != nil {
100-
fmt.Fprintf(b.out, " ---> Using cache\n")
101-
utils.Debugf("[BUILDER] Use cached version")
102-
b.image = cache.ID
103-
return nil
104-
} else {
105-
utils.Debugf("[BUILDER] Cache miss")
98+
if b.utilizeCache {
99+
if cache, err := b.srv.ImageGetCached(b.image, b.config); err != nil {
100+
return err
101+
} else if cache != nil {
102+
fmt.Fprintf(b.out, " ---> Using cache\n")
103+
utils.Debugf("[BUILDER] Use cached version")
104+
b.image = cache.ID
105+
return nil
106+
} else {
107+
utils.Debugf("[BUILDER] Cache miss")
108+
}
106109
}
107110

108111
cid, err := b.run()
@@ -397,16 +400,19 @@ func (b *buildFile) commit(id string, autoCmd []string, comment string) error {
397400
b.config.Cmd = []string{"/bin/sh", "-c", "#(nop) " + comment}
398401
defer func(cmd []string) { b.config.Cmd = cmd }(cmd)
399402

400-
if cache, err := b.srv.ImageGetCached(b.image, b.config); err != nil {
401-
return err
402-
} else if cache != nil {
403-
fmt.Fprintf(b.out, " ---> Using cache\n")
404-
utils.Debugf("[BUILDER] Use cached version")
405-
b.image = cache.ID
406-
return nil
407-
} else {
408-
utils.Debugf("[BUILDER] Cache miss")
403+
if b.utilizeCache {
404+
if cache, err := b.srv.ImageGetCached(b.image, b.config); err != nil {
405+
return err
406+
} else if cache != nil {
407+
fmt.Fprintf(b.out, " ---> Using cache\n")
408+
utils.Debugf("[BUILDER] Use cached version")
409+
b.image = cache.ID
410+
return nil
411+
} else {
412+
utils.Debugf("[BUILDER] Cache miss")
413+
}
409414
}
415+
410416
container, err := b.builder.Create(b.config)
411417
if err != nil {
412418
return err
@@ -500,7 +506,7 @@ func (b *buildFile) Build(context io.Reader) (string, error) {
500506
return "", fmt.Errorf("An error occured during the build\n")
501507
}
502508

503-
func NewBuildFile(srv *Server, out io.Writer, verbose bool) BuildFile {
509+
func NewBuildFile(srv *Server, out io.Writer, verbose, utilizeCache bool) BuildFile {
504510
return &buildFile{
505511
builder: NewBuilder(srv.runtime),
506512
runtime: srv.runtime,
@@ -510,5 +516,6 @@ func NewBuildFile(srv *Server, out io.Writer, verbose bool) BuildFile {
510516
tmpContainers: make(map[string]struct{}),
511517
tmpImages: make(map[string]struct{}),
512518
verbose: verbose,
519+
utilizeCache: utilizeCache,
513520
}
514521
}

buildfile_test.go

Lines changed: 83 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -195,21 +195,23 @@ func mkTestingFileServer(files [][2]string) (*httptest.Server, error) {
195195

196196
func TestBuild(t *testing.T) {
197197
for _, ctx := range testContexts {
198-
buildImage(ctx, t)
198+
buildImage(ctx, t, nil, true)
199199
}
200200
}
201201

202-
func buildImage(context testContextTemplate, t *testing.T) *Image {
203-
runtime, err := newTestRuntime()
204-
if err != nil {
205-
t.Fatal(err)
206-
}
207-
defer nuke(runtime)
202+
func buildImage(context testContextTemplate, t *testing.T, srv *Server, useCache bool) *Image {
203+
if srv == nil {
204+
runtime, err := newTestRuntime()
205+
if err != nil {
206+
t.Fatal(err)
207+
}
208+
defer nuke(runtime)
208209

209-
srv := &Server{
210-
runtime: runtime,
211-
pullingPool: make(map[string]struct{}),
212-
pushingPool: make(map[string]struct{}),
210+
srv = &Server{
211+
runtime: runtime,
212+
pullingPool: make(map[string]struct{}),
213+
pushingPool: make(map[string]struct{}),
214+
}
213215
}
214216

215217
httpServer, err := mkTestingFileServer(context.remoteFiles)
@@ -224,10 +226,10 @@ func buildImage(context testContextTemplate, t *testing.T) *Image {
224226
}
225227
port := httpServer.URL[idx+1:]
226228

227-
ip := runtime.networkManager.bridgeNetwork.IP
229+
ip := srv.runtime.networkManager.bridgeNetwork.IP
228230
dockerfile := constructDockerfile(context.dockerfile, ip, port)
229231

230-
buildfile := NewBuildFile(srv, ioutil.Discard, false)
232+
buildfile := NewBuildFile(srv, ioutil.Discard, false, useCache)
231233
id, err := buildfile.Build(mkTestContext(dockerfile, context.files, t))
232234
if err != nil {
233235
t.Fatal(err)
@@ -245,7 +247,7 @@ func TestVolume(t *testing.T) {
245247
from {IMAGE}
246248
volume /test
247249
cmd Hello world
248-
`, nil, nil}, t)
250+
`, nil, nil}, t, nil, true)
249251

250252
if len(img.Config.Volumes) == 0 {
251253
t.Fail()
@@ -261,7 +263,7 @@ func TestBuildMaintainer(t *testing.T) {
261263
img := buildImage(testContextTemplate{`
262264
from {IMAGE}
263265
maintainer dockerio
264-
`, nil, nil}, t)
266+
`, nil, nil}, t, nil, true)
265267

266268
if img.Author != "dockerio" {
267269
t.Fail()
@@ -273,7 +275,7 @@ func TestBuildEnv(t *testing.T) {
273275
from {IMAGE}
274276
env port 4243
275277
`,
276-
nil, nil}, t)
278+
nil, nil}, t, nil, true)
277279
hasEnv := false
278280
for _, envVar := range img.Config.Env {
279281
if envVar == "port=4243" {
@@ -291,7 +293,7 @@ func TestBuildCmd(t *testing.T) {
291293
from {IMAGE}
292294
cmd ["/bin/echo", "Hello World"]
293295
`,
294-
nil, nil}, t)
296+
nil, nil}, t, nil, true)
295297

296298
if img.Config.Cmd[0] != "/bin/echo" {
297299
t.Log(img.Config.Cmd[0])
@@ -308,7 +310,7 @@ func TestBuildExpose(t *testing.T) {
308310
from {IMAGE}
309311
expose 4243
310312
`,
311-
nil, nil}, t)
313+
nil, nil}, t, nil, true)
312314

313315
if img.Config.PortSpecs[0] != "4243" {
314316
t.Fail()
@@ -320,8 +322,70 @@ func TestBuildEntrypoint(t *testing.T) {
320322
from {IMAGE}
321323
entrypoint ["/bin/echo"]
322324
`,
323-
nil, nil}, t)
325+
nil, nil}, t, nil, true)
324326

325327
if img.Config.Entrypoint[0] != "/bin/echo" {
326328
}
327329
}
330+
331+
func TestBuildImageWithCache(t *testing.T) {
332+
runtime, err := newTestRuntime()
333+
if err != nil {
334+
t.Fatal(err)
335+
}
336+
defer nuke(runtime)
337+
338+
srv := &Server{
339+
runtime: runtime,
340+
pullingPool: make(map[string]struct{}),
341+
pushingPool: make(map[string]struct{}),
342+
}
343+
344+
template := testContextTemplate{`
345+
from {IMAGE}
346+
maintainer dockerio
347+
`,
348+
nil, nil}
349+
350+
img := buildImage(template, t, srv, true)
351+
imageId := img.ID
352+
353+
img = nil
354+
img = buildImage(template, t, srv, true)
355+
356+
if imageId != img.ID {
357+
t.Logf("Image ids should match: %s != %s", imageId, img.ID)
358+
t.Fail()
359+
}
360+
}
361+
362+
func TestBuildImageWithoutCache(t *testing.T) {
363+
runtime, err := newTestRuntime()
364+
if err != nil {
365+
t.Fatal(err)
366+
}
367+
defer nuke(runtime)
368+
369+
srv := &Server{
370+
runtime: runtime,
371+
pullingPool: make(map[string]struct{}),
372+
pushingPool: make(map[string]struct{}),
373+
}
374+
375+
template := testContextTemplate{`
376+
from {IMAGE}
377+
maintainer dockerio
378+
`,
379+
nil, nil}
380+
381+
img := buildImage(template, t, srv, true)
382+
imageId := img.ID
383+
384+
img = nil
385+
img = buildImage(template, t, srv, false)
386+
387+
if imageId == img.ID {
388+
t.Logf("Image ids should not match: %s == %s", imageId, img.ID)
389+
t.Fail()
390+
}
391+
}

0 commit comments

Comments
 (0)