|
|
311a84 |
From 40b0f129f5a6e005a949dc0ba808fb9ee557ebe4 Mon Sep 17 00:00:00 2001
|
|
|
311a84 |
From: Mrunal Patel <mrunalp@gmail.com>
|
|
|
311a84 |
Date: Fri, 9 Oct 2015 17:57:44 -0400
|
|
|
311a84 |
Subject: [PATCH] Cherry pick changes for allowing /dev mount from host
|
|
|
311a84 |
|
|
|
311a84 |
docker #16639
|
|
|
311a84 |
|
|
|
311a84 |
runc commit id c9d58506297e
|
|
|
311a84 |
|
|
|
311a84 |
Signed-off-by: Mrunal Patel <mrunalp@gmail.com>
|
|
|
311a84 |
---
|
|
|
311a84 |
daemon/execdriver/native/create.go | 1 +
|
|
|
311a84 |
.../runc/libcontainer/rootfs_linux.go | 26 +++++++++++++---------
|
|
|
311a84 |
2 files changed, 17 insertions(+), 10 deletions(-)
|
|
|
311a84 |
|
|
|
311a84 |
diff --git a/daemon/execdriver/native/create.go b/daemon/execdriver/native/create.go
|
|
|
311a84 |
index bbc83fe..ca8d7fd 100644
|
|
|
311a84 |
--- a/daemon/execdriver/native/create.go
|
|
|
311a84 |
+++ b/daemon/execdriver/native/create.go
|
|
|
311a84 |
@@ -234,6 +234,7 @@ func (d *driver) setupMounts(container *configs.Config, c *execdriver.Command) e
|
|
|
311a84 |
for _, m := range container.Mounts {
|
|
|
311a84 |
if _, ok := userMounts[m.Destination]; !ok {
|
|
|
311a84 |
if mountDev && strings.HasPrefix(m.Destination, "/dev/") {
|
|
|
311a84 |
+ container.Devices = nil
|
|
|
311a84 |
continue
|
|
|
311a84 |
}
|
|
|
311a84 |
defaultMounts = append(defaultMounts, m)
|
|
|
311a84 |
diff --git a/vendor/src/github.com/opencontainers/runc/libcontainer/rootfs_linux.go b/vendor/src/github.com/opencontainers/runc/libcontainer/rootfs_linux.go
|
|
|
311a84 |
index a211d8d..9fd7058 100644
|
|
|
311a84 |
--- a/vendor/src/github.com/opencontainers/runc/libcontainer/rootfs_linux.go
|
|
|
311a84 |
+++ b/vendor/src/github.com/opencontainers/runc/libcontainer/rootfs_linux.go
|
|
|
311a84 |
@@ -27,6 +27,8 @@ func setupRootfs(config *configs.Config, console *linuxConsole) (err error) {
|
|
|
311a84 |
if err := prepareRoot(config); err != nil {
|
|
|
311a84 |
return newSystemError(err)
|
|
|
311a84 |
}
|
|
|
311a84 |
+
|
|
|
311a84 |
+ setupDev := len(config.Devices) == 0
|
|
|
311a84 |
for _, m := range config.Mounts {
|
|
|
311a84 |
for _, precmd := range m.PremountCmds {
|
|
|
311a84 |
if err := mountCmd(precmd); err != nil {
|
|
|
311a84 |
@@ -43,14 +45,16 @@ func setupRootfs(config *configs.Config, console *linuxConsole) (err error) {
|
|
|
311a84 |
}
|
|
|
311a84 |
}
|
|
|
311a84 |
}
|
|
|
311a84 |
- if err := createDevices(config); err != nil {
|
|
|
311a84 |
- return newSystemError(err)
|
|
|
311a84 |
- }
|
|
|
311a84 |
- if err := setupPtmx(config, console); err != nil {
|
|
|
311a84 |
- return newSystemError(err)
|
|
|
311a84 |
- }
|
|
|
311a84 |
- if err := setupDevSymlinks(config.Rootfs); err != nil {
|
|
|
311a84 |
- return newSystemError(err)
|
|
|
311a84 |
+ if !setupDev {
|
|
|
311a84 |
+ if err := createDevices(config); err != nil {
|
|
|
311a84 |
+ return newSystemError(err)
|
|
|
311a84 |
+ }
|
|
|
311a84 |
+ if err := setupPtmx(config, console); err != nil {
|
|
|
311a84 |
+ return newSystemError(err)
|
|
|
311a84 |
+ }
|
|
|
311a84 |
+ if err := setupDevSymlinks(config.Rootfs); err != nil {
|
|
|
311a84 |
+ return newSystemError(err)
|
|
|
311a84 |
+ }
|
|
|
311a84 |
}
|
|
|
311a84 |
if err := syscall.Chdir(config.Rootfs); err != nil {
|
|
|
311a84 |
return newSystemError(err)
|
|
|
311a84 |
@@ -63,8 +67,10 @@ func setupRootfs(config *configs.Config, console *linuxConsole) (err error) {
|
|
|
311a84 |
if err != nil {
|
|
|
311a84 |
return newSystemError(err)
|
|
|
311a84 |
}
|
|
|
311a84 |
- if err := reOpenDevNull(config.Rootfs); err != nil {
|
|
|
311a84 |
- return newSystemError(err)
|
|
|
311a84 |
+ if !setupDev {
|
|
|
311a84 |
+ if err := reOpenDevNull(config.Rootfs); err != nil {
|
|
|
311a84 |
+ return newSystemError(err)
|
|
|
311a84 |
+ }
|
|
|
311a84 |
}
|
|
|
311a84 |
if config.Readonlyfs {
|
|
|
311a84 |
if err := setReadonly(); err != nil {
|