summaryrefslogtreecommitdiff
path: root/libpod/container.go
diff options
context:
space:
mode:
authorMatthew Heon <matthew.heon@gmail.com>2017-12-06 16:43:23 -0500
committerAtomic Bot <atomic-devel@projectatomic.io>2017-12-14 23:59:21 +0000
commitff9c965335af0258bd34edae31699a87a03689a9 (patch)
tree71e308867fe885a2c94181e8631c9c9cf8793f7d /libpod/container.go
parent0ff92f8e20edb46eb8a9d82b929e153bcdaa3044 (diff)
downloadpodman-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.go18
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