无法在远程容器中的命名空间内运行隔离的进程

时间:2020-04-10 07:08:37

标签: linux docker go linux-namespaces

我的野心是在远程容器内运行Linux命名空间(在Go中),我可以在不影响主机的情况下运行隔离的进程。

    cmd := exec.Command("/bin/bash")

    cmd.Stdin = os.Stdin
    cmd.Stdout = os.Stdout
    cmd.Stderr = os.Stderr

    cmd.SysProcAttr = &syscall.SysProcAttr{
        Cloneflags: syscall.CLONE_NEWUTS,
    }

    err := cmd.Run()
    if err != nil {
        fmt.Printf(err.Error())
        os.Exit(1)
    }

让我们想象一下我想在这个隔离的空间内运行bash。因此,我为其运行了一个新的UTS名称空间。因此,当我运行代码时,我得到了这个错误。

fork/exec /bin/bash: operation not permitted

我对此错误进行了一些调查,发现由于名称空间问题而导致的错误原因。所以当我注释掉这些行

cmd.SysProcAttr = &syscall.SysProcAttr{
    Cloneflags: syscall.CLONE_NEWUTS,
}

代码有效。但这没有达到目的。我也尝试了--privilaged,但是没有用。还有其他方法可以克服这个问题吗?

0 个答案:

没有答案
相关问题