Browse code

Merge pull request #6456 from rhatdan/tmpdir

Docker should use /var/lib/docker/tmp for large temporary files.

unclejack authored on 2014/08/07 02:31:46
Showing 4 changed files
... ...
@@ -678,7 +678,10 @@ func NewDaemonFromDirectory(config *daemonconfig.Config, eng *engine.Engine) (*D
678 678
 	}
679 679
 
680 680
 	// set up the TempDir to use a canonical path
681
-	tmp := os.TempDir()
681
+	tmp, err := utils.TempDir(config.Root)
682
+	if err != nil {
683
+		log.Fatalf("Unable to get the TempDir under %s: %s", config.Root, err)
684
+	}
682 685
 	realTmp, err := utils.ReadSymlinkedDirectory(tmp)
683 686
 	if err != nil {
684 687
 		log.Fatalf("Unable to get the full path to the TempDir (%s): %s", tmp, err)
... ...
@@ -120,12 +120,11 @@ systemd in the [docker source tree](
120 120
 https://github.com/docker/docker/blob/master/contrib/init/systemd/socket-activation/).
121 121
 
122 122
 Docker supports softlinks for the Docker data directory
123
-(`/var/lib/docker`) and for `/tmp`. TMPDIR and the data directory can be set
124
-like this:
123
+(`/var/lib/docker`) and for `/var/lib/docker/tmp`. The `DOCKER_TMPDIR` and the data directory can be set like this:
125 124
 
126
-    TMPDIR=/mnt/disk2/tmp /usr/local/bin/docker -d -D -g /var/lib/docker -H unix:// > /var/lib/boot2docker/docker.log 2>&1
125
+    DOCKER_TMPDIR=/mnt/disk2/tmp /usr/local/bin/docker -d -D -g /var/lib/docker -H unix:// > /var/lib/boot2docker/docker.log 2>&1
127 126
     # or
128
-    export TMPDIR=/mnt/disk2/tmp
127
+    export DOCKER_TMPDIR=/mnt/disk2/tmp
129 128
     /usr/local/bin/docker -d -D -g /var/lib/docker -H unix:// > /var/lib/boot2docker/docker.log 2>&1
130 129
 
131 130
 ## attach
132 131
new file mode 100644
... ...
@@ -0,0 +1,12 @@
0
+// +build !darwin,!dragonfly,!freebsd,!linux,!netbsd,!openbsd
1
+
2
+package utils
3
+
4
+import (
5
+	"os"
6
+)
7
+
8
+// TempDir returns the default directory to use for temporary files.
9
+func TempDir(rootdir string) (string error) {
10
+	return os.TempDir(), nil
11
+}
0 12
new file mode 100644
... ...
@@ -0,0 +1,18 @@
0
+// +build darwin dragonfly freebsd linux netbsd openbsd
1
+
2
+package utils
3
+
4
+import (
5
+	"os"
6
+	"path/filepath"
7
+)
8
+
9
+// TempDir returns the default directory to use for temporary files.
10
+func TempDir(rootDir string) (string, error) {
11
+	var tmpDir string
12
+	if tmpDir = os.Getenv("DOCKER_TMPDIR"); tmpDir == "" {
13
+		tmpDir = filepath.Join(rootDir, "tmp")
14
+	}
15
+	err := os.MkdirAll(tmpDir, 0700)
16
+	return tmpDir, err
17
+}