diff --git a/CHANGELOG.md b/CHANGELOG.md index 9cb88fce2a..85434f1258 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,7 +5,7 @@ information on the list of deprecated flags and APIs please have a look at https://docs.docker.com/engine/deprecated/ where target removal dates can also be found. -## 1.12.2-rc1 (2016-09-27) +## 1.12.2-rc2 (2016-10-03) **IMPORTANT**: Docker 1.12 ships with an updated systemd unit file for rpm based installs (which includes RHEL, Fedora, CentOS, and Oracle Linux 7). When diff --git a/api/client/image/build.go b/api/client/image/build.go index 6080aec83b..41da01dab4 100644 --- a/api/client/image/build.go +++ b/api/client/image/build.go @@ -37,7 +37,7 @@ type buildOptions struct { context string dockerfileName string tags opts.ListOpts - labels []string + labels opts.ListOpts buildArgs opts.ListOpts ulimits *runconfigopts.UlimitOpt memory string @@ -64,6 +64,7 @@ func NewBuildCommand(dockerCli *client.DockerCli) *cobra.Command { tags: opts.NewListOpts(validateTag), buildArgs: opts.NewListOpts(runconfigopts.ValidateEnv), ulimits: runconfigopts.NewUlimitOpt(&ulimits), + labels: opts.NewListOpts(runconfigopts.ValidateEnv), } cmd := &cobra.Command{ @@ -92,7 +93,7 @@ func NewBuildCommand(dockerCli *client.DockerCli) *cobra.Command { flags.StringVar(&options.cpuSetMems, "cpuset-mems", "", "MEMs in which to allow execution (0-3, 0,1)") flags.StringVar(&options.cgroupParent, "cgroup-parent", "", "Optional parent cgroup for the container") flags.StringVar(&options.isolation, "isolation", "", "Container isolation technology") - flags.StringSliceVar(&options.labels, "label", []string{}, "Set metadata for an image") + flags.Var(&options.labels, "label", "Set metadata for an image") flags.BoolVar(&options.noCache, "no-cache", false, "Do not use cache when building the image") flags.BoolVar(&options.rm, "rm", true, "Remove intermediate containers after a successful build") flags.BoolVar(&options.forceRm, "force-rm", false, "Always remove intermediate containers") @@ -264,7 +265,7 @@ func runBuild(dockerCli *client.DockerCli, options buildOptions) error { Ulimits: options.ulimits.GetList(), BuildArgs: runconfigopts.ConvertKVStringsToMap(options.buildArgs.GetAll()), AuthConfigs: dockerCli.RetrieveAuthConfigs(), - Labels: runconfigopts.ConvertKVStringsToMap(options.labels), + Labels: runconfigopts.ConvertKVStringsToMap(options.labels.GetAll()), } response, err := dockerCli.Client().ImageBuild(ctx, body, buildOptions) diff --git a/api/server/router/network/network_routes.go b/api/server/router/network/network_routes.go index 7a50e6c31b..2688376dff 100644 --- a/api/server/router/network/network_routes.go +++ b/api/server/router/network/network_routes.go @@ -161,7 +161,11 @@ func (n *networkRouter) deleteNetwork(ctx context.Context, w http.ResponseWriter return err } if _, err := n.clusterProvider.GetNetwork(vars["id"]); err == nil { - return n.clusterProvider.RemoveNetwork(vars["id"]) + if err = n.clusterProvider.RemoveNetwork(vars["id"]); err != nil { + return err + } + w.WriteHeader(http.StatusNoContent) + return nil } if err := n.backend.DeleteNetwork(vars["id"]); err != nil { return err diff --git a/contrib/check-config.sh b/contrib/check-config.sh index 5fbfa2eb88..f0bad5d3d9 100755 --- a/contrib/check-config.sh +++ b/contrib/check-config.sh @@ -185,7 +185,7 @@ flags=( KEYS VETH BRIDGE BRIDGE_NETFILTER NF_NAT_IPV4 IP_NF_FILTER IP_NF_TARGET_MASQUERADE - NETFILTER_XT_MATCH_{ADDRTYPE,CONNTRACK} + NETFILTER_XT_MATCH_{ADDRTYPE,CONNTRACK,IPVS} NF_NAT NF_NAT_NEEDED # required for bind-mounting /dev/mqueue into containers @@ -233,6 +233,8 @@ flags=( NET_CLS_CGROUP $netprio CFS_BANDWIDTH FAIR_GROUP_SCHED RT_GROUP_SCHED IP_VS + IP_VS_NFCT + IP_VS_RR ) check_flags "${flags[@]}" diff --git a/docs/reference/api/docker_remote_api_v1.24.md b/docs/reference/api/docker_remote_api_v1.24.md index c8f651c961..3625492e6d 100644 --- a/docs/reference/api/docker_remote_api_v1.24.md +++ b/docs/reference/api/docker_remote_api_v1.24.md @@ -4668,7 +4668,9 @@ Stop and remove the service `id` **Example response**: - HTTP/1.1 200 No Content + HTTP/1.1 200 OK + Content-Length: 0 + Content-Type: text/plain; charset=utf-8 **Status codes**: diff --git a/docs/reference/api/docker_remote_api_v1.25.md b/docs/reference/api/docker_remote_api_v1.25.md index 50ec5dd405..397b587a1b 100644 --- a/docs/reference/api/docker_remote_api_v1.25.md +++ b/docs/reference/api/docker_remote_api_v1.25.md @@ -4704,7 +4704,9 @@ Stop and remove the service `id` **Example response**: - HTTP/1.1 200 No Content + HTTP/1.1 200 OK + Content-Length: 0 + Content-Type: text/plain; charset=utf-8 **Status codes**: diff --git a/hack/make/cross b/hack/make/cross index a96bfd2c20..a9118393f5 100644 --- a/hack/make/cross +++ b/hack/make/cross @@ -10,13 +10,14 @@ daemonSupporting=( # if we have our linux/amd64 version compiled, let's symlink it in if [ -x "$DEST/../binary-daemon/dockerd-$VERSION" ]; then - mkdir -p "$DEST/linux/amd64" + arch=$(go env GOHOSTARCH) + mkdir -p "$DEST/linux/${arch}" ( - cd "$DEST/linux/amd64" + cd "$DEST/linux/${arch}" ln -s ../../../binary-daemon/* ./ ln -s ../../../binary-client/* ./ ) - echo "Created symlinks:" "$DEST/linux/amd64/"* + echo "Created symlinks:" "$DEST/linux/${arch}/"* fi for platform in $DOCKER_CROSSPLATFORMS; do diff --git a/hack/make/tgz b/hack/make/tgz index b1abfef92f..0c1a4d5429 100644 --- a/hack/make/tgz +++ b/hack/make/tgz @@ -4,7 +4,8 @@ CROSS="$DEST/../cross" set -e -if [ ! -d "$CROSS/linux/amd64" ]; then +arch=$(go env GOHOSTARCH) +if [ ! -d "$CROSS/linux/${arch}" ]; then echo >&2 'error: binary and cross must be run before tgz' false fi diff --git a/hack/release.sh b/hack/release.sh index 9ed3aeea4a..2eddf498d2 100755 --- a/hack/release.sh +++ b/hack/release.sh @@ -258,7 +258,7 @@ release_build() { # Upload binaries and tgz files to S3 release_binaries() { - [ -e "bundles/$VERSION/cross/linux/amd64/docker-$VERSION" ] || { + [ "$(find bundles/$VERSION -path "bundles/$VERSION/cross/*/*/docker-$VERSION")" != "" ] || { echo >&2 './hack/make.sh must be run before release_binaries' exit 1 } diff --git a/libcontainerd/client_linux.go b/libcontainerd/client_linux.go index b9e7415f38..ef504cad59 100644 --- a/libcontainerd/client_linux.go +++ b/libcontainerd/client_linux.go @@ -101,6 +101,7 @@ func (clnt *client) AddProcess(ctx context.Context, containerID, processFriendly clnt.unlock(containerID) if err := clnt.backend.AttachStreams(processFriendlyName, *iopipe); err != nil { + clnt.lock(containerID) return err } clnt.lock(containerID) diff --git a/libcontainerd/types_linux.go b/libcontainerd/types_linux.go index 4f714a2329..a0bdb67296 100644 --- a/libcontainerd/types_linux.go +++ b/libcontainerd/types_linux.go @@ -27,9 +27,9 @@ type Process struct { Capabilities []string `json:"capabilities,omitempty"` // Rlimits specifies rlimit options to apply to the process. Rlimits []specs.Rlimit `json:"rlimits,omitempty"` - // ApparmorProfile specified the apparmor profile for the container. + // ApparmorProfile specifies the apparmor profile for the container. ApparmorProfile *string `json:"apparmorProfile,omitempty"` - // SelinuxProcessLabel specifies the selinux context that the container process is run as. + // SelinuxLabel specifies the selinux context that the container process is run as. SelinuxLabel *string `json:"selinuxLabel,omitempty"` }