Bläddra i källkod

Put the resolv.conf path in a variable instead of being hardcoded within lxc

Guillaume J. Charmes 12 år sedan
förälder
incheckning
1f9f5eed5d
3 ändrade filer med 14 tillägg och 9 borttagningar
  1. 8 7
      container.go
  2. 1 1
      lxc_template.go
  3. 5 1
      runtime.go

+ 8 - 7
container.go

@@ -33,13 +33,14 @@ type Container struct {
 	network         *NetworkInterface
 	NetworkSettings *NetworkSettings
 
-	SysInitPath string
-	cmd         *exec.Cmd
-	stdout      *writeBroadcaster
-	stderr      *writeBroadcaster
-	stdin       io.ReadCloser
-	stdinPipe   io.WriteCloser
-
+	SysInitPath    string
+	ResolvConfPath string
+
+	cmd       *exec.Cmd
+	stdout    *writeBroadcaster
+	stderr    *writeBroadcaster
+	stdin     io.ReadCloser
+	stdinPipe io.WriteCloser
 	ptyMaster io.Closer
 
 	runtime *Runtime

+ 1 - 1
lxc_template.go

@@ -78,7 +78,7 @@ lxc.mount.entry = devpts {{$ROOTFS}}/dev/pts devpts newinstance,ptmxmode=0666,no
 lxc.mount.entry = {{.SysInitPath}} {{$ROOTFS}}/sbin/init none bind,ro 0 0
 
 # In order to get a working DNS environment, mount bind (ro) the host's /etc/resolv.conf into the container
-lxc.mount.entry = /etc/resolv.conf {{$ROOTFS}}/etc/resolv.conf none bind,ro 0 0
+lxc.mount.entry = {{.ResolvConfPath}} {{$ROOTFS}}/etc/resolv.conf none bind,ro 0 0
 
 
 # drop linux capabilities (apply mainly to the user root in the container)

+ 5 - 1
runtime.go

@@ -82,6 +82,9 @@ func (runtime *Runtime) Create(config *Config) (*Container, error) {
 	if config.Hostname == "" {
 		config.Hostname = id[:12]
 	}
+
+	resolvConfPath := "/etc/resolv.conf"
+
 	container := &Container{
 		// FIXME: we should generate the ID here instead of receiving it as an argument
 		Id:              id,
@@ -92,7 +95,8 @@ func (runtime *Runtime) Create(config *Config) (*Container, error) {
 		Image:           img.Id, // Always use the resolved image id
 		NetworkSettings: &NetworkSettings{},
 		// FIXME: do we need to store this in the container?
-		SysInitPath: sysInitPath,
+		SysInitPath:    sysInitPath,
+		ResolvConfPath: resolvConfPath,
 	}
 	container.root = runtime.containerRoot(container.Id)
 	// Step 1: create the container directory.