diff options
author | Matthew Heon <matthew.heon@gmail.com> | 2017-12-06 16:43:23 -0500 |
---|---|---|
committer | Atomic Bot <atomic-devel@projectatomic.io> | 2017-12-14 23:59:21 +0000 |
commit | ff9c965335af0258bd34edae31699a87a03689a9 (patch) | |
tree | 71e308867fe885a2c94181e8631c9c9cf8793f7d /libpod/container.go | |
parent | 0ff92f8e20edb46eb8a9d82b929e153bcdaa3044 (diff) | |
download | podman-ff9c965335af0258bd34edae31699a87a03689a9.tar.gz podman-ff9c965335af0258bd34edae31699a87a03689a9.tar.bz2 podman-ff9c965335af0258bd34edae31699a87a03689a9.zip |
Create new network namespaces when initializing containers
Also fix a few lingering lint issues
Signed-off-by: Matthew Heon <matthew.heon@gmail.com>
Closes: #109
Approved by: mheon
Diffstat (limited to 'libpod/container.go')
-rw-r--r-- | libpod/container.go | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/libpod/container.go b/libpod/container.go index ada037531..15ad1f49a 100644 --- a/libpod/container.go +++ b/libpod/container.go @@ -551,6 +551,20 @@ func (c *Container) Init() (err error) { return err } + // Make a network namespace for the container + if c.config.CreateNetNS && c.state.NetNS == nil { + if err := c.runtime.createNetNS(c); err != nil { + return err + } + } + defer func() { + if err != nil { + if err2 := c.runtime.teardownNetNS(c); err2 != nil { + logrus.Errorf("Error tearing down network namespace for container %s: %v", c.ID(), err2) + } + } + }() + // If the OCI spec already exists, we need to replace it // Cannot guarantee some things, e.g. network namespaces, have the same // paths @@ -580,6 +594,10 @@ func (c *Container) Init() (err error) { // Save OCI spec to disk g := generate.NewFromSpec(c.config.Spec) + // If network namespace was requested, add it now + if c.config.CreateNetNS { + g.AddOrReplaceLinuxNamespace(spec.NetworkNamespace, c.state.NetNS.Path()) + } // Mount ShmDir from host into container g.AddBindMount(c.config.ShmDir, "/dev/shm", []string{"rw"}) // Bind mount resolv.conf |