diff options
author | Matthew Heon <matthew.heon@pm.me> | 2019-03-10 12:16:30 -0400 |
---|---|---|
committer | Matthew Heon <matthew.heon@pm.me> | 2019-03-10 12:18:12 -0400 |
commit | bb0377eb3d225155bd3f1e5e4e774fa4d6e9b0e4 (patch) | |
tree | a96f3f30ce4fdcb754b15b9b3f374caadd34c41a /libpod | |
parent | 7f0128ac333b2d71c7edb11465b933dedc9accf7 (diff) | |
download | podman-bb0377eb3d225155bd3f1e5e4e774fa4d6e9b0e4.tar.gz podman-bb0377eb3d225155bd3f1e5e4e774fa4d6e9b0e4.tar.bz2 podman-bb0377eb3d225155bd3f1e5e4e774fa4d6e9b0e4.zip |
Don't delete another container's resolv and hosts files
The logic of deleting and recreating /etc/hosts and
/etc/resolv.conf only makes sense when we're the one that creates
the files - when we don't, it just removes them, and there's
nothing left to use.
Fixes #2602
Signed-off-by: Matthew Heon <matthew.heon@pm.me>
Diffstat (limited to 'libpod')
-rw-r--r-- | libpod/container_internal_linux.go | 23 |
1 files changed, 13 insertions, 10 deletions
diff --git a/libpod/container_internal_linux.go b/libpod/container_internal_linux.go index f50092550..c9f35dd75 100644 --- a/libpod/container_internal_linux.go +++ b/libpod/container_internal_linux.go @@ -665,18 +665,21 @@ func (c *Container) makeBindMounts() error { if !netDisabled { // If /etc/resolv.conf and /etc/hosts exist, delete them so we - // will recreate - if path, ok := c.state.BindMounts["/etc/resolv.conf"]; ok { - if err := os.Remove(path); err != nil && !os.IsNotExist(err) { - return errors.Wrapf(err, "error removing container %s resolv.conf", c.ID()) + // will recreate. Only do this if we aren't sharing them with + // another container. + if c.config.NetNsCtr == "" { + if path, ok := c.state.BindMounts["/etc/resolv.conf"]; ok { + if err := os.Remove(path); err != nil && !os.IsNotExist(err) { + return errors.Wrapf(err, "error removing container %s resolv.conf", c.ID()) + } + delete(c.state.BindMounts, "/etc/resolv.conf") } - delete(c.state.BindMounts, "/etc/resolv.conf") - } - if path, ok := c.state.BindMounts["/etc/hosts"]; ok { - if err := os.Remove(path); err != nil && !os.IsNotExist(err) { - return errors.Wrapf(err, "error removing container %s hosts", c.ID()) + if path, ok := c.state.BindMounts["/etc/hosts"]; ok { + if err := os.Remove(path); err != nil && !os.IsNotExist(err) { + return errors.Wrapf(err, "error removing container %s hosts", c.ID()) + } + delete(c.state.BindMounts, "/etc/hosts") } - delete(c.state.BindMounts, "/etc/hosts") } if c.config.NetNsCtr != "" { |