mirror of https://github.com/docker/cli.git
bump docker to f76d6a078d881f410c00e8d900dcdfc2e026c841
Signed-off-by: Olli Janatuinen <olli.janatuinen@gmail.com>
This commit is contained in:
parent
4eab3cd19a
commit
0ac5c15fd4
|
@ -13,7 +13,7 @@ github.com/cpuguy83/go-md2man v1.0.8
|
||||||
github.com/davecgh/go-spew 346938d642f2ec3594ed81d874461961cd0faa76 # v1.1.0
|
github.com/davecgh/go-spew 346938d642f2ec3594ed81d874461961cd0faa76 # v1.1.0
|
||||||
github.com/dgrijalva/jwt-go a2c85815a77d0f951e33ba4db5ae93629a1530af
|
github.com/dgrijalva/jwt-go a2c85815a77d0f951e33ba4db5ae93629a1530af
|
||||||
github.com/docker/distribution 83389a148052d74ac602f5f1d62f86ff2f3c4aa5
|
github.com/docker/distribution 83389a148052d74ac602f5f1d62f86ff2f3c4aa5
|
||||||
github.com/docker/docker 6e3113f700dea1bf2785d94731b4b5a1e602d9ab
|
github.com/docker/docker f76d6a078d881f410c00e8d900dcdfc2e026c841
|
||||||
github.com/docker/compose-on-kubernetes a6086e2369e39c2058a003a7eb42e567ecfd1f03 # v0.4.17
|
github.com/docker/compose-on-kubernetes a6086e2369e39c2058a003a7eb42e567ecfd1f03 # v0.4.17
|
||||||
github.com/docker/docker-credential-helpers 5241b46610f2491efdf9d1c85f1ddf5b02f6d962
|
github.com/docker/docker-credential-helpers 5241b46610f2491efdf9d1c85f1ddf5b02f6d962
|
||||||
# the docker/go package contains a customized version of canonical/json
|
# the docker/go package contains a customized version of canonical/json
|
||||||
|
|
|
@ -127,6 +127,7 @@ type ResourceRequirements struct {
|
||||||
type Placement struct {
|
type Placement struct {
|
||||||
Constraints []string `json:",omitempty"`
|
Constraints []string `json:",omitempty"`
|
||||||
Preferences []PlacementPreference `json:",omitempty"`
|
Preferences []PlacementPreference `json:",omitempty"`
|
||||||
|
MaxReplicas uint64 `json:",omitempty"`
|
||||||
|
|
||||||
// Platforms stores all the platforms that the image can run on.
|
// Platforms stores all the platforms that the image can run on.
|
||||||
// This field is used in the platform filter for scheduling. If empty,
|
// This field is used in the platform filter for scheduling. If empty,
|
||||||
|
|
|
@ -19,10 +19,10 @@ func (cli *Client) ContainerInspect(ctx context.Context, containerID string) (ty
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return types.ContainerJSON{}, wrapResponseError(err, serverResp, "container", containerID)
|
return types.ContainerJSON{}, wrapResponseError(err, serverResp, "container", containerID)
|
||||||
}
|
}
|
||||||
|
defer ensureReaderClosed(serverResp)
|
||||||
|
|
||||||
var response types.ContainerJSON
|
var response types.ContainerJSON
|
||||||
err = json.NewDecoder(serverResp.body).Decode(&response)
|
err = json.NewDecoder(serverResp.body).Decode(&response)
|
||||||
ensureReaderClosed(serverResp)
|
|
||||||
return response, err
|
return response, err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -2,12 +2,46 @@ package mount // import "github.com/docker/docker/pkg/mount"
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"sort"
|
"sort"
|
||||||
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
"syscall"
|
|
||||||
|
|
||||||
"github.com/sirupsen/logrus"
|
"github.com/sirupsen/logrus"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
// mountError records an error from mount or unmount operation
|
||||||
|
type mountError struct {
|
||||||
|
op string
|
||||||
|
source, target string
|
||||||
|
flags uintptr
|
||||||
|
data string
|
||||||
|
err error
|
||||||
|
}
|
||||||
|
|
||||||
|
func (e *mountError) Error() string {
|
||||||
|
out := e.op + " "
|
||||||
|
|
||||||
|
if e.source != "" {
|
||||||
|
out += e.source + ":" + e.target
|
||||||
|
} else {
|
||||||
|
out += e.target
|
||||||
|
}
|
||||||
|
|
||||||
|
if e.flags != uintptr(0) {
|
||||||
|
out += ", flags: 0x" + strconv.FormatUint(uint64(e.flags), 16)
|
||||||
|
}
|
||||||
|
if e.data != "" {
|
||||||
|
out += ", data: " + e.data
|
||||||
|
}
|
||||||
|
|
||||||
|
out += ": " + e.err.Error()
|
||||||
|
return out
|
||||||
|
}
|
||||||
|
|
||||||
|
// Cause returns the underlying cause of the error
|
||||||
|
func (e *mountError) Cause() error {
|
||||||
|
return e.err
|
||||||
|
}
|
||||||
|
|
||||||
// FilterFunc is a type defining a callback function
|
// FilterFunc is a type defining a callback function
|
||||||
// to filter out unwanted entries. It takes a pointer
|
// to filter out unwanted entries. It takes a pointer
|
||||||
// to an Info struct (not fully populated, currently
|
// to an Info struct (not fully populated, currently
|
||||||
|
@ -89,12 +123,7 @@ func ForceMount(device, target, mType, options string) error {
|
||||||
// Unmount lazily unmounts a filesystem on supported platforms, otherwise
|
// Unmount lazily unmounts a filesystem on supported platforms, otherwise
|
||||||
// does a normal unmount.
|
// does a normal unmount.
|
||||||
func Unmount(target string) error {
|
func Unmount(target string) error {
|
||||||
err := unmount(target, mntDetach)
|
return unmount(target, mntDetach)
|
||||||
if err == syscall.EINVAL {
|
|
||||||
// ignore "not mounted" error
|
|
||||||
err = nil
|
|
||||||
}
|
|
||||||
return err
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// RecursiveUnmount unmounts the target and all mounts underneath, starting with
|
// RecursiveUnmount unmounts the target and all mounts underneath, starting with
|
||||||
|
@ -114,25 +143,14 @@ func RecursiveUnmount(target string) error {
|
||||||
logrus.Debugf("Trying to unmount %s", m.Mountpoint)
|
logrus.Debugf("Trying to unmount %s", m.Mountpoint)
|
||||||
err = unmount(m.Mountpoint, mntDetach)
|
err = unmount(m.Mountpoint, mntDetach)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
// If the error is EINVAL either this whole package is wrong (invalid flags passed to unmount(2)) or this is
|
if i == len(mounts)-1 { // last mount
|
||||||
// not a mountpoint (which is ok in this case).
|
|
||||||
// Meanwhile calling `Mounted()` is very expensive.
|
|
||||||
//
|
|
||||||
// We've purposefully used `syscall.EINVAL` here instead of `unix.EINVAL` to avoid platform branching
|
|
||||||
// Since `EINVAL` is defined for both Windows and Linux in the `syscall` package (and other platforms),
|
|
||||||
// this is nicer than defining a custom value that we can refer to in each platform file.
|
|
||||||
if err == syscall.EINVAL {
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
if i == len(mounts)-1 {
|
|
||||||
if mounted, e := Mounted(m.Mountpoint); e != nil || mounted {
|
if mounted, e := Mounted(m.Mountpoint); e != nil || mounted {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
continue
|
} else {
|
||||||
|
// This is some submount, we can ignore this error for now, the final unmount will fail if this is a real problem
|
||||||
|
logrus.WithError(err).Warnf("Failed to unmount submount %s", m.Mountpoint)
|
||||||
}
|
}
|
||||||
// This is some submount, we can ignore this error for now, the final unmount will fail if this is a real problem
|
|
||||||
logrus.WithError(err).Warnf("Failed to unmount submount %s", m.Mountpoint)
|
|
||||||
continue
|
|
||||||
}
|
}
|
||||||
|
|
||||||
logrus.Debugf("Unmounted %s", m.Mountpoint)
|
logrus.Debugf("Unmounted %s", m.Mountpoint)
|
||||||
|
|
|
@ -11,11 +11,9 @@ package mount // import "github.com/docker/docker/pkg/mount"
|
||||||
import "C"
|
import "C"
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
|
||||||
"strings"
|
"strings"
|
||||||
|
"syscall"
|
||||||
"unsafe"
|
"unsafe"
|
||||||
|
|
||||||
"golang.org/x/sys/unix"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
func allocateIOVecs(options []string) []C.struct_iovec {
|
func allocateIOVecs(options []string) []C.struct_iovec {
|
||||||
|
@ -49,12 +47,13 @@ func mount(device, target, mType string, flag uintptr, data string) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
if errno := C.nmount(&rawOptions[0], C.uint(len(options)), C.int(flag)); errno != 0 {
|
if errno := C.nmount(&rawOptions[0], C.uint(len(options)), C.int(flag)); errno != 0 {
|
||||||
reason := C.GoString(C.strerror(*C.__error()))
|
return &mountError{
|
||||||
return fmt.Errorf("Failed to call nmount: %s", reason)
|
op: "mount",
|
||||||
|
source: device,
|
||||||
|
target: target,
|
||||||
|
flags: flag,
|
||||||
|
err: syscall.Errno(errno),
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func unmount(target string, flag int) error {
|
|
||||||
return unix.Unmount(target, flag)
|
|
||||||
}
|
|
||||||
|
|
|
@ -33,25 +33,41 @@ func mount(device, target, mType string, flags uintptr, data string) error {
|
||||||
// Initial call applying all non-propagation flags for mount
|
// Initial call applying all non-propagation flags for mount
|
||||||
// or remount with changed data
|
// or remount with changed data
|
||||||
if err := unix.Mount(device, target, mType, oflags, data); err != nil {
|
if err := unix.Mount(device, target, mType, oflags, data); err != nil {
|
||||||
return err
|
return &mountError{
|
||||||
|
op: "mount",
|
||||||
|
source: device,
|
||||||
|
target: target,
|
||||||
|
flags: oflags,
|
||||||
|
data: data,
|
||||||
|
err: err,
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if flags&ptypes != 0 {
|
if flags&ptypes != 0 {
|
||||||
// Change the propagation type.
|
// Change the propagation type.
|
||||||
if err := unix.Mount("", target, "", flags&pflags, ""); err != nil {
|
if err := unix.Mount("", target, "", flags&pflags, ""); err != nil {
|
||||||
return err
|
return &mountError{
|
||||||
|
op: "remount",
|
||||||
|
target: target,
|
||||||
|
flags: flags & pflags,
|
||||||
|
err: err,
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if oflags&broflags == broflags {
|
if oflags&broflags == broflags {
|
||||||
// Remount the bind to apply read only.
|
// Remount the bind to apply read only.
|
||||||
return unix.Mount("", target, "", oflags|unix.MS_REMOUNT, "")
|
if err := unix.Mount("", target, "", oflags|unix.MS_REMOUNT, ""); err != nil {
|
||||||
|
return &mountError{
|
||||||
|
op: "remount-ro",
|
||||||
|
target: target,
|
||||||
|
flags: oflags | unix.MS_REMOUNT,
|
||||||
|
err: err,
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func unmount(target string, flag int) error {
|
|
||||||
return unix.Unmount(target, flag)
|
|
||||||
}
|
|
||||||
|
|
|
@ -5,7 +5,3 @@ package mount // import "github.com/docker/docker/pkg/mount"
|
||||||
func mount(device, target, mType string, flag uintptr, data string) error {
|
func mount(device, target, mType string, flag uintptr, data string) error {
|
||||||
panic("Not implemented")
|
panic("Not implemented")
|
||||||
}
|
}
|
||||||
|
|
||||||
func unmount(target string, flag int) error {
|
|
||||||
panic("Not implemented")
|
|
||||||
}
|
|
||||||
|
|
|
@ -0,0 +1,22 @@
|
||||||
|
// +build !windows
|
||||||
|
|
||||||
|
package mount // import "github.com/docker/docker/pkg/mount"
|
||||||
|
|
||||||
|
import "golang.org/x/sys/unix"
|
||||||
|
|
||||||
|
func unmount(target string, flags int) error {
|
||||||
|
err := unix.Unmount(target, flags)
|
||||||
|
if err == nil || err == unix.EINVAL {
|
||||||
|
// Ignore "not mounted" error here. Note the same error
|
||||||
|
// can be returned if flags are invalid, so this code
|
||||||
|
// assumes that the flags value is always correct.
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
return &mountError{
|
||||||
|
op: "umount",
|
||||||
|
target: target,
|
||||||
|
flags: uintptr(flags),
|
||||||
|
err: err,
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,7 @@
|
||||||
|
// +build windows
|
||||||
|
|
||||||
|
package mount // import "github.com/docker/docker/pkg/mount"
|
||||||
|
|
||||||
|
func unmount(target string, flag int) error {
|
||||||
|
panic("Not implemented")
|
||||||
|
}
|
|
@ -3,6 +3,7 @@
|
||||||
package system // import "github.com/docker/docker/pkg/system"
|
package system // import "github.com/docker/docker/pkg/system"
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"os"
|
||||||
"syscall"
|
"syscall"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -13,7 +14,7 @@ import (
|
||||||
func Lstat(path string) (*StatT, error) {
|
func Lstat(path string) (*StatT, error) {
|
||||||
s := &syscall.Stat_t{}
|
s := &syscall.Stat_t{}
|
||||||
if err := syscall.Lstat(path, s); err != nil {
|
if err := syscall.Lstat(path, s); err != nil {
|
||||||
return nil, err
|
return nil, &os.PathError{Op: "Lstat", Path: path, Err: err}
|
||||||
}
|
}
|
||||||
return fromStatT(s)
|
return fromStatT(s)
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,6 +3,7 @@
|
||||||
package system // import "github.com/docker/docker/pkg/system"
|
package system // import "github.com/docker/docker/pkg/system"
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"os"
|
||||||
"syscall"
|
"syscall"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@ -59,7 +60,7 @@ func (s StatT) IsDir() bool {
|
||||||
func Stat(path string) (*StatT, error) {
|
func Stat(path string) (*StatT, error) {
|
||||||
s := &syscall.Stat_t{}
|
s := &syscall.Stat_t{}
|
||||||
if err := syscall.Stat(path, s); err != nil {
|
if err := syscall.Stat(path, s); err != nil {
|
||||||
return nil, err
|
return nil, &os.PathError{Op: "Stat", Path: path, Err: err}
|
||||||
}
|
}
|
||||||
return fromStatT(s)
|
return fromStatT(s)
|
||||||
}
|
}
|
||||||
|
|
|
@ -145,7 +145,7 @@ func trustedLocation(req *http.Request) bool {
|
||||||
// addRequiredHeadersToRedirectedRequests adds the necessary redirection headers
|
// addRequiredHeadersToRedirectedRequests adds the necessary redirection headers
|
||||||
// for redirected requests
|
// for redirected requests
|
||||||
func addRequiredHeadersToRedirectedRequests(req *http.Request, via []*http.Request) error {
|
func addRequiredHeadersToRedirectedRequests(req *http.Request, via []*http.Request) error {
|
||||||
if via != nil && via[0] != nil {
|
if len(via) != 0 && via[0] != nil {
|
||||||
if trustedLocation(req) && trustedLocation(via[0]) {
|
if trustedLocation(req) && trustedLocation(via[0]) {
|
||||||
req.Header = via[0].Header
|
req.Header = via[0].Header
|
||||||
return nil
|
return nil
|
||||||
|
|
|
@ -118,9 +118,9 @@ github.com/googleapis/gax-go v2.0.0
|
||||||
google.golang.org/genproto 694d95ba50e67b2e363f3483057db5d4910c18f9
|
google.golang.org/genproto 694d95ba50e67b2e363f3483057db5d4910c18f9
|
||||||
|
|
||||||
# containerd
|
# containerd
|
||||||
github.com/containerd/containerd 9b32062dc1f5a7c2564315c269b5059754f12b9d # v1.2.1
|
github.com/containerd/containerd aa5e000c963756778ab3ebd1a12c67449c503a34 # v1.2.1+
|
||||||
github.com/containerd/fifo 3d5202aec260678c48179c56f40e6f38a095738c
|
github.com/containerd/fifo 3d5202aec260678c48179c56f40e6f38a095738c
|
||||||
github.com/containerd/continuity bd77b46c8352f74eb12c85bdc01f4b90f69d66b4
|
github.com/containerd/continuity 004b46473808b3e7a4a3049c20e4376c91eb966d
|
||||||
github.com/containerd/cgroups 5e610833b72089b37d0e615de9a92dfc043757c2
|
github.com/containerd/cgroups 5e610833b72089b37d0e615de9a92dfc043757c2
|
||||||
github.com/containerd/console c12b1e7919c14469339a5d38f2f8ed9b64a9de23
|
github.com/containerd/console c12b1e7919c14469339a5d38f2f8ed9b64a9de23
|
||||||
github.com/containerd/cri 0ca1e3c2b73b5c38e72f29bb76338d0078b23d6c # release/1.2 branch
|
github.com/containerd/cri 0ca1e3c2b73b5c38e72f29bb76338d0078b23d6c # release/1.2 branch
|
||||||
|
|
Loading…
Reference in New Issue