mirror of https://github.com/docker/docs.git
Fix ownership of non-existing parent dir
During "COPY" or other tar unpack operations, a target/destination parent dir might not exist and should be created with ownership of the root in the right context (including remapped root when user namespaces are enabled) Docker-DCO-1.1-Signed-off-by: Phil Estes <estesp@linux.vnet.ibm.com> (github: estesp)
This commit is contained in:
parent
c7d6f0c30c
commit
7a61b9ae42
|
@ -824,6 +824,26 @@ RUN [ $(ls -l /exists/exists_file | awk '{print $3":"$4}') = 'dockerio:dockerio'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (s *DockerSuite) TestBuildCopyToNewParentDirectory(c *check.C) {
|
||||||
|
testRequires(c, DaemonIsLinux) // Linux specific test
|
||||||
|
name := "testcopytonewdir"
|
||||||
|
ctx, err := fakeContext(`FROM busybox
|
||||||
|
COPY test_dir /new_dir
|
||||||
|
RUN [ $(ls -l / | grep new_dir | awk '{print $3":"$4}') = 'root:root' ]
|
||||||
|
RUN ls -l /new_dir`,
|
||||||
|
map[string]string{
|
||||||
|
"test_dir/test_file": "test file",
|
||||||
|
})
|
||||||
|
if err != nil {
|
||||||
|
c.Fatal(err)
|
||||||
|
}
|
||||||
|
defer ctx.Close()
|
||||||
|
|
||||||
|
if _, err := buildImageFromContext(name, ctx, true); err != nil {
|
||||||
|
c.Fatal(err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func (s *DockerSuite) TestBuildAddMultipleFilesToFile(c *check.C) {
|
func (s *DockerSuite) TestBuildAddMultipleFilesToFile(c *check.C) {
|
||||||
name := "testaddmultiplefilestofile"
|
name := "testaddmultiplefilestofile"
|
||||||
|
|
||||||
|
|
|
@ -660,7 +660,7 @@ loop:
|
||||||
parent := filepath.Dir(hdr.Name)
|
parent := filepath.Dir(hdr.Name)
|
||||||
parentPath := filepath.Join(dest, parent)
|
parentPath := filepath.Join(dest, parent)
|
||||||
if _, err := os.Lstat(parentPath); err != nil && os.IsNotExist(err) {
|
if _, err := os.Lstat(parentPath); err != nil && os.IsNotExist(err) {
|
||||||
err = system.MkdirAll(parentPath, 0777)
|
err = idtools.MkdirAllNewAs(parentPath, 0777, remappedRootUID, remappedRootGID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue