archive_tarcopyoptions_unix.go 736 B

12345678910111213141516171819202122232425262728
  1. //go:build !windows
  2. // +build !windows
  3. package daemon // import "github.com/docker/docker/daemon"
  4. import (
  5. "github.com/docker/docker/container"
  6. "github.com/docker/docker/pkg/archive"
  7. "github.com/docker/docker/pkg/idtools"
  8. )
  9. func (daemon *Daemon) tarCopyOptions(container *container.Container, noOverwriteDirNonDir bool) (*archive.TarOptions, error) {
  10. if container.Config.User == "" {
  11. return daemon.defaultTarCopyOptions(noOverwriteDirNonDir), nil
  12. }
  13. user, err := idtools.LookupUser(container.Config.User)
  14. if err != nil {
  15. return nil, err
  16. }
  17. identity := idtools.Identity{UID: user.Uid, GID: user.Gid}
  18. return &archive.TarOptions{
  19. NoOverwriteDirNonDir: noOverwriteDirNonDir,
  20. ChownOpts: &identity,
  21. }, nil
  22. }