mirror of
https://github.com/containers/podman
synced 2024-10-19 16:54:07 +00:00
Don't output inodes created to run a container
There is a group of inodes that get created when running a container if they do not exist. containerMounts = map[string]bool{ "/dev": true, "/etc/hostname": true, "/etc/hosts": true, "/etc/resolv.conf": true, "/proc": true, "/run": true, "/run/.containerenv": true, "/run/secrets": true, "/sys": true, } If the destination inode does not exist, libpod/runc will create the inode. This can cause programs like podman diff to see the image as having changed, when actually it has not. This patch ignores changes in these inodes. Signed-off-by: Daniel J Walsh <dwalsh@redhat.com> Closes: #1508 Approved by: giuseppe
This commit is contained in:
parent
6191ffb6c5
commit
fbd1392a46
|
@ -111,8 +111,8 @@ class TestContainers(PodmanTestCase):
|
|||
list(actual.keys())))
|
||||
|
||||
# TODO: brittle, depends on knowing history of ctnr
|
||||
self.assertGreaterEqual(len(actual['changed']), 2)
|
||||
self.assertGreaterEqual(len(actual['added']), 2)
|
||||
self.assertGreaterEqual(len(actual['changed']), 0)
|
||||
self.assertGreaterEqual(len(actual['added']), 0)
|
||||
self.assertEqual(len(actual['deleted']), 0)
|
||||
|
||||
def test_kill(self):
|
||||
|
|
|
@ -6,6 +6,18 @@ import (
|
|||
"github.com/pkg/errors"
|
||||
)
|
||||
|
||||
var containerMounts = map[string]bool{
|
||||
"/dev": true,
|
||||
"/etc/hostname": true,
|
||||
"/etc/hosts": true,
|
||||
"/etc/resolv.conf": true,
|
||||
"/proc": true,
|
||||
"/run": true,
|
||||
"/run/.containerenv": true,
|
||||
"/run/secrets": true,
|
||||
"/sys": true,
|
||||
}
|
||||
|
||||
// GetDiff returns the differences between the two images, layers, or containers
|
||||
func (r *Runtime) GetDiff(from, to string) ([]archive.Change, error) {
|
||||
toLayer, err := r.getLayerID(to)
|
||||
|
@ -19,7 +31,17 @@ func (r *Runtime) GetDiff(from, to string) ([]archive.Change, error) {
|
|||
return nil, err
|
||||
}
|
||||
}
|
||||
return r.store.Changes(fromLayer, toLayer)
|
||||
var rchanges []archive.Change
|
||||
changes, err := r.store.Changes(fromLayer, toLayer)
|
||||
if err == nil {
|
||||
for _, c := range changes {
|
||||
if containerMounts[c.Path] {
|
||||
continue
|
||||
}
|
||||
rchanges = append(rchanges, c)
|
||||
}
|
||||
}
|
||||
return rchanges, err
|
||||
}
|
||||
|
||||
// GetLayerID gets a full layer id given a full or partial id
|
||||
|
|
Loading…
Reference in a new issue