Docker should use /var/lib/docker/tmp for large temporary 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 |
+} |