123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 |
- package daemon // import "github.com/docker/docker/daemon"
- import (
- "io"
- "os"
- "github.com/docker/docker/api/types"
- "github.com/docker/docker/errdefs"
- )
- // ContainerCopy performs a deprecated operation of archiving the resource at
- // the specified path in the container identified by the given name.
- func (daemon *Daemon) ContainerCopy(name string, res string) (io.ReadCloser, error) {
- ctr, err := daemon.GetContainer(name)
- if err != nil {
- return nil, err
- }
- data, err := daemon.containerCopy(ctr, res)
- if err == nil {
- return data, nil
- }
- if os.IsNotExist(err) {
- return nil, containerFileNotFound{res, name}
- }
- return nil, errdefs.System(err)
- }
- // ContainerStatPath stats the filesystem resource at the specified path in the
- // container identified by the given name.
- func (daemon *Daemon) ContainerStatPath(name string, path string) (stat *types.ContainerPathStat, err error) {
- ctr, err := daemon.GetContainer(name)
- if err != nil {
- return nil, err
- }
- stat, err = daemon.containerStatPath(ctr, path)
- if err == nil {
- return stat, nil
- }
- if os.IsNotExist(err) {
- return nil, containerFileNotFound{path, name}
- }
- return nil, errdefs.System(err)
- }
- // ContainerArchivePath creates an archive of the filesystem resource at the
- // specified path in the container identified by the given name. Returns a
- // tar archive of the resource and whether it was a directory or a single file.
- func (daemon *Daemon) ContainerArchivePath(name string, path string) (content io.ReadCloser, stat *types.ContainerPathStat, err error) {
- ctr, err := daemon.GetContainer(name)
- if err != nil {
- return nil, nil, err
- }
- content, stat, err = daemon.containerArchivePath(ctr, path)
- if err == nil {
- return content, stat, nil
- }
- if os.IsNotExist(err) {
- return nil, nil, containerFileNotFound{path, name}
- }
- return nil, nil, errdefs.System(err)
- }
- // ContainerExtractToDir extracts the given archive to the specified location
- // in the filesystem of the container identified by the given name. The given
- // path must be of a directory in the container. If it is not, the error will
- // be an errdefs.InvalidParameter. If noOverwriteDirNonDir is true then it will
- // be an error if unpacking the given content would cause an existing directory
- // to be replaced with a non-directory and vice versa.
- func (daemon *Daemon) ContainerExtractToDir(name, path string, copyUIDGID, noOverwriteDirNonDir bool, content io.Reader) error {
- ctr, err := daemon.GetContainer(name)
- if err != nil {
- return err
- }
- err = daemon.containerExtractToDir(ctr, path, copyUIDGID, noOverwriteDirNonDir, content)
- if err == nil {
- return nil
- }
- if os.IsNotExist(err) {
- return containerFileNotFound{path, name}
- }
- return errdefs.System(err)
- }
|