From 8ddc1eeedd641d68cf248e61dadab288ced9c3e0 Mon Sep 17 00:00:00 2001 From: Roberto Gandolfo Hashioka Date: Wed, 24 May 2017 08:33:49 -0700 Subject: [PATCH 1/9] Added the metrics plugin to the RPM/DEB packages - centos - fedora - ubuntu - debian Signed-off-by: Roberto Gandolfo Hashioka (cherry picked from commit ceac22bf2240df483b1d3bd3a19ac681e665f910) Signed-off-by: Eli Uriegas --- components/packaging/Makefile | 8 ++- .../packaging/common/load-telemetry-plugin | 66 +++++++++++++++++++ components/packaging/deb/Makefile | 31 +++++++++ .../deb/common/docker-ce.docker.init | 4 +- .../deb/common/docker-ce.docker.upstart | 2 + components/packaging/deb/common/rules | 6 ++ .../packaging/deb/systemd/docker.service | 1 + components/packaging/rpm/Makefile | 26 ++++++-- .../packaging/rpm/centos-7/docker-ce.spec | 12 ++++ .../packaging/rpm/fedora-24/docker-ce.spec | 12 ++++ .../packaging/rpm/fedora-25/docker-ce.spec | 12 ++++ .../packaging/rpm/systemd/docker.service | 1 + 12 files changed, 173 insertions(+), 8 deletions(-) create mode 100755 components/packaging/common/load-telemetry-plugin diff --git a/components/packaging/Makefile b/components/packaging/Makefile index 53d643c167..a48ba86a99 100644 --- a/components/packaging/Makefile +++ b/components/packaging/Makefile @@ -2,6 +2,7 @@ SHELL:=/bin/bash ENGINE_DIR:=$(CURDIR)/../engine CLI_DIR:=$(CURDIR)/../cli VERSION=unknown +PLUGIN_VERSION=unknown DOCKER_GITCOMMIT:=abcdefg .PHONY: help clean rpm deb static @@ -17,17 +18,18 @@ clean: ## remove build artifacts rpm: DOCKER_BUILD_PKGS:=fedora-25 fedora-24 centos-7 rpm: ## build rpm packages for p in $(DOCKER_BUILD_PKGS); do \ - $(MAKE) -C $@ VERSION=$(VERSION) ENGINE_DIR=$(ENGINE_DIR) CLI_DIR=$(CLI_DIR) $${p}; \ + $(MAKE) -C $@ VERSION=$(VERSION) PLUGIN_VERSION=$(PLUGIN_VERSION) ENGINE_DIR=$(ENGINE_DIR) CLI_DIR=$(CLI_DIR) $${p}; \ done deb: DOCKER_BUILD_PKGS:=ubuntu-zesty ubuntu-yakkety ubuntu-xenial ubuntu-trusty debian-stretch debian-wheezy debian-jessie deb: ## build deb packages + $(MAKE) -C $@ metrics_plugin for p in $(DOCKER_BUILD_PKGS); do \ - $(MAKE) -C $@ VERSION=$(VERSION) ENGINE_DIR=$(ENGINE_DIR) CLI_DIR=$(CLI_DIR) $${p}; \ + $(MAKE) -C $@ VERSION=$(VERSION) PLUGIN_VERSION=$(PLUGIN_VERSION) ENGINE_DIR=$(ENGINE_DIR) CLI_DIR=$(CLI_DIR) $${p}; \ done static: DOCKER_BUILD_PKGS:=static-linux cross-mac cross-win cross-arm static: ## build static-compiled packages for p in $(DOCKER_BUILD_PKGS); do \ - $(MAKE) -C $@ VERSION=$(VERSION) ENGINE_DIR=$(ENGINE_DIR) CLI_DIR=$(CLI_DIR) $${p}; \ + $(MAKE) -C $@ VERSION=$(VERSION) PLUGIN_VERSION=$(PLUGIN_VERSION) ENGINE_DIR=$(ENGINE_DIR) CLI_DIR=$(CLI_DIR) $${p}; \ done diff --git a/components/packaging/common/load-telemetry-plugin b/components/packaging/common/load-telemetry-plugin new file mode 100755 index 0000000000..7264c20d27 --- /dev/null +++ b/components/packaging/common/load-telemetry-plugin @@ -0,0 +1,66 @@ +#!/usr/bin/env sh + +BASE=/var/lib/docker +TAR_DIR=$BASE/plugins/tar + +# make sure that the directory exists +mkdir -p $TAR_DIR + +# Create the engine UUID, if it doesn't exist +# This will be eventually handled by the docker engine +# ref. https://github.com/moby/moby/issues/33356 +if [ -f $BASE/engine_uuid ]; then + UUID=$(cat $BASE/engine_uuid) +fi +if [ -z ${UUID+x} ]; then + UUID=$(cat /proc/sys/kernel/random/uuid | tee $BASE/engine_uuid) +fi + +# make sure that docker is running +if ! printf "%s" "$DOCKER_OPTS" | grep -qE -e '-H|--host'; then + DOCKER_SOCKET=/var/run/docker.sock +else + DOCKER_SOCKET=$(printf "%s" "$DOCKER_OPTS" | grep -oP -e '(-H|--host)\W*unix://\K(\S+)' | sed 1q) +fi + +if [ -n "$DOCKER_SOCKET" ]; then + while ! [ -e "$DOCKER_SOCKET" ]; do + sleep 0.1 + done +fi + +# store the metrics plugin state +plugin_name=$(docker plugin ls | grep docker/telemetry | awk 'NR==1{print $2}') +plugin_metadata=$TAR_DIR/.plugin-metadata +if docker inspect $plugin_name > /dev/null 2>&1; then + plugin_state=$(docker plugin inspect $plugin_name | grep -o '"Enabled":.*' | sed 's/,/\\\}/g' | sed 's/ //g') + # remove previous plugin state + sed -i 's/,"Enabled":.*/\}/g' $plugin_metadata + # add new plugin state + sed -i "s/\}/,$plugin_state/g" $plugin_metadata +fi + +# find plugin_name based on the tarball +plugin_filename=$(ls $TAR_DIR/) +plugin_tag=$(echo $plugin_filename | cut -d"_" -f2-) +plugin_tag=${plugin_tag%.tgz} +plugin_name=docker/telemetry:$plugin_tag +# install/upgrade telemetry plugin in case it's not present (ignore stdout/stderror) +if ! docker inspect $plugin_name > /dev/null 2>&1; then + # remove old plugin versions + docker plugin rm -f `docker plugin ls | grep docker/telemetry | awk '{print $2}'` > /dev/null 2>&1 + # create new plugin (disabled by default) + cd $TAR_DIR/ && tar -zxf $plugin_filename -C /tmp + docker plugin create $plugin_name /tmp/plugin > /dev/null 2>&1 + rm -rf /tmp/plugin + # extract all the edition variables, including the engine uuid + uuid=$(cat /var/lib/docker/engine_uuid) + edition_version=$(cat $plugin_metadata | sed 's/{.*edition_version":"*\([0-9a-zA-Z.]*\)"*,*.*}/\1/') + edition_type=$(cat $plugin_metadata | sed 's/{.*edition_type":"*\([0-9a-zA-Z.]*\)"*,*.*}/\1/') + edition_name=$(cat $plugin_metadata | sed 's/{.*edition_name":"*\([0-9a-zA-Z.]*\)"*,*.*}/\1/') + docker plugin set $plugin_name edition_name=$edition_name edition_type=$edition_type edition_version=$edition_version anonymous_id=$uuid > /dev/null 2>&1 + # set the metrics plugin to its previous state + if grep 'true' $plugin_metadata > /dev/null 2>&1 ; then + docker plugin enable $plugin_name > /dev/null 2>&1 + fi +fi diff --git a/components/packaging/deb/Makefile b/components/packaging/deb/Makefile index 1b3cf664b7..bdc0dfd86c 100644 --- a/components/packaging/deb/Makefile +++ b/components/packaging/deb/Makefile @@ -1,10 +1,14 @@ SHELL:=/bin/bash ALPINE_IMG:=$(shell $(CURDIR)/../detect_alpine_image) ARCH:=$(shell uname -m) +KERNEL:=$(shell docker version --format '{{.Server.Os}}') ENGINE_DIR:=$(CURDIR)/../../engine CLI_DIR:=$(CURDIR)/../../cli +COMMON_DIR:=$(CURDIR)/../common +PLUGIN_DIR:=$(CURDIR)/plugin GITCOMMIT?=$(shell cd $(ENGINE_DIR) && git rev-parse --short HEAD) VERSION?=$(shell cat $(ENGINE_DIR)/VERSION) +PLUGIN_VERSION?=1.0.0.$(KERNEL)-$(ARCH)-test DOCKER_EXPERIMENTAL:=0 CHOWN:=docker run --rm -v $(CURDIR):/v -w /v $(ALPINE_IMG) chown @@ -23,15 +27,24 @@ ubuntu: ubuntu-zesty ubuntu-yakkety ubuntu-xenial ubuntu-trusty ## build all ubu debian: debian-stretch debian-wheezy debian-jessie ## build all debian deb packages +metrics_plugin: ## pull telemetry plugin tarball + mkdir -p $(PLUGIN_DIR) + docker create --name tmp docker/telemetry-tgz:$(PLUGIN_VERSION) + docker export tmp | tar -x -C $(PLUGIN_DIR) + docker rm -f tmp + ubuntu-xenial: ## build ubuntu xenial deb packages docker build -t debbuild-$@/$(ARCH) -f $(CURDIR)/$@/Dockerfile.$(ARCH) . docker run --rm -i \ -e VERSION=$(VERSION) \ + -e PLUGIN_VERSION=$(PLUGIN_VERSION) \ -e DOCKER_GITCOMMIT=$(GITCOMMIT) \ -v $(CURDIR)/debbuild/$@:/build \ -v $(ENGINE_DIR):/engine \ + -v $(PLUGIN_DIR):/plugin \ -v $(CLI_DIR):/cli \ -v $(CURDIR)/systemd:/root/build-deb/systemd \ + -v $(COMMON_DIR):/root/build-deb/common \ debbuild-$@/$(ARCH) $(CHOWN) -R $(shell id -u):$(shell id -g) debbuild/$@ @@ -39,11 +52,14 @@ ubuntu-trusty: ## build ubuntu trusty deb packages docker build -t debbuild-$@/$(ARCH) -f $(CURDIR)/$@/Dockerfile.$(ARCH) . docker run --rm -i \ -e VERSION=$(VERSION) \ + -e PLUGIN_VERSION=$(PLUGIN_VERSION) \ -e DOCKER_GITCOMMIT=$(GITCOMMIT) \ -v $(CURDIR)/debbuild/$@:/build \ -v $(ENGINE_DIR):/engine \ + -v $(PLUGIN_DIR):/plugin \ -v $(CLI_DIR):/cli \ -v $(CURDIR)/systemd:/root/build-deb/systemd \ + -v $(COMMON_DIR):/root/build-deb/common \ debbuild-$@/$(ARCH) $(CHOWN) -R $(shell id -u):$(shell id -g) debbuild/$@ @@ -52,10 +68,13 @@ ubuntu-yakkety: ## build ubuntu yakkety deb packages docker run --rm -i \ -e VERSION=$(VERSION) \ -e DOCKER_GITCOMMIT=$(GITCOMMIT) \ + -e PLUGIN_VERSION=$(PLUGIN_VERSION) \ -v $(CURDIR)/debbuild/$@:/build \ -v $(ENGINE_DIR):/engine \ + -v $(PLUGIN_DIR):/plugin \ -v $(CLI_DIR):/cli \ -v $(CURDIR)/systemd:/root/build-deb/systemd \ + -v $(COMMON_DIR):/root/build-deb/common \ debbuild-$@/$(ARCH) $(CHOWN) -R $(shell id -u):$(shell id -g) debbuild/$@ @@ -64,10 +83,13 @@ ubuntu-zesty: ## build ubuntu zesty deb packages docker run --rm -i \ -e VERSION=$(VERSION) \ -e DOCKER_GITCOMMIT=$(GITCOMMIT) \ + -e PLUGIN_VERSION=$(PLUGIN_VERSION) \ -v $(CURDIR)/debbuild/$@:/build \ -v $(ENGINE_DIR):/engine \ + -v $(PLUGIN_DIR):/plugin \ -v $(CLI_DIR):/cli \ -v $(CURDIR)/systemd:/root/build-deb/systemd \ + -v $(COMMON_DIR):/root/build-deb/common \ debbuild-$@/$(ARCH) $(CHOWN) -R $(shell id -u):$(shell id -g) debbuild/$@ @@ -76,10 +98,13 @@ debian-jessie: ## build debian jessie deb packages docker run --rm -i \ -e VERSION=$(VERSION) \ -e DOCKER_GITCOMMIT=$(GITCOMMIT) \ + -e PLUGIN_VERSION=$(PLUGIN_VERSION) \ -v $(CURDIR)/debbuild/$@:/build \ -v $(ENGINE_DIR):/engine \ + -v $(PLUGIN_DIR):/plugin \ -v $(CLI_DIR):/cli \ -v $(CURDIR)/systemd:/root/build-deb/systemd \ + -v $(COMMON_DIR):/root/build-deb/common \ debbuild-$@/$(ARCH) $(CHOWN) -R $(shell id -u):$(shell id -g) debbuild/$@ @@ -88,10 +113,13 @@ debian-stretch: ## build debian stretch deb packages docker run --rm -i \ -e VERSION=$(VERSION) \ -e DOCKER_GITCOMMIT=$(GITCOMMIT) \ + -e PLUGIN_VERSION=$(PLUGIN_VERSION) \ -v $(CURDIR)/debbuild/$@:/build \ -v $(ENGINE_DIR):/engine \ + -v $(PLUGIN_DIR):/plugin \ -v $(CLI_DIR):/cli \ -v $(CURDIR)/systemd:/root/build-deb/systemd \ + -v $(COMMON_DIR):/root/build-deb/common \ debbuild-$@/$(ARCH) $(CHOWN) -R $(shell id -u):$(shell id -g) debbuild/$@ @@ -100,9 +128,12 @@ debian-wheezy: ## build debian wheezy deb packages docker run --rm -i \ -e VERSION=$(VERSION) \ -e DOCKER_GITCOMMIT=$(GITCOMMIT) \ + -e PLUGIN_VERSION=$(PLUGIN_VERSION) \ -v $(CURDIR)/debbuild/$@:/build \ -v $(ENGINE_DIR):/engine \ + -v $(PLUGIN_DIR):/plugin \ -v $(CLI_DIR):/cli \ -v $(CURDIR)/systemd:/root/build-deb/systemd \ + -v $(COMMON_DIR):/root/build-deb/common \ debbuild-$@/$(ARCH) $(CHOWN) -R $(shell id -u):$(shell id -g) debbuild/$@ diff --git a/components/packaging/deb/common/docker-ce.docker.init b/components/packaging/deb/common/docker-ce.docker.init index 9c8fa6be73..53657ff407 100644 --- a/components/packaging/deb/common/docker-ce.docker.init +++ b/components/packaging/deb/common/docker-ce.docker.init @@ -85,7 +85,7 @@ cgroupfs_mount() { case "$1" in start) check_init - + fail_unless_root cgroupfs_mount @@ -114,6 +114,8 @@ case "$1" in $DOCKER_OPTS \ >> "$DOCKER_LOGFILE" 2>&1 log_end_msg $? + # load metrics plugin (disabled by default) + /usr/bin/load-telemetry-plugin ;; stop) diff --git a/components/packaging/deb/common/docker-ce.docker.upstart b/components/packaging/deb/common/docker-ce.docker.upstart index d58f7d6ac8..de6a65fd42 100644 --- a/components/packaging/deb/common/docker-ce.docker.upstart +++ b/components/packaging/deb/common/docker-ce.docker.upstart @@ -69,4 +69,6 @@ post-start script done echo "$DOCKER_SOCKET is up" fi + # load metrics plugin (disabled by default) + /usr/bin/load-telemetry-plugin end script diff --git a/components/packaging/deb/common/rules b/components/packaging/deb/common/rules index e2962bb78e..4d5124e69e 100644 --- a/components/packaging/deb/common/rules +++ b/components/packaging/deb/common/rules @@ -11,6 +11,8 @@ override_dh_gencontrol: dh_gencontrol override_dh_auto_build: + # create metrics plugin metadata + printf '{"edition_type":"ce","edition_name":"%s","edition_version":"%s"}\n' "$(DISTRO)" "$(VERSION)" > /plugin/.plugin-metadata cd engine && ./hack/make.sh dynbinary cd /go/src/github.com/docker/cli && LDFLAGS='' make VERSION=$(VERSION) GITCOMMIT=$(DOCKER_GITCOMMIT) dynbinary manpages @@ -31,6 +33,10 @@ override_dh_auto_install: cp -aT /usr/local/bin/docker-runc debian/docker-ce/usr/bin/docker-runc cp -aT /usr/local/bin/docker-init debian/docker-ce/usr/bin/docker-init mkdir -p debian/docker-ce/usr/lib/docker + mkdir -p debian/docker-ce/var/lib/docker/plugins/tar + cp -aTL /plugin/telemetry_$(PLUGIN_VERSION).tgz debian/docker-ce/var/lib/docker/plugins/tar/telemetry_$(PLUGIN_VERSION).tgz + cp -aTL /plugin/.plugin-metadata debian/docker-ce/var/lib/docker/plugins/tar/.plugin-metadata + cp -aTL /root/build-deb/common/load-telemetry-plugin debian/docker-ce/usr/bin/load-telemetry-plugin override_dh_installinit: # use "docker" as our service name, not "docker-ce" diff --git a/components/packaging/deb/systemd/docker.service b/components/packaging/deb/systemd/docker.service index 517463172b..08494bebf1 100644 --- a/components/packaging/deb/systemd/docker.service +++ b/components/packaging/deb/systemd/docker.service @@ -12,6 +12,7 @@ Type=notify # for containers run by docker ExecStart=/usr/bin/dockerd -H fd:// ExecReload=/bin/kill -s HUP $MAINPID +ExecStartPost=/usr/bin/load-telemetry-plugin LimitNOFILE=1048576 # Having non-zero Limit*s causes performance problems due to accounting overhead # in the kernel. We recommend using cgroups to do container-local accounting. diff --git a/components/packaging/rpm/Makefile b/components/packaging/rpm/Makefile index 960ff38222..dd489f376f 100644 --- a/components/packaging/rpm/Makefile +++ b/components/packaging/rpm/Makefile @@ -1,9 +1,13 @@ ARCH=$(shell uname -m) ALPINE_IMG:=$(shell $(CURDIR)/../detect_alpine_image) +KERNEL:=$(shell docker version --format '{{.Server.Os}}') ENGINE_DIR:=$(CURDIR)/../../engine +COMMON_DIR:=$(CURDIR)/../common +PLUGIN_DIR:=$(CURDIR)/plugin CLI_DIR:=$(CURDIR)/../../cli GITCOMMIT=$(shell cd $(ENGINE_DIR) && git rev-parse --short HEAD) VERSION=$(shell cat $(ENGINE_DIR)/VERSION) +PLUGIN_VERSION?=1.0.0.$(KERNEL)-$(ARCH)-test DOCKER_EXPERIMENTAL=0 GEN_RPM_VER=$(shell ./gen-rpm-ver $(ENGINE_DIR) $(VERSION)) CHOWN=docker run --rm -i -v $(CURDIR):/v -w /v $(ALPINE_IMG) chown @@ -13,11 +17,13 @@ RPMBUILD=docker run --privileged --rm -i\ -v $(CURDIR)/rpmbuild/BUILDROOT:/root/rpmbuild/BUILDROOT \ -v $(CURDIR)/rpmbuild/RPMS:/root/rpmbuild/RPMS \ -v $(CURDIR)/rpmbuild/SRPMS:/root/rpmbuild/SRPMS \ - -v $(CURDIR)/systemd:/systemd + -v $(CURDIR)/systemd:/systemd \ + -v $(COMMON_DIR):/common RPMBUILD_FLAGS=-ba\ --define '_gitcommit $(word 3,$(GEN_RPM_VER))' \ --define '_release $(word 2,$(GEN_RPM_VER))' \ --define '_version $(word 1,$(GEN_RPM_VER))' \ + --define '_plugin_version $(PLUGIN_VERSION)' \ --define '_origversion $(VERSION)' \ --define '_experimental $(DOCKER_EXPERIMENTAL)' \ SPECS/docker-ce.spec @@ -37,17 +43,17 @@ fedora: fedora-25 fedora-24 ## build all fedora rpm packages centos: centos-7 ## build all centos rpm packages -fedora-25: rpmbuild/SOURCES/engine.tgz rpmbuild/SOURCES/cli.tgz ## build fedora-25 rpm packages +fedora-25: rpmbuild/SOURCES/engine.tgz rpmbuild/SOURCES/cli.tgz rpmbuild/SOURCES/telemetry.tgz ## build fedora-25 rpm packages docker build -t rpmbuild-$@/$(ARCH) -f $@/Dockerfile.$(ARCH) $@ $(RPMBUILD) rpmbuild-$@/$(ARCH) $(RPMBUILD_FLAGS) $(CHOWN) -R $(shell id -u):$(shell id -g) rpmbuild -fedora-24: rpmbuild/SOURCES/engine.tgz rpmbuild/SOURCES/cli.tgz ## build fedora-24 rpm packages +fedora-24: rpmbuild/SOURCES/engine.tgz rpmbuild/SOURCES/cli.tgz rpmbuild/SOURCES/telemetry.tgz ## build fedora-24 rpm packages docker build -t rpmbuild-$@/$(ARCH) -f $@/Dockerfile.$(ARCH) $@ $(RPMBUILD) rpmbuild-$@/$(ARCH) $(RPMBUILD_FLAGS) $(CHOWN) -R $(shell id -u):$(shell id -g) rpmbuild -centos-7: rpmbuild/SOURCES/engine.tgz rpmbuild/SOURCES/cli.tgz ## build centos-7 rpm packages +centos-7: rpmbuild/SOURCES/engine.tgz rpmbuild/SOURCES/cli.tgz rpmbuild/SOURCES/telemetry.tgz ## build centos-7 rpm packages docker build -t rpmbuild-$@/$(ARCH) -f $@/Dockerfile.$(ARCH) $@ $(RPMBUILD) rpmbuild-$@/$(ARCH) $(RPMBUILD_FLAGS) $(CHOWN) -R $(shell id -u):$(shell id -g) rpmbuild @@ -67,3 +73,15 @@ rpmbuild/SOURCES/engine.tgz: -v $(CURDIR)/rpmbuild/SOURCES:/v \ $(ALPINE_IMG) \ tar -C / -c -z -f /v/engine.tgz --exclude .git engine + +rpmbuild/SOURCES/telemetry.tgz: + mkdir -p rpmbuild/SOURCES + mkdir -p $(PLUGIN_DIR) + docker create --name tmp docker/telemetry-tgz:$(PLUGIN_VERSION) + docker export tmp | tar -x -C $(PLUGIN_DIR) + docker run --rm -i -w /plugin \ + -v $(PLUGIN_DIR):/plugin \ + -v $(CURDIR)/rpmbuild/SOURCES:/v \ + alpine \ + cp telemetry_$(PLUGIN_VERSION).tgz /v + docker rm -f tmp diff --git a/components/packaging/rpm/centos-7/docker-ce.spec b/components/packaging/rpm/centos-7/docker-ce.spec index 82445d3333..7c5e47bcea 100644 --- a/components/packaging/rpm/centos-7/docker-ce.spec +++ b/components/packaging/rpm/centos-7/docker-ce.spec @@ -6,6 +6,7 @@ Group: Tools/Docker License: ASL 2.0 Source0: engine.tgz Source1: cli.tgz +Source2: telemetry_%{_plugin_version}.tgz URL: https://www.docker.com Vendor: Docker Packager: Docker @@ -68,6 +69,8 @@ pushd engine TMP_GOPATH="/go" hack/dockerfile/install-binaries.sh runc-dynamic containerd-dynamic proxy-dynamic tini hack/make.sh dynbinary popd +mkdir -p plugin +printf '{"edition_type":"ce","edition_name":"%s","edition_version":"%s"}\n' "${DISTRO}" "%{_version}" > plugin/.plugin-metadata %check cli/build/docker -v @@ -138,6 +141,12 @@ for cli_file in LICENSE MAINTAINERS NOTICE README.md; do cp "cli/$cli_file" "build-docs/cli-$cli_file" done +# add telemetry plugin +install -d $RPM_BUILD_ROOT/var/lib/docker/plugins/tar +install -p -m 644 %{SOURCE2} $RPM_BUILD_ROOT/var/lib/docker/plugins/tar +install -p -m 644 plugin/.plugin-metadata $RPM_BUILD_ROOT/var/lib/docker/plugins/tar +install -p -m 755 /common/load-telemetry-plugin $RPM_BUILD_ROOT/%{_bindir}/load-telemetry-plugin + # list files owned by the package here %files %doc build-docs/engine-AUTHORS build-docs/engine-CHANGELOG.md build-docs/engine-CONTRIBUTING.md build-docs/engine-LICENSE build-docs/engine-MAINTAINERS build-docs/engine-NOTICE build-docs/engine-README.md @@ -163,6 +172,9 @@ done /usr/share/vim/vimfiles/ftdetect/dockerfile.vim /usr/share/vim/vimfiles/syntax/dockerfile.vim /usr/share/nano/Dockerfile.nanorc +/var/lib/docker/plugins/tar/telemetry_%{_plugin_version}.tgz +/var/lib/docker/plugins/tar/.plugin-metadata +/usr/bin/load-telemetry-plugin %pre if [ $1 -gt 0 ] ; then diff --git a/components/packaging/rpm/fedora-24/docker-ce.spec b/components/packaging/rpm/fedora-24/docker-ce.spec index 84108421fc..75948dceaa 100644 --- a/components/packaging/rpm/fedora-24/docker-ce.spec +++ b/components/packaging/rpm/fedora-24/docker-ce.spec @@ -6,6 +6,7 @@ Group: Tools/Docker License: ASL 2.0 Source0: engine.tgz Source1: cli.tgz +Source2: telemetry_%{_plugin_version}.tgz URL: https://www.docker.com Vendor: Docker Packager: Docker @@ -69,6 +70,8 @@ pushd engine TMP_GOPATH="/go" hack/dockerfile/install-binaries.sh runc-dynamic containerd-dynamic proxy-dynamic tini hack/make.sh dynbinary popd +mkdir -p plugin +printf '{"edition_type":"ce","edition_name":"%s","edition_version":"%s"}\n' "${DISTRO}" "%{_version}" > plugin/.plugin-metadata %check cli/build/docker -v @@ -139,6 +142,12 @@ for cli_file in LICENSE MAINTAINERS NOTICE README.md; do cp "cli/$cli_file" "build-docs/cli-$cli_file" done +# add telemetry plugin +install -d $RPM_BUILD_ROOT/var/lib/docker/plugins/tar +install -p -m 644 %{SOURCE2} $RPM_BUILD_ROOT/var/lib/docker/plugins/tar +install -p -m 644 plugin/.plugin-metadata $RPM_BUILD_ROOT/var/lib/docker/plugins/tar +install -p -m 755 /common/load-telemetry-plugin $RPM_BUILD_ROOT/%{_bindir}/load-telemetry-plugin + # list files owned by the package here %files %doc build-docs/engine-AUTHORS build-docs/engine-CHANGELOG.md build-docs/engine-CONTRIBUTING.md build-docs/engine-LICENSE build-docs/engine-MAINTAINERS build-docs/engine-NOTICE build-docs/engine-README.md @@ -164,6 +173,9 @@ done /usr/share/vim/vimfiles/ftdetect/dockerfile.vim /usr/share/vim/vimfiles/syntax/dockerfile.vim /usr/share/nano/Dockerfile.nanorc +/var/lib/docker/plugins/tar/telemetry_%{_plugin_version}.tgz +/var/lib/docker/plugins/tar/.plugin-metadata +/usr/bin/load-telemetry-plugin %pre if [ $1 -gt 0 ] ; then diff --git a/components/packaging/rpm/fedora-25/docker-ce.spec b/components/packaging/rpm/fedora-25/docker-ce.spec index 09d1cbf465..34fc85d0d7 100644 --- a/components/packaging/rpm/fedora-25/docker-ce.spec +++ b/components/packaging/rpm/fedora-25/docker-ce.spec @@ -6,6 +6,7 @@ Group: Tools/Docker License: ASL 2.0 Source0: engine.tgz Source1: cli.tgz +Source2: telemetry_%{_plugin_version}.tgz URL: https://www.docker.com Vendor: Docker Packager: Docker @@ -67,6 +68,8 @@ pushd engine TMP_GOPATH="/go" hack/dockerfile/install-binaries.sh runc-dynamic containerd-dynamic proxy-dynamic tini hack/make.sh dynbinary popd +mkdir -p plugin +printf '{"edition_type":"ce","edition_name":"%s","edition_version":"%s"}\n' "${DISTRO}" "%{_version}" > plugin/.plugin-metadata %check cli/build/docker -v @@ -137,6 +140,12 @@ for cli_file in LICENSE MAINTAINERS NOTICE README.md; do cp "cli/$cli_file" "build-docs/cli-$cli_file" done +# add telemetry plugin +install -d $RPM_BUILD_ROOT/var/lib/docker/plugins/tar +install -p -m 644 %{SOURCE2} $RPM_BUILD_ROOT/var/lib/docker/plugins/tar +install -p -m 644 plugin/.plugin-metadata $RPM_BUILD_ROOT/var/lib/docker/plugins/tar +install -p -m 755 /common/load-telemetry-plugin $RPM_BUILD_ROOT/%{_bindir}/load-telemetry-plugin + # list files owned by the package here %files %doc build-docs/engine-AUTHORS build-docs/engine-CHANGELOG.md build-docs/engine-CONTRIBUTING.md build-docs/engine-LICENSE build-docs/engine-MAINTAINERS build-docs/engine-NOTICE build-docs/engine-README.md @@ -162,6 +171,9 @@ done /usr/share/vim/vimfiles/ftdetect/dockerfile.vim /usr/share/vim/vimfiles/syntax/dockerfile.vim /usr/share/nano/Dockerfile.nanorc +/var/lib/docker/plugins/tar/telemetry_%{_plugin_version}.tgz +/var/lib/docker/plugins/tar/.plugin-metadata +/usr/bin/load-telemetry-plugin %pre if [ $1 -gt 0 ] ; then diff --git a/components/packaging/rpm/systemd/docker.service b/components/packaging/rpm/systemd/docker.service index 6c60646b56..ac2e9cec6d 100644 --- a/components/packaging/rpm/systemd/docker.service +++ b/components/packaging/rpm/systemd/docker.service @@ -11,6 +11,7 @@ Type=notify # for containers run by docker ExecStart=/usr/bin/dockerd ExecReload=/bin/kill -s HUP $MAINPID +ExecStartPost=/usr/bin/load-telemetry-plugin # Having non-zero Limit*s causes performance problems due to accounting overhead # in the kernel. We recommend using cgroups to do container-local accounting. LimitNOFILE=infinity From b9b61ead5a06da99e2c5be994c63e07db2d2bdb4 Mon Sep 17 00:00:00 2001 From: Stefan Scherer Date: Mon, 5 Jun 2017 18:28:12 +0200 Subject: [PATCH 2/9] Add raspbian deb packages (cherry picked from commit 1c61fdcafc4f6fa0e41c267cd857d0b60d3a2dbd) Signed-off-by: Eli Uriegas --- components/packaging/Makefile | 2 +- components/packaging/deb/Makefile | 36 +++++++++++++++++-- .../deb/raspbian-jessie/Dockerfile.armv7l | 33 +++++++++++++++++ .../deb/raspbian-stretch/Dockerfile.armv7l | 33 +++++++++++++++++ 4 files changed, 101 insertions(+), 3 deletions(-) create mode 100644 components/packaging/deb/raspbian-jessie/Dockerfile.armv7l create mode 100644 components/packaging/deb/raspbian-stretch/Dockerfile.armv7l diff --git a/components/packaging/Makefile b/components/packaging/Makefile index a48ba86a99..6be1639a06 100644 --- a/components/packaging/Makefile +++ b/components/packaging/Makefile @@ -21,7 +21,7 @@ rpm: ## build rpm packages $(MAKE) -C $@ VERSION=$(VERSION) PLUGIN_VERSION=$(PLUGIN_VERSION) ENGINE_DIR=$(ENGINE_DIR) CLI_DIR=$(CLI_DIR) $${p}; \ done -deb: DOCKER_BUILD_PKGS:=ubuntu-zesty ubuntu-yakkety ubuntu-xenial ubuntu-trusty debian-stretch debian-wheezy debian-jessie +deb: DOCKER_BUILD_PKGS:=ubuntu-zesty ubuntu-xenial ubuntu-trusty debian-stretch debian-wheezy debian-jessie raspbian-stretch raspbian-jessie deb: ## build deb packages $(MAKE) -C $@ metrics_plugin for p in $(DOCKER_BUILD_PKGS); do \ diff --git a/components/packaging/deb/Makefile b/components/packaging/deb/Makefile index bdc0dfd86c..7fe7bd5a42 100644 --- a/components/packaging/deb/Makefile +++ b/components/packaging/deb/Makefile @@ -12,7 +12,7 @@ PLUGIN_VERSION?=1.0.0.$(KERNEL)-$(ARCH)-test DOCKER_EXPERIMENTAL:=0 CHOWN:=docker run --rm -v $(CURDIR):/v -w /v $(ALPINE_IMG) chown -.PHONY: help clean deb ubuntu debian ubuntu-xenial ubuntu-trusty ubuntu-yakkety ubuntu-zesty debian-jessie debian-stretch debian-wheezy +.PHONY: help clean deb ubuntu debian ubuntu-xenial ubuntu-trusty ubuntu-zesty debian-jessie debian-stretch debian-wheezy raspbian-jessie raspbian-stretch help: ## show make targets @awk 'BEGIN {FS = ":.*?## "} /^[a-zA-Z_-]+:.*?## / {sub("\\\\n",sprintf("\n%22c"," "), $$2);printf " \033[36m%-20s\033[0m %s\n", $$1, $$2}' $(MAKEFILE_LIST) @@ -21,12 +21,14 @@ clean: ## remove build artifacts [ ! -d debbuild ] || $(CHOWN) -R $(shell id -u):$(shell id -g) debbuild $(RM) -r debbuild -deb: ubuntu debian ## build all deb packages +deb: ubuntu debian raspbian ## build all deb packages ubuntu: ubuntu-zesty ubuntu-yakkety ubuntu-xenial ubuntu-trusty ## build all ubuntu deb packages debian: debian-stretch debian-wheezy debian-jessie ## build all debian deb packages +raspbian: raspbian-stretch debian-jessie ## build all raspbian deb packages + metrics_plugin: ## pull telemetry plugin tarball mkdir -p $(PLUGIN_DIR) docker create --name tmp docker/telemetry-tgz:$(PLUGIN_VERSION) @@ -137,3 +139,33 @@ debian-wheezy: ## build debian wheezy deb packages -v $(COMMON_DIR):/root/build-deb/common \ debbuild-$@/$(ARCH) $(CHOWN) -R $(shell id -u):$(shell id -g) debbuild/$@ + +raspbian-jessie: ## build raspbian jessie deb packages + docker build -t debbuild-$@/$(ARCH) -f $(CURDIR)/$@/Dockerfile.$(ARCH) . + docker run --rm -i \ + -e VERSION=$(VERSION) \ + -e DOCKER_GITCOMMIT=$(GITCOMMIT) \ + -e PLUGIN_VERSION=$(PLUGIN_VERSION) \ + -v $(CURDIR)/debbuild/$@:/build \ + -v $(ENGINE_DIR):/engine \ + -v $(PLUGIN_DIR):/plugin \ + -v $(CLI_DIR):/cli \ + -v $(CURDIR)/systemd:/root/build-deb/systemd \ + -v $(COMMON_DIR):/root/build-deb/common \ + debbuild-$@/$(ARCH) + $(CHOWN) -R $(shell id -u):$(shell id -g) debbuild/$@ + +raspbian-stretch: ## build raspbian stretch deb packages + docker build -t debbuild-$@/$(ARCH) -f $(CURDIR)/$@/Dockerfile.$(ARCH) . + docker run --rm -i \ + -e VERSION=$(VERSION) \ + -e DOCKER_GITCOMMIT=$(GITCOMMIT) \ + -e PLUGIN_VERSION=$(PLUGIN_VERSION) \ + -v $(CURDIR)/debbuild/$@:/build \ + -v $(ENGINE_DIR):/engine \ + -v $(PLUGIN_DIR):/plugin \ + -v $(CLI_DIR):/cli \ + -v $(CURDIR)/systemd:/root/build-deb/systemd \ + -v $(COMMON_DIR):/root/build-deb/common \ + debbuild-$@/$(ARCH) + $(CHOWN) -R $(shell id -u):$(shell id -g) debbuild/$@ diff --git a/components/packaging/deb/raspbian-jessie/Dockerfile.armv7l b/components/packaging/deb/raspbian-jessie/Dockerfile.armv7l new file mode 100644 index 0000000000..a6ec68a2e5 --- /dev/null +++ b/components/packaging/deb/raspbian-jessie/Dockerfile.armv7l @@ -0,0 +1,33 @@ +FROM resin/rpi-raspbian:jessie + +# allow replacing archive mirror +ARG APT_MIRROR=archive.raspbian.org +RUN sed -ri "s/archive.raspbian.org/$APT_MIRROR/g" /etc/apt/sources.list + +RUN apt-get update && apt-get install -y apparmor bash-completion btrfs-tools build-essential cmake curl ca-certificates debhelper dh-apparmor dh-systemd git libapparmor-dev libdevmapper-dev libltdl-dev pkg-config vim-common libsystemd-journal-dev --no-install-recommends && rm -rf /var/lib/apt/lists/* + +ENV GO_VERSION 1.8.3 +ENV GOARM 6 +RUN curl -fSL "https://golang.org/dl/go${GO_VERSION}.linux-armv6l.tar.gz" | tar xzC /usr/local +ENV GOPATH /go +ENV PATH $PATH:/usr/local/go/bin:$GOPATH/bin +ENV DOCKER_BUILDTAGS apparmor pkcs11 selinux +ENV RUNC_BUILDTAGS apparmor selinux + +COPY common/ /root/build-deb/debian +COPY build-deb /root/build-deb/build-deb + +RUN mkdir -p /go/src/github.com/docker && \ + mkdir -p /go/src/github.com/opencontainers && \ + ln -snf /engine /root/build-deb/engine && \ + ln -snf /cli /root/build-deb/cli && \ + ln -snf /root/build-deb/engine /go/src/github.com/docker/docker && \ + ln -snf /root/build-deb/cli /go/src/github.com/docker/cli + + +ENV DISTRO raspbian +ENV SUITE jessie + +WORKDIR /root/build-deb + +ENTRYPOINT ["/root/build-deb/build-deb"] diff --git a/components/packaging/deb/raspbian-stretch/Dockerfile.armv7l b/components/packaging/deb/raspbian-stretch/Dockerfile.armv7l new file mode 100644 index 0000000000..738be12f0c --- /dev/null +++ b/components/packaging/deb/raspbian-stretch/Dockerfile.armv7l @@ -0,0 +1,33 @@ +FROM resin/rpi-raspbian:stretch + +# allow replacing archive mirror +ARG APT_MIRROR=archive.raspbian.org +RUN sed -ri "s/archive.raspbian.org/$APT_MIRROR/g" /etc/apt/sources.list + +RUN apt-get update && apt-get install -y apparmor bash-completion btrfs-tools build-essential cmake curl ca-certificates debhelper dh-apparmor dh-systemd git libapparmor-dev libdevmapper-dev libltdl-dev libseccomp-dev pkg-config vim-common libsystemd-dev --no-install-recommends && rm -rf /var/lib/apt/lists/* + +ENV GO_VERSION 1.8.3 +ENV GOARM 6 +RUN curl -fSL "https://golang.org/dl/go${GO_VERSION}.linux-armv6l.tar.gz" | tar xzC /usr/local +ENV GOPATH /go +ENV PATH $PATH:/usr/local/go/bin:$GOPATH/bin +ENV DOCKER_BUILDTAGS apparmor pkcs11 seccomp selinux +ENV RUNC_BUILDTAGS apparmor seccomp selinux + +COPY common/ /root/build-deb/debian +COPY build-deb /root/build-deb/build-deb + +RUN mkdir -p /go/src/github.com/docker && \ + mkdir -p /go/src/github.com/opencontainers && \ + ln -snf /engine /root/build-deb/engine && \ + ln -snf /cli /root/build-deb/cli && \ + ln -snf /root/build-deb/engine /go/src/github.com/docker/docker && \ + ln -snf /root/build-deb/cli /go/src/github.com/docker/cli + + +ENV DISTRO raspbian +ENV SUITE stretch + +WORKDIR /root/build-deb + +ENTRYPOINT ["/root/build-deb/build-deb"] From c203be7748abbb15ddfec909cfc25764c7b2ea9a Mon Sep 17 00:00:00 2001 From: Eli Uriegas Date: Mon, 24 Jul 2017 15:11:11 -0700 Subject: [PATCH 3/9] Tell build-deb to throw up errors Signed-off-by: Eli Uriegas (cherry picked from commit 3618e4aa262f154f79c804752d69110772e636a3) Signed-off-by: Eli Uriegas --- components/packaging/deb/build-deb | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/components/packaging/deb/build-deb b/components/packaging/deb/build-deb index 2ca570f07f..713489bad5 100755 --- a/components/packaging/deb/build-deb +++ b/components/packaging/deb/build-deb @@ -1,5 +1,6 @@ #!/usr/bin/env bash set -x +set -e # I want to rip this install-binaries script out so badly cd engine TMP_GOPATH="/go" bash hack/dockerfile/install-binaries.sh runc-dynamic containerd-dynamic proxy-dynamic tini @@ -21,11 +22,11 @@ tilde='~' # ouch Bash 4.2 vs 4.3, you keel me GIT_COMMAND="git --git-dir=/root/build-deb/engine/.git --work-tree=/root/build-deb/engine/" debVersion="${VERSION//-/$tilde}" # using \~ or '~' here works in 4.3, but not 4.2; just ~ causes $HOME to be inserted, hence the $tilde # if we have a "-dev" suffix or have change in Git, let's make this package version more complex so it works better -if [[ "$VERSION" == *-dev ]] || [ -n "$($GIT_COMMAND status --porcelain)" ]; then - gitUnix="$($GIT_COMMAND log -1 --pretty='%at')" - gitDate="$(date --date "@$gitUnix" +'%Y%m%d.%H%M%S')" - gitCommit="$($GIT_COMMAND log -1 --pretty='%h')" - gitVersion="git${gitDate}.0.${gitCommit}" +if [[ "$VERSION" == *-dev ]]; then + # TODO: Re-introduce git commit time into version number + todaysDate="$(date +'%Y%m%d.%H%M%S')" + # We're guaranteed to have DOCKER_GITCOMMIT in the env + gitVersion="git${todaysDate}.0.${DOCKER_GITCOMMIT}" # gitVersion is now something like 'git20150128.112847.0.17e840a' debVersion="$debVersion~$gitVersion" @@ -53,7 +54,7 @@ EOF export DOCKER_GITCOMMIT=${DOCKER_GITCOMMIT-$($GIT_COMMAND rev-parse --short HEAD)} echo VERSION BBB $VERSION -dpkg-buildpackage -v -uc -us -I.git +dpkg-buildpackage -uc -us -I.git destination="/build" mkdir -p "$destination" mv -v /root/docker-ce* "$destination" From e5f33c5d1613405e5288f5b505c1a5227cd7e18a Mon Sep 17 00:00:00 2001 From: Eli Uriegas Date: Mon, 24 Jul 2017 15:52:49 -0700 Subject: [PATCH 4/9] Revert "Added the metrics plugin to the RPM/DEB packages" This reverts commit ceac22bf2240df483b1d3bd3a19ac681e665f910. Signed-off-by: Eli Uriegas (cherry picked from commit bda73f99e455bd3f041ccc843f094186ca8b8623) Signed-off-by: Eli Uriegas --- components/packaging/Makefile | 8 +-- .../packaging/common/load-telemetry-plugin | 66 ------------------- components/packaging/deb/Makefile | 34 ---------- .../deb/common/docker-ce.docker.init | 4 +- .../deb/common/docker-ce.docker.upstart | 2 - components/packaging/deb/common/rules | 6 -- .../packaging/deb/systemd/docker.service | 1 - components/packaging/rpm/Makefile | 31 +++------ .../packaging/rpm/centos-7/docker-ce.spec | 12 ---- .../packaging/rpm/fedora-24/docker-ce.spec | 12 ---- .../packaging/rpm/fedora-25/docker-ce.spec | 12 ---- .../packaging/rpm/systemd/docker.service | 1 - 12 files changed, 13 insertions(+), 176 deletions(-) delete mode 100755 components/packaging/common/load-telemetry-plugin diff --git a/components/packaging/Makefile b/components/packaging/Makefile index 6be1639a06..834b1d8993 100644 --- a/components/packaging/Makefile +++ b/components/packaging/Makefile @@ -2,7 +2,6 @@ SHELL:=/bin/bash ENGINE_DIR:=$(CURDIR)/../engine CLI_DIR:=$(CURDIR)/../cli VERSION=unknown -PLUGIN_VERSION=unknown DOCKER_GITCOMMIT:=abcdefg .PHONY: help clean rpm deb static @@ -18,18 +17,17 @@ clean: ## remove build artifacts rpm: DOCKER_BUILD_PKGS:=fedora-25 fedora-24 centos-7 rpm: ## build rpm packages for p in $(DOCKER_BUILD_PKGS); do \ - $(MAKE) -C $@ VERSION=$(VERSION) PLUGIN_VERSION=$(PLUGIN_VERSION) ENGINE_DIR=$(ENGINE_DIR) CLI_DIR=$(CLI_DIR) $${p}; \ + $(MAKE) -C $@ VERSION=$(VERSION) ENGINE_DIR=$(ENGINE_DIR) CLI_DIR=$(CLI_DIR) $${p}; \ done deb: DOCKER_BUILD_PKGS:=ubuntu-zesty ubuntu-xenial ubuntu-trusty debian-stretch debian-wheezy debian-jessie raspbian-stretch raspbian-jessie deb: ## build deb packages - $(MAKE) -C $@ metrics_plugin for p in $(DOCKER_BUILD_PKGS); do \ - $(MAKE) -C $@ VERSION=$(VERSION) PLUGIN_VERSION=$(PLUGIN_VERSION) ENGINE_DIR=$(ENGINE_DIR) CLI_DIR=$(CLI_DIR) $${p}; \ + $(MAKE) -C $@ VERSION=$(VERSION) ENGINE_DIR=$(ENGINE_DIR) CLI_DIR=$(CLI_DIR) $${p}; \ done static: DOCKER_BUILD_PKGS:=static-linux cross-mac cross-win cross-arm static: ## build static-compiled packages for p in $(DOCKER_BUILD_PKGS); do \ - $(MAKE) -C $@ VERSION=$(VERSION) PLUGIN_VERSION=$(PLUGIN_VERSION) ENGINE_DIR=$(ENGINE_DIR) CLI_DIR=$(CLI_DIR) $${p}; \ + $(MAKE) -C $@ VERSION=$(VERSION) ENGINE_DIR=$(ENGINE_DIR) CLI_DIR=$(CLI_DIR) $${p}; \ done diff --git a/components/packaging/common/load-telemetry-plugin b/components/packaging/common/load-telemetry-plugin deleted file mode 100755 index 7264c20d27..0000000000 --- a/components/packaging/common/load-telemetry-plugin +++ /dev/null @@ -1,66 +0,0 @@ -#!/usr/bin/env sh - -BASE=/var/lib/docker -TAR_DIR=$BASE/plugins/tar - -# make sure that the directory exists -mkdir -p $TAR_DIR - -# Create the engine UUID, if it doesn't exist -# This will be eventually handled by the docker engine -# ref. https://github.com/moby/moby/issues/33356 -if [ -f $BASE/engine_uuid ]; then - UUID=$(cat $BASE/engine_uuid) -fi -if [ -z ${UUID+x} ]; then - UUID=$(cat /proc/sys/kernel/random/uuid | tee $BASE/engine_uuid) -fi - -# make sure that docker is running -if ! printf "%s" "$DOCKER_OPTS" | grep -qE -e '-H|--host'; then - DOCKER_SOCKET=/var/run/docker.sock -else - DOCKER_SOCKET=$(printf "%s" "$DOCKER_OPTS" | grep -oP -e '(-H|--host)\W*unix://\K(\S+)' | sed 1q) -fi - -if [ -n "$DOCKER_SOCKET" ]; then - while ! [ -e "$DOCKER_SOCKET" ]; do - sleep 0.1 - done -fi - -# store the metrics plugin state -plugin_name=$(docker plugin ls | grep docker/telemetry | awk 'NR==1{print $2}') -plugin_metadata=$TAR_DIR/.plugin-metadata -if docker inspect $plugin_name > /dev/null 2>&1; then - plugin_state=$(docker plugin inspect $plugin_name | grep -o '"Enabled":.*' | sed 's/,/\\\}/g' | sed 's/ //g') - # remove previous plugin state - sed -i 's/,"Enabled":.*/\}/g' $plugin_metadata - # add new plugin state - sed -i "s/\}/,$plugin_state/g" $plugin_metadata -fi - -# find plugin_name based on the tarball -plugin_filename=$(ls $TAR_DIR/) -plugin_tag=$(echo $plugin_filename | cut -d"_" -f2-) -plugin_tag=${plugin_tag%.tgz} -plugin_name=docker/telemetry:$plugin_tag -# install/upgrade telemetry plugin in case it's not present (ignore stdout/stderror) -if ! docker inspect $plugin_name > /dev/null 2>&1; then - # remove old plugin versions - docker plugin rm -f `docker plugin ls | grep docker/telemetry | awk '{print $2}'` > /dev/null 2>&1 - # create new plugin (disabled by default) - cd $TAR_DIR/ && tar -zxf $plugin_filename -C /tmp - docker plugin create $plugin_name /tmp/plugin > /dev/null 2>&1 - rm -rf /tmp/plugin - # extract all the edition variables, including the engine uuid - uuid=$(cat /var/lib/docker/engine_uuid) - edition_version=$(cat $plugin_metadata | sed 's/{.*edition_version":"*\([0-9a-zA-Z.]*\)"*,*.*}/\1/') - edition_type=$(cat $plugin_metadata | sed 's/{.*edition_type":"*\([0-9a-zA-Z.]*\)"*,*.*}/\1/') - edition_name=$(cat $plugin_metadata | sed 's/{.*edition_name":"*\([0-9a-zA-Z.]*\)"*,*.*}/\1/') - docker plugin set $plugin_name edition_name=$edition_name edition_type=$edition_type edition_version=$edition_version anonymous_id=$uuid > /dev/null 2>&1 - # set the metrics plugin to its previous state - if grep 'true' $plugin_metadata > /dev/null 2>&1 ; then - docker plugin enable $plugin_name > /dev/null 2>&1 - fi -fi diff --git a/components/packaging/deb/Makefile b/components/packaging/deb/Makefile index 7fe7bd5a42..7923da53ee 100644 --- a/components/packaging/deb/Makefile +++ b/components/packaging/deb/Makefile @@ -1,14 +1,10 @@ SHELL:=/bin/bash ALPINE_IMG:=$(shell $(CURDIR)/../detect_alpine_image) ARCH:=$(shell uname -m) -KERNEL:=$(shell docker version --format '{{.Server.Os}}') ENGINE_DIR:=$(CURDIR)/../../engine CLI_DIR:=$(CURDIR)/../../cli -COMMON_DIR:=$(CURDIR)/../common -PLUGIN_DIR:=$(CURDIR)/plugin GITCOMMIT?=$(shell cd $(ENGINE_DIR) && git rev-parse --short HEAD) VERSION?=$(shell cat $(ENGINE_DIR)/VERSION) -PLUGIN_VERSION?=1.0.0.$(KERNEL)-$(ARCH)-test DOCKER_EXPERIMENTAL:=0 CHOWN:=docker run --rm -v $(CURDIR):/v -w /v $(ALPINE_IMG) chown @@ -29,24 +25,15 @@ debian: debian-stretch debian-wheezy debian-jessie ## build all debian deb packa raspbian: raspbian-stretch debian-jessie ## build all raspbian deb packages -metrics_plugin: ## pull telemetry plugin tarball - mkdir -p $(PLUGIN_DIR) - docker create --name tmp docker/telemetry-tgz:$(PLUGIN_VERSION) - docker export tmp | tar -x -C $(PLUGIN_DIR) - docker rm -f tmp - ubuntu-xenial: ## build ubuntu xenial deb packages docker build -t debbuild-$@/$(ARCH) -f $(CURDIR)/$@/Dockerfile.$(ARCH) . docker run --rm -i \ -e VERSION=$(VERSION) \ - -e PLUGIN_VERSION=$(PLUGIN_VERSION) \ -e DOCKER_GITCOMMIT=$(GITCOMMIT) \ -v $(CURDIR)/debbuild/$@:/build \ -v $(ENGINE_DIR):/engine \ - -v $(PLUGIN_DIR):/plugin \ -v $(CLI_DIR):/cli \ -v $(CURDIR)/systemd:/root/build-deb/systemd \ - -v $(COMMON_DIR):/root/build-deb/common \ debbuild-$@/$(ARCH) $(CHOWN) -R $(shell id -u):$(shell id -g) debbuild/$@ @@ -54,14 +41,11 @@ ubuntu-trusty: ## build ubuntu trusty deb packages docker build -t debbuild-$@/$(ARCH) -f $(CURDIR)/$@/Dockerfile.$(ARCH) . docker run --rm -i \ -e VERSION=$(VERSION) \ - -e PLUGIN_VERSION=$(PLUGIN_VERSION) \ -e DOCKER_GITCOMMIT=$(GITCOMMIT) \ -v $(CURDIR)/debbuild/$@:/build \ -v $(ENGINE_DIR):/engine \ - -v $(PLUGIN_DIR):/plugin \ -v $(CLI_DIR):/cli \ -v $(CURDIR)/systemd:/root/build-deb/systemd \ - -v $(COMMON_DIR):/root/build-deb/common \ debbuild-$@/$(ARCH) $(CHOWN) -R $(shell id -u):$(shell id -g) debbuild/$@ @@ -85,13 +69,10 @@ ubuntu-zesty: ## build ubuntu zesty deb packages docker run --rm -i \ -e VERSION=$(VERSION) \ -e DOCKER_GITCOMMIT=$(GITCOMMIT) \ - -e PLUGIN_VERSION=$(PLUGIN_VERSION) \ -v $(CURDIR)/debbuild/$@:/build \ -v $(ENGINE_DIR):/engine \ - -v $(PLUGIN_DIR):/plugin \ -v $(CLI_DIR):/cli \ -v $(CURDIR)/systemd:/root/build-deb/systemd \ - -v $(COMMON_DIR):/root/build-deb/common \ debbuild-$@/$(ARCH) $(CHOWN) -R $(shell id -u):$(shell id -g) debbuild/$@ @@ -100,13 +81,10 @@ debian-jessie: ## build debian jessie deb packages docker run --rm -i \ -e VERSION=$(VERSION) \ -e DOCKER_GITCOMMIT=$(GITCOMMIT) \ - -e PLUGIN_VERSION=$(PLUGIN_VERSION) \ -v $(CURDIR)/debbuild/$@:/build \ -v $(ENGINE_DIR):/engine \ - -v $(PLUGIN_DIR):/plugin \ -v $(CLI_DIR):/cli \ -v $(CURDIR)/systemd:/root/build-deb/systemd \ - -v $(COMMON_DIR):/root/build-deb/common \ debbuild-$@/$(ARCH) $(CHOWN) -R $(shell id -u):$(shell id -g) debbuild/$@ @@ -115,13 +93,10 @@ debian-stretch: ## build debian stretch deb packages docker run --rm -i \ -e VERSION=$(VERSION) \ -e DOCKER_GITCOMMIT=$(GITCOMMIT) \ - -e PLUGIN_VERSION=$(PLUGIN_VERSION) \ -v $(CURDIR)/debbuild/$@:/build \ -v $(ENGINE_DIR):/engine \ - -v $(PLUGIN_DIR):/plugin \ -v $(CLI_DIR):/cli \ -v $(CURDIR)/systemd:/root/build-deb/systemd \ - -v $(COMMON_DIR):/root/build-deb/common \ debbuild-$@/$(ARCH) $(CHOWN) -R $(shell id -u):$(shell id -g) debbuild/$@ @@ -130,13 +105,10 @@ debian-wheezy: ## build debian wheezy deb packages docker run --rm -i \ -e VERSION=$(VERSION) \ -e DOCKER_GITCOMMIT=$(GITCOMMIT) \ - -e PLUGIN_VERSION=$(PLUGIN_VERSION) \ -v $(CURDIR)/debbuild/$@:/build \ -v $(ENGINE_DIR):/engine \ - -v $(PLUGIN_DIR):/plugin \ -v $(CLI_DIR):/cli \ -v $(CURDIR)/systemd:/root/build-deb/systemd \ - -v $(COMMON_DIR):/root/build-deb/common \ debbuild-$@/$(ARCH) $(CHOWN) -R $(shell id -u):$(shell id -g) debbuild/$@ @@ -145,13 +117,10 @@ raspbian-jessie: ## build raspbian jessie deb packages docker run --rm -i \ -e VERSION=$(VERSION) \ -e DOCKER_GITCOMMIT=$(GITCOMMIT) \ - -e PLUGIN_VERSION=$(PLUGIN_VERSION) \ -v $(CURDIR)/debbuild/$@:/build \ -v $(ENGINE_DIR):/engine \ - -v $(PLUGIN_DIR):/plugin \ -v $(CLI_DIR):/cli \ -v $(CURDIR)/systemd:/root/build-deb/systemd \ - -v $(COMMON_DIR):/root/build-deb/common \ debbuild-$@/$(ARCH) $(CHOWN) -R $(shell id -u):$(shell id -g) debbuild/$@ @@ -160,12 +129,9 @@ raspbian-stretch: ## build raspbian stretch deb packages docker run --rm -i \ -e VERSION=$(VERSION) \ -e DOCKER_GITCOMMIT=$(GITCOMMIT) \ - -e PLUGIN_VERSION=$(PLUGIN_VERSION) \ -v $(CURDIR)/debbuild/$@:/build \ -v $(ENGINE_DIR):/engine \ - -v $(PLUGIN_DIR):/plugin \ -v $(CLI_DIR):/cli \ -v $(CURDIR)/systemd:/root/build-deb/systemd \ - -v $(COMMON_DIR):/root/build-deb/common \ debbuild-$@/$(ARCH) $(CHOWN) -R $(shell id -u):$(shell id -g) debbuild/$@ diff --git a/components/packaging/deb/common/docker-ce.docker.init b/components/packaging/deb/common/docker-ce.docker.init index 53657ff407..9c8fa6be73 100644 --- a/components/packaging/deb/common/docker-ce.docker.init +++ b/components/packaging/deb/common/docker-ce.docker.init @@ -85,7 +85,7 @@ cgroupfs_mount() { case "$1" in start) check_init - + fail_unless_root cgroupfs_mount @@ -114,8 +114,6 @@ case "$1" in $DOCKER_OPTS \ >> "$DOCKER_LOGFILE" 2>&1 log_end_msg $? - # load metrics plugin (disabled by default) - /usr/bin/load-telemetry-plugin ;; stop) diff --git a/components/packaging/deb/common/docker-ce.docker.upstart b/components/packaging/deb/common/docker-ce.docker.upstart index de6a65fd42..d58f7d6ac8 100644 --- a/components/packaging/deb/common/docker-ce.docker.upstart +++ b/components/packaging/deb/common/docker-ce.docker.upstart @@ -69,6 +69,4 @@ post-start script done echo "$DOCKER_SOCKET is up" fi - # load metrics plugin (disabled by default) - /usr/bin/load-telemetry-plugin end script diff --git a/components/packaging/deb/common/rules b/components/packaging/deb/common/rules index 4d5124e69e..e2962bb78e 100644 --- a/components/packaging/deb/common/rules +++ b/components/packaging/deb/common/rules @@ -11,8 +11,6 @@ override_dh_gencontrol: dh_gencontrol override_dh_auto_build: - # create metrics plugin metadata - printf '{"edition_type":"ce","edition_name":"%s","edition_version":"%s"}\n' "$(DISTRO)" "$(VERSION)" > /plugin/.plugin-metadata cd engine && ./hack/make.sh dynbinary cd /go/src/github.com/docker/cli && LDFLAGS='' make VERSION=$(VERSION) GITCOMMIT=$(DOCKER_GITCOMMIT) dynbinary manpages @@ -33,10 +31,6 @@ override_dh_auto_install: cp -aT /usr/local/bin/docker-runc debian/docker-ce/usr/bin/docker-runc cp -aT /usr/local/bin/docker-init debian/docker-ce/usr/bin/docker-init mkdir -p debian/docker-ce/usr/lib/docker - mkdir -p debian/docker-ce/var/lib/docker/plugins/tar - cp -aTL /plugin/telemetry_$(PLUGIN_VERSION).tgz debian/docker-ce/var/lib/docker/plugins/tar/telemetry_$(PLUGIN_VERSION).tgz - cp -aTL /plugin/.plugin-metadata debian/docker-ce/var/lib/docker/plugins/tar/.plugin-metadata - cp -aTL /root/build-deb/common/load-telemetry-plugin debian/docker-ce/usr/bin/load-telemetry-plugin override_dh_installinit: # use "docker" as our service name, not "docker-ce" diff --git a/components/packaging/deb/systemd/docker.service b/components/packaging/deb/systemd/docker.service index 08494bebf1..517463172b 100644 --- a/components/packaging/deb/systemd/docker.service +++ b/components/packaging/deb/systemd/docker.service @@ -12,7 +12,6 @@ Type=notify # for containers run by docker ExecStart=/usr/bin/dockerd -H fd:// ExecReload=/bin/kill -s HUP $MAINPID -ExecStartPost=/usr/bin/load-telemetry-plugin LimitNOFILE=1048576 # Having non-zero Limit*s causes performance problems due to accounting overhead # in the kernel. We recommend using cgroups to do container-local accounting. diff --git a/components/packaging/rpm/Makefile b/components/packaging/rpm/Makefile index dd489f376f..0cc965f053 100644 --- a/components/packaging/rpm/Makefile +++ b/components/packaging/rpm/Makefile @@ -1,13 +1,9 @@ ARCH=$(shell uname -m) ALPINE_IMG:=$(shell $(CURDIR)/../detect_alpine_image) -KERNEL:=$(shell docker version --format '{{.Server.Os}}') ENGINE_DIR:=$(CURDIR)/../../engine -COMMON_DIR:=$(CURDIR)/../common -PLUGIN_DIR:=$(CURDIR)/plugin CLI_DIR:=$(CURDIR)/../../cli GITCOMMIT=$(shell cd $(ENGINE_DIR) && git rev-parse --short HEAD) VERSION=$(shell cat $(ENGINE_DIR)/VERSION) -PLUGIN_VERSION?=1.0.0.$(KERNEL)-$(ARCH)-test DOCKER_EXPERIMENTAL=0 GEN_RPM_VER=$(shell ./gen-rpm-ver $(ENGINE_DIR) $(VERSION)) CHOWN=docker run --rm -i -v $(CURDIR):/v -w /v $(ALPINE_IMG) chown @@ -17,13 +13,11 @@ RPMBUILD=docker run --privileged --rm -i\ -v $(CURDIR)/rpmbuild/BUILDROOT:/root/rpmbuild/BUILDROOT \ -v $(CURDIR)/rpmbuild/RPMS:/root/rpmbuild/RPMS \ -v $(CURDIR)/rpmbuild/SRPMS:/root/rpmbuild/SRPMS \ - -v $(CURDIR)/systemd:/systemd \ - -v $(COMMON_DIR):/common + -v $(CURDIR)/systemd:/systemd RPMBUILD_FLAGS=-ba\ --define '_gitcommit $(word 3,$(GEN_RPM_VER))' \ --define '_release $(word 2,$(GEN_RPM_VER))' \ --define '_version $(word 1,$(GEN_RPM_VER))' \ - --define '_plugin_version $(PLUGIN_VERSION)' \ --define '_origversion $(VERSION)' \ --define '_experimental $(DOCKER_EXPERIMENTAL)' \ SPECS/docker-ce.spec @@ -43,17 +37,22 @@ fedora: fedora-25 fedora-24 ## build all fedora rpm packages centos: centos-7 ## build all centos rpm packages -fedora-25: rpmbuild/SOURCES/engine.tgz rpmbuild/SOURCES/cli.tgz rpmbuild/SOURCES/telemetry.tgz ## build fedora-25 rpm packages +fedora-26: rpmbuild/SOURCES/engine.tgz rpmbuild/SOURCES/cli.tgz ## build fedora-26 rpm packages docker build -t rpmbuild-$@/$(ARCH) -f $@/Dockerfile.$(ARCH) $@ $(RPMBUILD) rpmbuild-$@/$(ARCH) $(RPMBUILD_FLAGS) $(CHOWN) -R $(shell id -u):$(shell id -g) rpmbuild -fedora-24: rpmbuild/SOURCES/engine.tgz rpmbuild/SOURCES/cli.tgz rpmbuild/SOURCES/telemetry.tgz ## build fedora-24 rpm packages +fedora-25: rpmbuild/SOURCES/engine.tgz rpmbuild/SOURCES/cli.tgz ## build fedora-25 rpm packages docker build -t rpmbuild-$@/$(ARCH) -f $@/Dockerfile.$(ARCH) $@ $(RPMBUILD) rpmbuild-$@/$(ARCH) $(RPMBUILD_FLAGS) $(CHOWN) -R $(shell id -u):$(shell id -g) rpmbuild -centos-7: rpmbuild/SOURCES/engine.tgz rpmbuild/SOURCES/cli.tgz rpmbuild/SOURCES/telemetry.tgz ## build centos-7 rpm packages +fedora-24: rpmbuild/SOURCES/engine.tgz rpmbuild/SOURCES/cli.tgz ## build fedora-24 rpm packages + docker build -t rpmbuild-$@/$(ARCH) -f $@/Dockerfile.$(ARCH) $@ + $(RPMBUILD) rpmbuild-$@/$(ARCH) $(RPMBUILD_FLAGS) + $(CHOWN) -R $(shell id -u):$(shell id -g) rpmbuild + +centos-7: rpmbuild/SOURCES/engine.tgz rpmbuild/SOURCES/cli.tgz ## build centos-7 rpm packages docker build -t rpmbuild-$@/$(ARCH) -f $@/Dockerfile.$(ARCH) $@ $(RPMBUILD) rpmbuild-$@/$(ARCH) $(RPMBUILD_FLAGS) $(CHOWN) -R $(shell id -u):$(shell id -g) rpmbuild @@ -73,15 +72,3 @@ rpmbuild/SOURCES/engine.tgz: -v $(CURDIR)/rpmbuild/SOURCES:/v \ $(ALPINE_IMG) \ tar -C / -c -z -f /v/engine.tgz --exclude .git engine - -rpmbuild/SOURCES/telemetry.tgz: - mkdir -p rpmbuild/SOURCES - mkdir -p $(PLUGIN_DIR) - docker create --name tmp docker/telemetry-tgz:$(PLUGIN_VERSION) - docker export tmp | tar -x -C $(PLUGIN_DIR) - docker run --rm -i -w /plugin \ - -v $(PLUGIN_DIR):/plugin \ - -v $(CURDIR)/rpmbuild/SOURCES:/v \ - alpine \ - cp telemetry_$(PLUGIN_VERSION).tgz /v - docker rm -f tmp diff --git a/components/packaging/rpm/centos-7/docker-ce.spec b/components/packaging/rpm/centos-7/docker-ce.spec index 7c5e47bcea..82445d3333 100644 --- a/components/packaging/rpm/centos-7/docker-ce.spec +++ b/components/packaging/rpm/centos-7/docker-ce.spec @@ -6,7 +6,6 @@ Group: Tools/Docker License: ASL 2.0 Source0: engine.tgz Source1: cli.tgz -Source2: telemetry_%{_plugin_version}.tgz URL: https://www.docker.com Vendor: Docker Packager: Docker @@ -69,8 +68,6 @@ pushd engine TMP_GOPATH="/go" hack/dockerfile/install-binaries.sh runc-dynamic containerd-dynamic proxy-dynamic tini hack/make.sh dynbinary popd -mkdir -p plugin -printf '{"edition_type":"ce","edition_name":"%s","edition_version":"%s"}\n' "${DISTRO}" "%{_version}" > plugin/.plugin-metadata %check cli/build/docker -v @@ -141,12 +138,6 @@ for cli_file in LICENSE MAINTAINERS NOTICE README.md; do cp "cli/$cli_file" "build-docs/cli-$cli_file" done -# add telemetry plugin -install -d $RPM_BUILD_ROOT/var/lib/docker/plugins/tar -install -p -m 644 %{SOURCE2} $RPM_BUILD_ROOT/var/lib/docker/plugins/tar -install -p -m 644 plugin/.plugin-metadata $RPM_BUILD_ROOT/var/lib/docker/plugins/tar -install -p -m 755 /common/load-telemetry-plugin $RPM_BUILD_ROOT/%{_bindir}/load-telemetry-plugin - # list files owned by the package here %files %doc build-docs/engine-AUTHORS build-docs/engine-CHANGELOG.md build-docs/engine-CONTRIBUTING.md build-docs/engine-LICENSE build-docs/engine-MAINTAINERS build-docs/engine-NOTICE build-docs/engine-README.md @@ -172,9 +163,6 @@ install -p -m 755 /common/load-telemetry-plugin $RPM_BUILD_ROOT/%{_bindir}/load- /usr/share/vim/vimfiles/ftdetect/dockerfile.vim /usr/share/vim/vimfiles/syntax/dockerfile.vim /usr/share/nano/Dockerfile.nanorc -/var/lib/docker/plugins/tar/telemetry_%{_plugin_version}.tgz -/var/lib/docker/plugins/tar/.plugin-metadata -/usr/bin/load-telemetry-plugin %pre if [ $1 -gt 0 ] ; then diff --git a/components/packaging/rpm/fedora-24/docker-ce.spec b/components/packaging/rpm/fedora-24/docker-ce.spec index 75948dceaa..84108421fc 100644 --- a/components/packaging/rpm/fedora-24/docker-ce.spec +++ b/components/packaging/rpm/fedora-24/docker-ce.spec @@ -6,7 +6,6 @@ Group: Tools/Docker License: ASL 2.0 Source0: engine.tgz Source1: cli.tgz -Source2: telemetry_%{_plugin_version}.tgz URL: https://www.docker.com Vendor: Docker Packager: Docker @@ -70,8 +69,6 @@ pushd engine TMP_GOPATH="/go" hack/dockerfile/install-binaries.sh runc-dynamic containerd-dynamic proxy-dynamic tini hack/make.sh dynbinary popd -mkdir -p plugin -printf '{"edition_type":"ce","edition_name":"%s","edition_version":"%s"}\n' "${DISTRO}" "%{_version}" > plugin/.plugin-metadata %check cli/build/docker -v @@ -142,12 +139,6 @@ for cli_file in LICENSE MAINTAINERS NOTICE README.md; do cp "cli/$cli_file" "build-docs/cli-$cli_file" done -# add telemetry plugin -install -d $RPM_BUILD_ROOT/var/lib/docker/plugins/tar -install -p -m 644 %{SOURCE2} $RPM_BUILD_ROOT/var/lib/docker/plugins/tar -install -p -m 644 plugin/.plugin-metadata $RPM_BUILD_ROOT/var/lib/docker/plugins/tar -install -p -m 755 /common/load-telemetry-plugin $RPM_BUILD_ROOT/%{_bindir}/load-telemetry-plugin - # list files owned by the package here %files %doc build-docs/engine-AUTHORS build-docs/engine-CHANGELOG.md build-docs/engine-CONTRIBUTING.md build-docs/engine-LICENSE build-docs/engine-MAINTAINERS build-docs/engine-NOTICE build-docs/engine-README.md @@ -173,9 +164,6 @@ install -p -m 755 /common/load-telemetry-plugin $RPM_BUILD_ROOT/%{_bindir}/load- /usr/share/vim/vimfiles/ftdetect/dockerfile.vim /usr/share/vim/vimfiles/syntax/dockerfile.vim /usr/share/nano/Dockerfile.nanorc -/var/lib/docker/plugins/tar/telemetry_%{_plugin_version}.tgz -/var/lib/docker/plugins/tar/.plugin-metadata -/usr/bin/load-telemetry-plugin %pre if [ $1 -gt 0 ] ; then diff --git a/components/packaging/rpm/fedora-25/docker-ce.spec b/components/packaging/rpm/fedora-25/docker-ce.spec index 34fc85d0d7..09d1cbf465 100644 --- a/components/packaging/rpm/fedora-25/docker-ce.spec +++ b/components/packaging/rpm/fedora-25/docker-ce.spec @@ -6,7 +6,6 @@ Group: Tools/Docker License: ASL 2.0 Source0: engine.tgz Source1: cli.tgz -Source2: telemetry_%{_plugin_version}.tgz URL: https://www.docker.com Vendor: Docker Packager: Docker @@ -68,8 +67,6 @@ pushd engine TMP_GOPATH="/go" hack/dockerfile/install-binaries.sh runc-dynamic containerd-dynamic proxy-dynamic tini hack/make.sh dynbinary popd -mkdir -p plugin -printf '{"edition_type":"ce","edition_name":"%s","edition_version":"%s"}\n' "${DISTRO}" "%{_version}" > plugin/.plugin-metadata %check cli/build/docker -v @@ -140,12 +137,6 @@ for cli_file in LICENSE MAINTAINERS NOTICE README.md; do cp "cli/$cli_file" "build-docs/cli-$cli_file" done -# add telemetry plugin -install -d $RPM_BUILD_ROOT/var/lib/docker/plugins/tar -install -p -m 644 %{SOURCE2} $RPM_BUILD_ROOT/var/lib/docker/plugins/tar -install -p -m 644 plugin/.plugin-metadata $RPM_BUILD_ROOT/var/lib/docker/plugins/tar -install -p -m 755 /common/load-telemetry-plugin $RPM_BUILD_ROOT/%{_bindir}/load-telemetry-plugin - # list files owned by the package here %files %doc build-docs/engine-AUTHORS build-docs/engine-CHANGELOG.md build-docs/engine-CONTRIBUTING.md build-docs/engine-LICENSE build-docs/engine-MAINTAINERS build-docs/engine-NOTICE build-docs/engine-README.md @@ -171,9 +162,6 @@ install -p -m 755 /common/load-telemetry-plugin $RPM_BUILD_ROOT/%{_bindir}/load- /usr/share/vim/vimfiles/ftdetect/dockerfile.vim /usr/share/vim/vimfiles/syntax/dockerfile.vim /usr/share/nano/Dockerfile.nanorc -/var/lib/docker/plugins/tar/telemetry_%{_plugin_version}.tgz -/var/lib/docker/plugins/tar/.plugin-metadata -/usr/bin/load-telemetry-plugin %pre if [ $1 -gt 0 ] ; then diff --git a/components/packaging/rpm/systemd/docker.service b/components/packaging/rpm/systemd/docker.service index ac2e9cec6d..6c60646b56 100644 --- a/components/packaging/rpm/systemd/docker.service +++ b/components/packaging/rpm/systemd/docker.service @@ -11,7 +11,6 @@ Type=notify # for containers run by docker ExecStart=/usr/bin/dockerd ExecReload=/bin/kill -s HUP $MAINPID -ExecStartPost=/usr/bin/load-telemetry-plugin # Having non-zero Limit*s causes performance problems due to accounting overhead # in the kernel. We recommend using cgroups to do container-local accounting. LimitNOFILE=infinity From 22f30a8bb1e31880667e40ed5e1e7aebf72ea115 Mon Sep 17 00:00:00 2001 From: Andrew Hsu Date: Wed, 12 Jul 2017 16:09:15 +0000 Subject: [PATCH 5/9] build fedora 26 packages Just released: https://docs.fedoraproject.org/en-US/Fedora/26/html/Release_Notes/ Signed-off-by: Andrew Hsu (cherry picked from commit 412824b465d8334278bb9c02f0a5ee3d294826fd) Signed-off-by: Eli Uriegas --- components/packaging/Makefile | 2 +- components/packaging/rpm/Makefile | 4 +- .../packaging/rpm/fedora-26/Dockerfile.x86_64 | 15 ++ .../packaging/rpm/fedora-26/docker-ce.spec | 167 ++++++++++++++++++ 4 files changed, 185 insertions(+), 3 deletions(-) create mode 100644 components/packaging/rpm/fedora-26/Dockerfile.x86_64 create mode 100644 components/packaging/rpm/fedora-26/docker-ce.spec diff --git a/components/packaging/Makefile b/components/packaging/Makefile index 834b1d8993..0545e2feaf 100644 --- a/components/packaging/Makefile +++ b/components/packaging/Makefile @@ -14,7 +14,7 @@ clean: ## remove build artifacts $(MAKE) -C deb clean $(MAKE) -C static clean -rpm: DOCKER_BUILD_PKGS:=fedora-25 fedora-24 centos-7 +rpm: DOCKER_BUILD_PKGS:=fedora-26 fedora-25 fedora-24 centos-7 rpm: ## build rpm packages for p in $(DOCKER_BUILD_PKGS); do \ $(MAKE) -C $@ VERSION=$(VERSION) ENGINE_DIR=$(ENGINE_DIR) CLI_DIR=$(CLI_DIR) $${p}; \ diff --git a/components/packaging/rpm/Makefile b/components/packaging/rpm/Makefile index 0cc965f053..d894c950e1 100644 --- a/components/packaging/rpm/Makefile +++ b/components/packaging/rpm/Makefile @@ -22,7 +22,7 @@ RPMBUILD_FLAGS=-ba\ --define '_experimental $(DOCKER_EXPERIMENTAL)' \ SPECS/docker-ce.spec -.PHONY: help clean rpm fedora centos fedora-25 fedora-24 centos-7 +.PHONY: help clean rpm fedora centos fedora-26 fedora-25 fedora-24 centos-7 help: ## show make targets @awk 'BEGIN {FS = ":.*?## "} /^[a-zA-Z_-]+:.*?## / {sub("\\\\n",sprintf("\n%22c"," "), $$2);printf " \033[36m%-20s\033[0m %s\n", $$1, $$2}' $(MAKEFILE_LIST) @@ -33,7 +33,7 @@ clean: ## remove build artifacts rpm: fedora centos ## build all rpm packages -fedora: fedora-25 fedora-24 ## build all fedora rpm packages +fedora: fedora-26 fedora-25 fedora-24 ## build all fedora rpm packages centos: centos-7 ## build all centos rpm packages diff --git a/components/packaging/rpm/fedora-26/Dockerfile.x86_64 b/components/packaging/rpm/fedora-26/Dockerfile.x86_64 new file mode 100644 index 0000000000..f9bc1c0848 --- /dev/null +++ b/components/packaging/rpm/fedora-26/Dockerfile.x86_64 @@ -0,0 +1,15 @@ +FROM fedora:26 +RUN dnf -y upgrade +RUN dnf install -y @development-tools fedora-packager +RUN dnf install -y btrfs-progs-devel device-mapper-devel glibc-static libseccomp-devel libselinux-devel libtool-ltdl-devel pkgconfig selinux-policy selinux-policy-devel systemd-devel tar git cmake vim-common +ENV GO_VERSION 1.8.1 +RUN curl -fSL "https://golang.org/dl/go${GO_VERSION}.linux-amd64.tar.gz" | tar xzC /usr/local +ENV PATH $PATH:/usr/local/go/bin +ENV AUTO_GOPATH 1 +ENV GOPATH /go +ENV DOCKER_BUILDTAGS pkcs11 seccomp selinux +ENV RUNC_BUILDTAGS seccomp selinux +RUN mkdir -p /go/src/github.com/docker && mkdir -p /go/src/github.com/opencontainers +COPY docker-ce.spec /root/rpmbuild/SPECS/docker-ce.spec +WORKDIR /root/rpmbuild +ENTRYPOINT ["/bin/rpmbuild"] diff --git a/components/packaging/rpm/fedora-26/docker-ce.spec b/components/packaging/rpm/fedora-26/docker-ce.spec new file mode 100644 index 0000000000..c172718034 --- /dev/null +++ b/components/packaging/rpm/fedora-26/docker-ce.spec @@ -0,0 +1,167 @@ +Name: docker-ce +Version: %{_version} +Release: %{_release}%{?dist} +Summary: The open-source application container engine +Group: Tools/Docker +License: ASL 2.0 +Source0: engine.tgz +Source1: cli.tgz +URL: https://www.docker.com +Vendor: Docker +Packager: Docker + +# DWZ problem with multiple golang binary, see bug +# https://bugzilla.redhat.com/show_bug.cgi?id=995136#c12 +%global _dwz_low_mem_die_limit 0 +%global is_systemd 1 +%global with_selinux 1 + +BuildRequires: pkgconfig(systemd) + +# required packages on install +Requires: /bin/sh +Requires: container-selinux >= 2.9 +Requires: iptables +Requires: libcgroup +Requires: systemd-units +Requires: tar +Requires: xz + +# Resolves: rhbz#1165615 +Requires: device-mapper-libs >= 1.02.90-1 + +# conflicting packages +Conflicts: docker +Conflicts: docker-io +Conflicts: docker-engine-cs + +%description +Docker is an open source project to build, ship and run any application as a +lightweight container. + +Docker containers are both hardware-agnostic and platform-agnostic. This means +they can run anywhere, from your laptop to the largest EC2 compute instance and +everything in between - and they don't require you to use a particular +language, framework or packaging system. That makes them great building blocks +for deploying and scaling web apps, databases, and backend services without +depending on a particular stack or provider. + +%prep +%setup -q -c -n src -a 1 + +%build +export DOCKER_GITCOMMIT=%{_gitcommit} +mkdir -p /go/src/github.com/docker +rm -f /go/src/github.com/docker/cli +ln -s /root/rpmbuild/BUILD/src/cli /go/src/github.com/docker/cli +pushd cli +make VERSION=%{_origversion} GITCOMMIT=%{_gitcommit} dynbinary # cli +popd +pushd engine +TMP_GOPATH="/go" hack/dockerfile/install-binaries.sh runc-dynamic containerd-dynamic proxy-dynamic tini +hack/make.sh dynbinary +popd +# ./man/md2man-all.sh runs outside the build container (if at all), since we don't have go-md2man here + +%check +cli/build/docker -v +engine/bundles/%{_origversion}/dynbinary-daemon/dockerd -v + +%install +# install binary +install -d $RPM_BUILD_ROOT/%{_bindir} +install -p -m 755 cli/build/docker $RPM_BUILD_ROOT/%{_bindir}/docker +install -p -m 755 engine/bundles/%{_origversion}/dynbinary-daemon/dockerd-%{_origversion} $RPM_BUILD_ROOT/%{_bindir}/dockerd + +# install proxy +install -p -m 755 /usr/local/bin/docker-proxy $RPM_BUILD_ROOT/%{_bindir}/docker-proxy + +# install containerd +install -p -m 755 /usr/local/bin/docker-containerd $RPM_BUILD_ROOT/%{_bindir}/docker-containerd +install -p -m 755 /usr/local/bin/docker-containerd-shim $RPM_BUILD_ROOT/%{_bindir}/docker-containerd-shim +install -p -m 755 /usr/local/bin/docker-containerd-ctr $RPM_BUILD_ROOT/%{_bindir}/docker-containerd-ctr + +# install runc +install -p -m 755 /usr/local/bin/docker-runc $RPM_BUILD_ROOT/%{_bindir}/docker-runc + +# install tini +install -p -m 755 /usr/local/bin/docker-init $RPM_BUILD_ROOT/%{_bindir}/docker-init + +# install udev rules +install -d $RPM_BUILD_ROOT/%{_sysconfdir}/udev/rules.d +install -p -m 644 engine/contrib/udev/80-docker.rules $RPM_BUILD_ROOT/%{_sysconfdir}/udev/rules.d/80-docker.rules + +# add init scripts +install -d $RPM_BUILD_ROOT/etc/sysconfig +install -d $RPM_BUILD_ROOT/%{_initddir} +install -d $RPM_BUILD_ROOT/%{_unitdir} +install -p -m 644 engine/contrib/init/systemd/docker.service.rpm $RPM_BUILD_ROOT/%{_unitdir}/docker.service +# add bash, zsh, and fish completions +install -d $RPM_BUILD_ROOT/usr/share/bash-completion/completions +install -d $RPM_BUILD_ROOT/usr/share/zsh/vendor-completions +install -d $RPM_BUILD_ROOT/usr/share/fish/vendor_completions.d +install -p -m 644 engine/contrib/completion/bash/docker $RPM_BUILD_ROOT/usr/share/bash-completion/completions/docker +install -p -m 644 engine/contrib/completion/zsh/_docker $RPM_BUILD_ROOT/usr/share/zsh/vendor-completions/_docker +install -p -m 644 engine/contrib/completion/fish/docker.fish $RPM_BUILD_ROOT/usr/share/fish/vendor_completions.d/docker.fish + +# install manpages +install -d %{buildroot}%{_mandir}/man1 +#install -p -m 644 man/man1/*.1 $RPM_BUILD_ROOT/%{_mandir}/man1 +install -d %{buildroot}%{_mandir}/man5 +#install -p -m 644 man/man5/*.5 $RPM_BUILD_ROOT/%{_mandir}/man5 +install -d %{buildroot}%{_mandir}/man8 +#install -p -m 644 man/man8/*.8 $RPM_BUILD_ROOT/%{_mandir}/man8 + +# add vimfiles +install -d $RPM_BUILD_ROOT/usr/share/vim/vimfiles/doc +install -d $RPM_BUILD_ROOT/usr/share/vim/vimfiles/ftdetect +install -d $RPM_BUILD_ROOT/usr/share/vim/vimfiles/syntax +install -p -m 644 engine/contrib/syntax/vim/doc/dockerfile.txt $RPM_BUILD_ROOT/usr/share/vim/vimfiles/doc/dockerfile.txt +install -p -m 644 engine/contrib/syntax/vim/ftdetect/dockerfile.vim $RPM_BUILD_ROOT/usr/share/vim/vimfiles/ftdetect/dockerfile.vim +install -p -m 644 engine/contrib/syntax/vim/syntax/dockerfile.vim $RPM_BUILD_ROOT/usr/share/vim/vimfiles/syntax/dockerfile.vim + +# add nano +install -d $RPM_BUILD_ROOT/usr/share/nano +install -p -m 644 engine/contrib/syntax/nano/Dockerfile.nanorc $RPM_BUILD_ROOT/usr/share/nano/Dockerfile.nanorc + +# list files owned by the package here +%files +%doc engine/AUTHORS engine/CHANGELOG.md engine/CONTRIBUTING.md engine/LICENSE engine/MAINTAINERS engine/NOTICE engine/README.md +/%{_bindir}/docker +/%{_bindir}/dockerd +/%{_bindir}/docker-containerd +/%{_bindir}/docker-containerd-shim +/%{_bindir}/docker-containerd-ctr +/%{_bindir}/docker-proxy +/%{_bindir}/docker-runc +/%{_bindir}/docker-init +/%{_sysconfdir}/udev/rules.d/80-docker.rules +/%{_unitdir}/docker.service +/usr/share/bash-completion/completions/docker +/usr/share/zsh/vendor-completions/_docker +/usr/share/fish/vendor_completions.d/docker.fish +%doc +#/%{_mandir}/man1/* +#/%{_mandir}/man5/* +#/%{_mandir}/man8/* +/usr/share/vim/vimfiles/doc/dockerfile.txt +/usr/share/vim/vimfiles/ftdetect/dockerfile.vim +/usr/share/vim/vimfiles/syntax/dockerfile.vim +/usr/share/nano/Dockerfile.nanorc + +%post +%systemd_post docker +if ! getent group docker > /dev/null; then + groupadd --system docker +fi + +%preun +%systemd_preun docker + +%postun +%systemd_postun_with_restart docker + +%changelog + +* Wed May 10 2017 17.06.0-dev +- Initial RPM release From 95fa7a2d2036a79620fd33586a9e3c472fd761a9 Mon Sep 17 00:00:00 2001 From: Eli Uriegas Date: Fri, 21 Jul 2017 14:18:42 -0700 Subject: [PATCH 6/9] Update go version, add distro/suite tags Signed-off-by: Eli Uriegas (cherry picked from commit 26b1bd9f3da46b907021ae66d310405057e29634) Signed-off-by: Eli Uriegas --- components/packaging/rpm/fedora-26/Dockerfile.x86_64 | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/components/packaging/rpm/fedora-26/Dockerfile.x86_64 b/components/packaging/rpm/fedora-26/Dockerfile.x86_64 index f9bc1c0848..a804b60631 100644 --- a/components/packaging/rpm/fedora-26/Dockerfile.x86_64 +++ b/components/packaging/rpm/fedora-26/Dockerfile.x86_64 @@ -2,11 +2,13 @@ FROM fedora:26 RUN dnf -y upgrade RUN dnf install -y @development-tools fedora-packager RUN dnf install -y btrfs-progs-devel device-mapper-devel glibc-static libseccomp-devel libselinux-devel libtool-ltdl-devel pkgconfig selinux-policy selinux-policy-devel systemd-devel tar git cmake vim-common -ENV GO_VERSION 1.8.1 +ENV GO_VERSION 1.8.3 +ENV DISTRO fedora +ENV SUITE 26 RUN curl -fSL "https://golang.org/dl/go${GO_VERSION}.linux-amd64.tar.gz" | tar xzC /usr/local -ENV PATH $PATH:/usr/local/go/bin -ENV AUTO_GOPATH 1 ENV GOPATH /go +ENV PATH $PATH:/usr/local/go/bin:$GOPATH/bin +ENV AUTO_GOPATH 1 ENV DOCKER_BUILDTAGS pkcs11 seccomp selinux ENV RUNC_BUILDTAGS seccomp selinux RUN mkdir -p /go/src/github.com/docker && mkdir -p /go/src/github.com/opencontainers From 32709fc76bbff36ebd98481b6a4c3c0260067f83 Mon Sep 17 00:00:00 2001 From: Eli Uriegas Date: Fri, 21 Jul 2017 14:20:39 -0700 Subject: [PATCH 7/9] Update spec to align with new spec files Signed-off-by: Eli Uriegas (cherry picked from commit feb2f647c5570753a607b71bb476028c8d1b4e55) Signed-off-by: Eli Uriegas --- .../packaging/rpm/fedora-26/docker-ce.spec | 98 ++++++++++++++++--- 1 file changed, 82 insertions(+), 16 deletions(-) diff --git a/components/packaging/rpm/fedora-26/docker-ce.spec b/components/packaging/rpm/fedora-26/docker-ce.spec index c172718034..34fc85d0d7 100644 --- a/components/packaging/rpm/fedora-26/docker-ce.spec +++ b/components/packaging/rpm/fedora-26/docker-ce.spec @@ -6,6 +6,7 @@ Group: Tools/Docker License: ASL 2.0 Source0: engine.tgz Source1: cli.tgz +Source2: telemetry_%{_plugin_version}.tgz URL: https://www.docker.com Vendor: Docker Packager: Docker @@ -34,6 +35,12 @@ Requires: device-mapper-libs >= 1.02.90-1 Conflicts: docker Conflicts: docker-io Conflicts: docker-engine-cs +Conflicts: docker-ee + +# Obsolete packages +Obsoletes: docker-ce-selinux +Obsoletes: docker-engine-selinux +Obsoletes: docker-engine %description Docker is an open source project to build, ship and run any application as a @@ -54,14 +61,15 @@ export DOCKER_GITCOMMIT=%{_gitcommit} mkdir -p /go/src/github.com/docker rm -f /go/src/github.com/docker/cli ln -s /root/rpmbuild/BUILD/src/cli /go/src/github.com/docker/cli -pushd cli -make VERSION=%{_origversion} GITCOMMIT=%{_gitcommit} dynbinary # cli +pushd /go/src/github.com/docker/cli +make VERSION=%{_origversion} GITCOMMIT=%{_gitcommit} dynbinary manpages # cli popd pushd engine TMP_GOPATH="/go" hack/dockerfile/install-binaries.sh runc-dynamic containerd-dynamic proxy-dynamic tini hack/make.sh dynbinary popd -# ./man/md2man-all.sh runs outside the build container (if at all), since we don't have go-md2man here +mkdir -p plugin +printf '{"edition_type":"ce","edition_name":"%s","edition_version":"%s"}\n' "${DISTRO}" "%{_version}" > plugin/.plugin-metadata %check cli/build/docker -v @@ -95,22 +103,22 @@ install -p -m 644 engine/contrib/udev/80-docker.rules $RPM_BUILD_ROOT/%{_sysconf install -d $RPM_BUILD_ROOT/etc/sysconfig install -d $RPM_BUILD_ROOT/%{_initddir} install -d $RPM_BUILD_ROOT/%{_unitdir} -install -p -m 644 engine/contrib/init/systemd/docker.service.rpm $RPM_BUILD_ROOT/%{_unitdir}/docker.service +install -p -m 644 /systemd/docker.service $RPM_BUILD_ROOT/%{_unitdir}/docker.service # add bash, zsh, and fish completions install -d $RPM_BUILD_ROOT/usr/share/bash-completion/completions install -d $RPM_BUILD_ROOT/usr/share/zsh/vendor-completions install -d $RPM_BUILD_ROOT/usr/share/fish/vendor_completions.d -install -p -m 644 engine/contrib/completion/bash/docker $RPM_BUILD_ROOT/usr/share/bash-completion/completions/docker -install -p -m 644 engine/contrib/completion/zsh/_docker $RPM_BUILD_ROOT/usr/share/zsh/vendor-completions/_docker -install -p -m 644 engine/contrib/completion/fish/docker.fish $RPM_BUILD_ROOT/usr/share/fish/vendor_completions.d/docker.fish +install -p -m 644 cli/contrib/completion/bash/docker $RPM_BUILD_ROOT/usr/share/bash-completion/completions/docker +install -p -m 644 cli/contrib/completion/zsh/_docker $RPM_BUILD_ROOT/usr/share/zsh/vendor-completions/_docker +install -p -m 644 cli/contrib/completion/fish/docker.fish $RPM_BUILD_ROOT/usr/share/fish/vendor_completions.d/docker.fish # install manpages install -d %{buildroot}%{_mandir}/man1 -#install -p -m 644 man/man1/*.1 $RPM_BUILD_ROOT/%{_mandir}/man1 +install -p -m 644 cli/man/man1/*.1 $RPM_BUILD_ROOT/%{_mandir}/man1 install -d %{buildroot}%{_mandir}/man5 -#install -p -m 644 man/man5/*.5 $RPM_BUILD_ROOT/%{_mandir}/man5 +install -p -m 644 cli/man/man5/*.5 $RPM_BUILD_ROOT/%{_mandir}/man5 install -d %{buildroot}%{_mandir}/man8 -#install -p -m 644 man/man8/*.8 $RPM_BUILD_ROOT/%{_mandir}/man8 +install -p -m 644 cli/man/man8/*.8 $RPM_BUILD_ROOT/%{_mandir}/man8 # add vimfiles install -d $RPM_BUILD_ROOT/usr/share/vim/vimfiles/doc @@ -124,9 +132,24 @@ install -p -m 644 engine/contrib/syntax/vim/syntax/dockerfile.vim $RPM_BUILD_ROO install -d $RPM_BUILD_ROOT/usr/share/nano install -p -m 644 engine/contrib/syntax/nano/Dockerfile.nanorc $RPM_BUILD_ROOT/usr/share/nano/Dockerfile.nanorc +mkdir -p build-docs +for engine_file in AUTHORS CHANGELOG.md CONTRIBUTING.md LICENSE MAINTAINERS NOTICE README.md; do + cp "engine/$engine_file" "build-docs/engine-$engine_file" +done +for cli_file in LICENSE MAINTAINERS NOTICE README.md; do + cp "cli/$cli_file" "build-docs/cli-$cli_file" +done + +# add telemetry plugin +install -d $RPM_BUILD_ROOT/var/lib/docker/plugins/tar +install -p -m 644 %{SOURCE2} $RPM_BUILD_ROOT/var/lib/docker/plugins/tar +install -p -m 644 plugin/.plugin-metadata $RPM_BUILD_ROOT/var/lib/docker/plugins/tar +install -p -m 755 /common/load-telemetry-plugin $RPM_BUILD_ROOT/%{_bindir}/load-telemetry-plugin + # list files owned by the package here %files -%doc engine/AUTHORS engine/CHANGELOG.md engine/CONTRIBUTING.md engine/LICENSE engine/MAINTAINERS engine/NOTICE engine/README.md +%doc build-docs/engine-AUTHORS build-docs/engine-CHANGELOG.md build-docs/engine-CONTRIBUTING.md build-docs/engine-LICENSE build-docs/engine-MAINTAINERS build-docs/engine-NOTICE build-docs/engine-README.md +%doc build-docs/cli-LICENSE build-docs/cli-MAINTAINERS build-docs/cli-NOTICE build-docs/cli-README.md /%{_bindir}/docker /%{_bindir}/dockerd /%{_bindir}/docker-containerd @@ -141,13 +164,30 @@ install -p -m 644 engine/contrib/syntax/nano/Dockerfile.nanorc $RPM_BUILD_ROOT/u /usr/share/zsh/vendor-completions/_docker /usr/share/fish/vendor_completions.d/docker.fish %doc -#/%{_mandir}/man1/* -#/%{_mandir}/man5/* -#/%{_mandir}/man8/* +/%{_mandir}/man1/* +/%{_mandir}/man5/* +/%{_mandir}/man8/* /usr/share/vim/vimfiles/doc/dockerfile.txt /usr/share/vim/vimfiles/ftdetect/dockerfile.vim /usr/share/vim/vimfiles/syntax/dockerfile.vim /usr/share/nano/Dockerfile.nanorc +/var/lib/docker/plugins/tar/telemetry_%{_plugin_version}.tgz +/var/lib/docker/plugins/tar/.plugin-metadata +/usr/bin/load-telemetry-plugin + +%pre +if [ $1 -gt 0 ] ; then + # package upgrade scenario, before new files are installed + + # clear any old state + rm -f %{_localstatedir}/lib/rpm-state/docker-is-active > /dev/null 2>&1 || : + + # check if docker service is running + if systemctl is-active docker > /dev/null 2>&1; then + systemctl stop docker > /dev/null 2>&1 || : + touch %{_localstatedir}/lib/rpm-state/docker-is-active > /dev/null 2>&1 || : + fi +fi %post %systemd_post docker @@ -161,7 +201,33 @@ fi %postun %systemd_postun_with_restart docker +%posttrans +if [ $1 -ge 0 ] ; then + # package upgrade scenario, after new files are installed + + # check if docker was running before upgrade + if [ -f %{_localstatedir}/lib/rpm-state/docker-is-active ]; then + systemctl start docker > /dev/null 2>&1 || : + rm -f %{_localstatedir}/lib/rpm-state/docker-is-active > /dev/null 2>&1 || : + fi +fi + %changelog -* Wed May 10 2017 17.06.0-dev -- Initial RPM release +* Wed Jun 21 2017 17.06.0-ce +- release docker-ce 17.06.0-ce + +* Mon Jun 19 2017 17.06.0-ce-rc5 +- release docker-ce 17.06.0-ce-rc5 + +* Thu Jun 15 2017 17.06.0-ce-rc4 +- release docker-ce 17.06.0-ce-rc4 + +* Tue Jun 13 2017 17.06.0-ce-rc3 +- release docker-ce 17.06.0-ce-rc3 + +* Wed Jun 07 2017 17.06.0-ce-rc2 +- release docker-ce 17.06.0-ce-rc2 + +* Mon May 29 2017 17.06.0-ce-rc1 +- release docker-ce 17.06.0-ce-rc1 From 0ff00e73c9377b17a6411dda43cf96ea070ebf06 Mon Sep 17 00:00:00 2001 From: Eli Uriegas Date: Fri, 21 Jul 2017 13:35:20 -0700 Subject: [PATCH 8/9] End Ubuntu 16.10 (Yakkety) support Ubuntu 16.10 (Yakkety) reached it's "End of Life" on July 20, 2017: http://fridge.ubuntu.com/2017/07/20/ubuntu-16-10-yakkety-yak-end-of-life-reached-on-july-20-2017/ As such we are removing support for the distribution for future versions of Docker packages. Signed-off-by: Eli Uriegas (cherry picked from commit 36cc14cd480879391eeb9f470417698618f4cdb3) Signed-off-by: Eli Uriegas --- components/packaging/README.md | 1 - components/packaging/deb/Makefile | 17 +---------- .../deb/ubuntu-yakkety/Dockerfile.armv7l | 28 ------------------- .../deb/ubuntu-yakkety/Dockerfile.s390x | 28 ------------------- .../deb/ubuntu-yakkety/Dockerfile.x86_64 | 28 ------------------- .../deb/ubuntu-zesty/Dockerfile.armv7l | 2 +- 6 files changed, 2 insertions(+), 102 deletions(-) delete mode 100644 components/packaging/deb/ubuntu-yakkety/Dockerfile.armv7l delete mode 100644 components/packaging/deb/ubuntu-yakkety/Dockerfile.s390x delete mode 100644 components/packaging/deb/ubuntu-yakkety/Dockerfile.x86_64 diff --git a/components/packaging/README.md b/components/packaging/README.md index 1acf87360e..54a3ec0f81 100644 --- a/components/packaging/README.md +++ b/components/packaging/README.md @@ -8,7 +8,6 @@ This repository is solely maintained by Docker, Inc. The scripts will build for this list of packages types: * DEB packages for Ubuntu 17.04 Zesty -* DEB packages for Ubuntu 16.10 Yakkety * DEB packages for Ubuntu 16.04 Xenial * DEB packages for Ubuntu 14.04 Trusty * DEB packages for Debian 9 Stretch diff --git a/components/packaging/deb/Makefile b/components/packaging/deb/Makefile index 7923da53ee..10754515d8 100644 --- a/components/packaging/deb/Makefile +++ b/components/packaging/deb/Makefile @@ -19,7 +19,7 @@ clean: ## remove build artifacts deb: ubuntu debian raspbian ## build all deb packages -ubuntu: ubuntu-zesty ubuntu-yakkety ubuntu-xenial ubuntu-trusty ## build all ubuntu deb packages +ubuntu: ubuntu-zesty ubuntu-xenial ubuntu-trusty ## build all ubuntu deb packages debian: debian-stretch debian-wheezy debian-jessie ## build all debian deb packages @@ -49,21 +49,6 @@ ubuntu-trusty: ## build ubuntu trusty deb packages debbuild-$@/$(ARCH) $(CHOWN) -R $(shell id -u):$(shell id -g) debbuild/$@ -ubuntu-yakkety: ## build ubuntu yakkety deb packages - docker build -t debbuild-$@/$(ARCH) -f $(CURDIR)/$@/Dockerfile.$(ARCH) . - docker run --rm -i \ - -e VERSION=$(VERSION) \ - -e DOCKER_GITCOMMIT=$(GITCOMMIT) \ - -e PLUGIN_VERSION=$(PLUGIN_VERSION) \ - -v $(CURDIR)/debbuild/$@:/build \ - -v $(ENGINE_DIR):/engine \ - -v $(PLUGIN_DIR):/plugin \ - -v $(CLI_DIR):/cli \ - -v $(CURDIR)/systemd:/root/build-deb/systemd \ - -v $(COMMON_DIR):/root/build-deb/common \ - debbuild-$@/$(ARCH) - $(CHOWN) -R $(shell id -u):$(shell id -g) debbuild/$@ - ubuntu-zesty: ## build ubuntu zesty deb packages docker build -t debbuild-$@/$(ARCH) -f $(CURDIR)/$@/Dockerfile.$(ARCH) . docker run --rm -i \ diff --git a/components/packaging/deb/ubuntu-yakkety/Dockerfile.armv7l b/components/packaging/deb/ubuntu-yakkety/Dockerfile.armv7l deleted file mode 100644 index 4cb50aa32c..0000000000 --- a/components/packaging/deb/ubuntu-yakkety/Dockerfile.armv7l +++ /dev/null @@ -1,28 +0,0 @@ -FROM armhf/ubuntu:yakkety - -RUN apt-get update && apt-get install -y apparmor bash-completion btrfs-tools build-essential cmake curl ca-certificates debhelper dh-apparmor dh-systemd git libapparmor-dev libdevmapper-dev libltdl-dev libseccomp-dev pkg-config vim-common libsystemd-dev --no-install-recommends && rm -rf /var/lib/apt/lists/* - -ENV GO_VERSION 1.8.3 -RUN curl -fSL "https://golang.org/dl/go${GO_VERSION}.linux-armv6l.tar.gz" | tar xzC /usr/local -ENV GOPATH /go -ENV PATH $PATH:/usr/local/go/bin:$GOPATH/bin -ENV DOCKER_BUILDTAGS apparmor pkcs11 selinux -ENV RUNC_BUILDTAGS apparmor selinux - -COPY common/ /root/build-deb/debian -COPY build-deb /root/build-deb/build-deb - -RUN mkdir -p /go/src/github.com/docker && \ - mkdir -p /go/src/github.com/opencontainers && \ - ln -snf /engine /root/build-deb/engine && \ - ln -snf /cli /root/build-deb/cli && \ - ln -snf /root/build-deb/engine /go/src/github.com/docker/docker && \ - ln -snf /root/build-deb/cli /go/src/github.com/docker/cli - - -ENV DISTRO ubuntu -ENV SUITE yakkety - -WORKDIR /root/build-deb - -ENTRYPOINT ["/root/build-deb/build-deb"] diff --git a/components/packaging/deb/ubuntu-yakkety/Dockerfile.s390x b/components/packaging/deb/ubuntu-yakkety/Dockerfile.s390x deleted file mode 100644 index d011b380c8..0000000000 --- a/components/packaging/deb/ubuntu-yakkety/Dockerfile.s390x +++ /dev/null @@ -1,28 +0,0 @@ -FROM s390x/ubuntu:yakkety - -RUN apt-get update && apt-get install -y apparmor bash-completion btrfs-tools build-essential cmake curl ca-certificates debhelper dh-apparmor dh-systemd git libapparmor-dev libdevmapper-dev libltdl-dev libseccomp-dev pkg-config vim-common libsystemd-dev --no-install-recommends && rm -rf /var/lib/apt/lists/* - -ENV GO_VERSION 1.8.3 -RUN curl -fSL "https://golang.org/dl/go${GO_VERSION}.linux-s390x.tar.gz" | tar xzC /usr/local -ENV GOPATH /go -ENV PATH $PATH:/usr/local/go/bin:$GOPATH/bin -ENV DOCKER_BUILDTAGS apparmor pkcs11 seccomp selinux -ENV RUNC_BUILDTAGS apparmor seccomp selinux - -COPY common/ /root/build-deb/debian -COPY build-deb /root/build-deb/build-deb - -RUN mkdir -p /go/src/github.com/docker && \ - mkdir -p /go/src/github.com/opencontainers && \ - ln -snf /engine /root/build-deb/engine && \ - ln -snf /cli /root/build-deb/cli && \ - ln -snf /root/build-deb/engine /go/src/github.com/docker/docker && \ - ln -snf /root/build-deb/cli /go/src/github.com/docker/cli - - -ENV DISTRO ubuntu -ENV SUITE yakkety - -WORKDIR /root/build-deb - -ENTRYPOINT ["/root/build-deb/build-deb"] diff --git a/components/packaging/deb/ubuntu-yakkety/Dockerfile.x86_64 b/components/packaging/deb/ubuntu-yakkety/Dockerfile.x86_64 deleted file mode 100644 index 31b53256bc..0000000000 --- a/components/packaging/deb/ubuntu-yakkety/Dockerfile.x86_64 +++ /dev/null @@ -1,28 +0,0 @@ -FROM ubuntu:yakkety - -RUN apt-get update && apt-get install -y apparmor bash-completion btrfs-tools build-essential cmake curl ca-certificates debhelper dh-apparmor dh-systemd git libapparmor-dev libdevmapper-dev libltdl-dev libseccomp-dev pkg-config vim-common libsystemd-dev --no-install-recommends && rm -rf /var/lib/apt/lists/* - -ENV GO_VERSION 1.8.3 -RUN curl -fSL "https://golang.org/dl/go${GO_VERSION}.linux-amd64.tar.gz" | tar xzC /usr/local -ENV GOPATH /go -ENV PATH $PATH:/usr/local/go/bin:$GOPATH/bin -ENV DOCKER_BUILDTAGS apparmor pkcs11 selinux -ENV RUNC_BUILDTAGS apparmor selinux - -COPY common/ /root/build-deb/debian -COPY build-deb /root/build-deb/build-deb - -RUN mkdir -p /go/src/github.com/docker && \ - mkdir -p /go/src/github.com/opencontainers && \ - ln -snf /engine /root/build-deb/engine && \ - ln -snf /cli /root/build-deb/cli && \ - ln -snf /root/build-deb/engine /go/src/github.com/docker/docker && \ - ln -snf /root/build-deb/cli /go/src/github.com/docker/cli - - -ENV DISTRO ubuntu -ENV SUITE yakkety - -WORKDIR /root/build-deb - -ENTRYPOINT ["/root/build-deb/build-deb"] diff --git a/components/packaging/deb/ubuntu-zesty/Dockerfile.armv7l b/components/packaging/deb/ubuntu-zesty/Dockerfile.armv7l index c54495016b..670e8f1d6c 100644 --- a/components/packaging/deb/ubuntu-zesty/Dockerfile.armv7l +++ b/components/packaging/deb/ubuntu-zesty/Dockerfile.armv7l @@ -1,4 +1,4 @@ -FROM armhf/ubuntu:yakkety +FROM armhf/ubuntu:zesty RUN apt-get update && apt-get install -y apparmor bash-completion btrfs-tools build-essential cmake curl ca-certificates debhelper dh-apparmor dh-systemd git libapparmor-dev libdevmapper-dev libltdl-dev libseccomp-dev pkg-config vim-common libsystemd-dev --no-install-recommends && rm -rf /var/lib/apt/lists/* From 83e8a29ede05c399286acb400eb08a6bdf288cbb Mon Sep 17 00:00:00 2001 From: Eli Uriegas Date: Tue, 25 Jul 2017 11:26:40 -0700 Subject: [PATCH 9/9] Removes telemetry mentions from Fedora 26 Signed-off-by: Eli Uriegas (cherry picked from commit a8c7e75bfd263b2f7445b06f749aba13aaeac789) Signed-off-by: Eli Uriegas --- components/packaging/rpm/fedora-26/docker-ce.spec | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/components/packaging/rpm/fedora-26/docker-ce.spec b/components/packaging/rpm/fedora-26/docker-ce.spec index 34fc85d0d7..a78bb2038f 100644 --- a/components/packaging/rpm/fedora-26/docker-ce.spec +++ b/components/packaging/rpm/fedora-26/docker-ce.spec @@ -6,7 +6,6 @@ Group: Tools/Docker License: ASL 2.0 Source0: engine.tgz Source1: cli.tgz -Source2: telemetry_%{_plugin_version}.tgz URL: https://www.docker.com Vendor: Docker Packager: Docker @@ -140,12 +139,6 @@ for cli_file in LICENSE MAINTAINERS NOTICE README.md; do cp "cli/$cli_file" "build-docs/cli-$cli_file" done -# add telemetry plugin -install -d $RPM_BUILD_ROOT/var/lib/docker/plugins/tar -install -p -m 644 %{SOURCE2} $RPM_BUILD_ROOT/var/lib/docker/plugins/tar -install -p -m 644 plugin/.plugin-metadata $RPM_BUILD_ROOT/var/lib/docker/plugins/tar -install -p -m 755 /common/load-telemetry-plugin $RPM_BUILD_ROOT/%{_bindir}/load-telemetry-plugin - # list files owned by the package here %files %doc build-docs/engine-AUTHORS build-docs/engine-CHANGELOG.md build-docs/engine-CONTRIBUTING.md build-docs/engine-LICENSE build-docs/engine-MAINTAINERS build-docs/engine-NOTICE build-docs/engine-README.md @@ -171,9 +164,6 @@ install -p -m 755 /common/load-telemetry-plugin $RPM_BUILD_ROOT/%{_bindir}/load- /usr/share/vim/vimfiles/ftdetect/dockerfile.vim /usr/share/vim/vimfiles/syntax/dockerfile.vim /usr/share/nano/Dockerfile.nanorc -/var/lib/docker/plugins/tar/telemetry_%{_plugin_version}.tgz -/var/lib/docker/plugins/tar/.plugin-metadata -/usr/bin/load-telemetry-plugin %pre if [ $1 -gt 0 ] ; then