mirror of
https://github.com/moby/moby.git
synced 2022-11-09 12:21:53 -05:00
Move .dockerenv parsing to lxc driver
This is not needed for e.g. the native driver Docker-DCO-1.1-Signed-off-by: Alexander Larsson <alexl@redhat.com> (github: alexlarsson)
This commit is contained in:
parent
51a46e6a4f
commit
636959e20a
3 changed files with 34 additions and 30 deletions
|
@ -21,6 +21,10 @@ const DriverName = "lxc"
|
||||||
|
|
||||||
func init() {
|
func init() {
|
||||||
execdriver.RegisterInitFunc(DriverName, func(args *execdriver.InitArgs) error {
|
execdriver.RegisterInitFunc(DriverName, func(args *execdriver.InitArgs) error {
|
||||||
|
if err := setupEnv(args); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
if err := setupHostname(args); err != nil {
|
if err := setupHostname(args); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,17 +1,47 @@
|
||||||
package lxc
|
package lxc
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"encoding/json"
|
||||||
"fmt"
|
"fmt"
|
||||||
"github.com/dotcloud/docker/execdriver"
|
"github.com/dotcloud/docker/execdriver"
|
||||||
"github.com/dotcloud/docker/pkg/netlink"
|
"github.com/dotcloud/docker/pkg/netlink"
|
||||||
"github.com/dotcloud/docker/pkg/user"
|
"github.com/dotcloud/docker/pkg/user"
|
||||||
"github.com/syndtr/gocapability/capability"
|
"github.com/syndtr/gocapability/capability"
|
||||||
|
"io/ioutil"
|
||||||
"net"
|
"net"
|
||||||
"os"
|
"os"
|
||||||
"strings"
|
"strings"
|
||||||
"syscall"
|
"syscall"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// Clear environment pollution introduced by lxc-start
|
||||||
|
func setupEnv(args *execdriver.InitArgs) error {
|
||||||
|
// Get env
|
||||||
|
var env []string
|
||||||
|
content, err := ioutil.ReadFile(".dockerenv")
|
||||||
|
if err != nil {
|
||||||
|
return fmt.Errorf("Unable to load environment variables: %v", err)
|
||||||
|
}
|
||||||
|
if err := json.Unmarshal(content, &env); err != nil {
|
||||||
|
return fmt.Errorf("Unable to unmarshal environment variables: %v", err)
|
||||||
|
}
|
||||||
|
// Propagate the plugin-specific container env variable
|
||||||
|
env = append(env, "container="+os.Getenv("container"))
|
||||||
|
|
||||||
|
args.Env = env
|
||||||
|
|
||||||
|
os.Clearenv()
|
||||||
|
for _, kv := range args.Env {
|
||||||
|
parts := strings.SplitN(kv, "=", 2)
|
||||||
|
if len(parts) == 1 {
|
||||||
|
parts = append(parts, "")
|
||||||
|
}
|
||||||
|
os.Setenv(parts[0], parts[1])
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
func setupHostname(args *execdriver.InitArgs) error {
|
func setupHostname(args *execdriver.InitArgs) error {
|
||||||
hostname := getEnv(args, "HOSTNAME")
|
hostname := getEnv(args, "HOSTNAME")
|
||||||
if hostname == "" {
|
if hostname == "" {
|
||||||
|
|
|
@ -1,33 +1,16 @@
|
||||||
package sysinit
|
package sysinit
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"encoding/json"
|
|
||||||
"flag"
|
"flag"
|
||||||
"fmt"
|
"fmt"
|
||||||
"github.com/dotcloud/docker/execdriver"
|
"github.com/dotcloud/docker/execdriver"
|
||||||
_ "github.com/dotcloud/docker/execdriver/lxc"
|
_ "github.com/dotcloud/docker/execdriver/lxc"
|
||||||
_ "github.com/dotcloud/docker/execdriver/native"
|
_ "github.com/dotcloud/docker/execdriver/native"
|
||||||
"io/ioutil"
|
|
||||||
"log"
|
"log"
|
||||||
"os"
|
"os"
|
||||||
"strings"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// Clear environment pollution introduced by lxc-start
|
|
||||||
func setupEnv(args *execdriver.InitArgs) {
|
|
||||||
os.Clearenv()
|
|
||||||
for _, kv := range args.Env {
|
|
||||||
parts := strings.SplitN(kv, "=", 2)
|
|
||||||
if len(parts) == 1 {
|
|
||||||
parts = append(parts, "")
|
|
||||||
}
|
|
||||||
os.Setenv(parts[0], parts[1])
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func executeProgram(args *execdriver.InitArgs) error {
|
func executeProgram(args *execdriver.InitArgs) error {
|
||||||
setupEnv(args)
|
|
||||||
|
|
||||||
dockerInitFct, err := execdriver.GetInitFunc(args.Driver)
|
dockerInitFct, err := execdriver.GetInitFunc(args.Driver)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
|
@ -59,25 +42,12 @@ func SysInit() {
|
||||||
)
|
)
|
||||||
flag.Parse()
|
flag.Parse()
|
||||||
|
|
||||||
// Get env
|
|
||||||
var env []string
|
|
||||||
content, err := ioutil.ReadFile(".dockerenv")
|
|
||||||
if err != nil {
|
|
||||||
log.Fatalf("Unable to load environment variables: %v", err)
|
|
||||||
}
|
|
||||||
if err := json.Unmarshal(content, &env); err != nil {
|
|
||||||
log.Fatalf("Unable to unmarshal environment variables: %v", err)
|
|
||||||
}
|
|
||||||
// Propagate the plugin-specific container env variable
|
|
||||||
env = append(env, "container="+os.Getenv("container"))
|
|
||||||
|
|
||||||
args := &execdriver.InitArgs{
|
args := &execdriver.InitArgs{
|
||||||
User: *user,
|
User: *user,
|
||||||
Gateway: *gateway,
|
Gateway: *gateway,
|
||||||
Ip: *ip,
|
Ip: *ip,
|
||||||
WorkDir: *workDir,
|
WorkDir: *workDir,
|
||||||
Privileged: *privileged,
|
Privileged: *privileged,
|
||||||
Env: env,
|
|
||||||
Args: flag.Args(),
|
Args: flag.Args(),
|
||||||
Mtu: *mtu,
|
Mtu: *mtu,
|
||||||
Driver: *driver,
|
Driver: *driver,
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue