From cc4d27dd59f8759fc42ab97c7955435b29574afa Mon Sep 17 00:00:00 2001 From: Roberto Gandolfo Hashioka Date: Wed, 24 May 2017 08:33:49 -0700 Subject: [PATCH 01/12] Added the metrics plugin to the RPM/DEB packages - centos - fedora - ubuntu - debian Signed-off-by: Roberto Gandolfo Hashioka Upstream-commit: ceac22bf2240df483b1d3bd3a19ac681e665f910 Component: packaging --- 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 3d16fc476e..3b61d0978d 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 LDFLAGS='' make -C cli 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 264d26c86a0173651a318174eb1040bcbde9993b Mon Sep 17 00:00:00 2001 From: Eli Uriegas Date: Tue, 20 Jun 2017 12:54:03 -0700 Subject: [PATCH 02/12] Add ubuntu-xenial aarch64 Dockerfile Signed-off-by: Eli Uriegas Upstream-commit: 94cbc76b701b8b108f6a337b1695bd664f441bdc Component: packaging --- .../deb/ubuntu-xenial/Dockerfile.aarch64 | 36 +++++++++++++++++++ components/packaging/detect_alpine_image | 2 ++ 2 files changed, 38 insertions(+) create mode 100644 components/packaging/deb/ubuntu-xenial/Dockerfile.aarch64 diff --git a/components/packaging/deb/ubuntu-xenial/Dockerfile.aarch64 b/components/packaging/deb/ubuntu-xenial/Dockerfile.aarch64 new file mode 100644 index 0000000000..fd2ca681d2 --- /dev/null +++ b/components/packaging/deb/ubuntu-xenial/Dockerfile.aarch64 @@ -0,0 +1,36 @@ +FROM aarch64/ubuntu:xenial + +RUN apt-get update && apt-get install -y golang-go 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/* + +# Install Go +# We don't have official binary golang 1.7.5 tarballs for ARM64, eigher for Go or +# bootstrap, so we use golang-go (1.6) as bootstrap to build Go from source code. +# We don't use the official ARMv6 released binaries as a GOROOT_BOOTSTRAP, because +# not all ARM64 platforms support 32-bit mode. 32-bit mode is optional for ARMv8. +ENV GO_VERSION 1.8.3 +RUN mkdir /usr/src/go && curl -fsSL https://golang.org/dl/go${GO_VERSION}.src.tar.gz | tar -v -C /usr/src/go -xz --strip-components=1 \ + && cd /usr/src/go/src \ + && GOOS=linux GOARCH=arm64 GOROOT_BOOTSTRAP="$(go env GOROOT)" ./make.bash + +ENV GOPATH /go +ENV PATH /go/bin:/usr/src/go/bin:$PATH +ENV DOCKER_BUILDTAGS apparmor 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 xenial + +WORKDIR /root/build-deb + +ENTRYPOINT ["/root/build-deb/build-deb"] diff --git a/components/packaging/detect_alpine_image b/components/packaging/detect_alpine_image index 282a49f9b8..2b59ebac7d 100755 --- a/components/packaging/detect_alpine_image +++ b/components/packaging/detect_alpine_image @@ -9,6 +9,8 @@ elif [ "$arch" = "armv7l" ]; then img="armhf/alpine" elif [ "$arch" = "s390x" ]; then img="s390x/alpine" +elif [ "$arch" = "aarch64" ]; then + img="aarch64/alpine" else echo "Architecture $(arch) not supported" exit 1; From e7e7faca03a2a650ba83cbd4c5af68ce03667f43 Mon Sep 17 00:00:00 2001 From: Eli Uriegas Date: Thu, 20 Jul 2017 17:11:04 -0700 Subject: [PATCH 03/12] Have docker cli be compiled in GOPATH manpage generation was failing for docker cli when being run under aarch64: https://ci.qa.aws.dckr.io/job/docker/job/release-packaging/view/change-requests/job/PR-41/5/execution/node/360/log/ The way to remedy this is to compile the cli and the manpages while in the GOPATH so that dependencies found in the vendor folder are discovered by the go build tools. Signed-off-by: Eli Uriegas Upstream-commit: b325a0eb0216e151be5d3e1ab9e48db07f53c6c5 Component: packaging --- components/packaging/deb/common/rules | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/packaging/deb/common/rules b/components/packaging/deb/common/rules index 3d16fc476e..2f3cee289f 100644 --- a/components/packaging/deb/common/rules +++ b/components/packaging/deb/common/rules @@ -12,7 +12,7 @@ override_dh_gencontrol: override_dh_auto_build: cd engine && ./hack/make.sh dynbinary - LDFLAGS='' make -C cli VERSION=$(VERSION) GITCOMMIT=$(DOCKER_GITCOMMIT) dynbinary manpages + LDFLAGS='' make -C /go/src/github.com/docker/cli VERSION=$(VERSION) GITCOMMIT=$(DOCKER_GITCOMMIT) dynbinary manpages override_dh_auto_test: ./engine/bundles/$(BUNDLE_VERSION)/dynbinary-daemon/dockerd -v From 2e0a8a6dee7ab6600366ae6e3c82574f2c42c02b Mon Sep 17 00:00:00 2001 From: Eli Uriegas Date: Fri, 21 Jul 2017 10:44:34 -0700 Subject: [PATCH 04/12] Change make -C to a cd command Tried out make -C in this scenario and it did not seem to function correctly, changed to cd. Signed-off-by: Eli Uriegas Upstream-commit: 3a548f8815d5308b197abea1e39f0a0a4939c4f2 Component: packaging --- components/packaging/deb/common/rules | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/packaging/deb/common/rules b/components/packaging/deb/common/rules index 2f3cee289f..e2962bb78e 100644 --- a/components/packaging/deb/common/rules +++ b/components/packaging/deb/common/rules @@ -12,7 +12,7 @@ override_dh_gencontrol: override_dh_auto_build: cd engine && ./hack/make.sh dynbinary - LDFLAGS='' make -C /go/src/github.com/docker/cli VERSION=$(VERSION) GITCOMMIT=$(DOCKER_GITCOMMIT) dynbinary manpages + cd /go/src/github.com/docker/cli && LDFLAGS='' make VERSION=$(VERSION) GITCOMMIT=$(DOCKER_GITCOMMIT) dynbinary manpages override_dh_auto_test: ./engine/bundles/$(BUNDLE_VERSION)/dynbinary-daemon/dockerd -v From f462cfc7cf01448bde29935997507462dee2699f Mon Sep 17 00:00:00 2001 From: Andrew Hsu Date: Wed, 12 Jul 2017 16:09:15 +0000 Subject: [PATCH 05/12] build fedora 26 packages Just released: https://docs.fedoraproject.org/en-US/Fedora/26/html/Release_Notes/ Signed-off-by: Andrew Hsu Upstream-commit: 412824b465d8334278bb9c02f0a5ee3d294826fd Component: packaging --- components/packaging/Makefile | 2 +- components/packaging/rpm/Makefile | 9 +- .../packaging/rpm/fedora-26/Dockerfile.x86_64 | 15 ++ .../packaging/rpm/fedora-26/docker-ce.spec | 167 ++++++++++++++++++ 4 files changed, 190 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 a48ba86a99..3cab166ae0 100644 --- a/components/packaging/Makefile +++ b/components/packaging/Makefile @@ -15,7 +15,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) PLUGIN_VERSION=$(PLUGIN_VERSION) ENGINE_DIR=$(ENGINE_DIR) CLI_DIR=$(CLI_DIR) $${p}; \ diff --git a/components/packaging/rpm/Makefile b/components/packaging/rpm/Makefile index dd489f376f..f720177786 100644 --- a/components/packaging/rpm/Makefile +++ b/components/packaging/rpm/Makefile @@ -28,7 +28,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) @@ -39,10 +39,15 @@ 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 +fedora-26: rpmbuild/SOURCES/engine.tgz rpmbuild/SOURCES/cli.tgz rpmbuild/SOURCES/telemetry.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-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) 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 da96ff7f66a3e70faffafd1aac7cec14b76e8f8f Mon Sep 17 00:00:00 2001 From: Eli Uriegas Date: Fri, 21 Jul 2017 14:18:42 -0700 Subject: [PATCH 06/12] Update go version, add distro/suite tags Signed-off-by: Eli Uriegas Upstream-commit: 26b1bd9f3da46b907021ae66d310405057e29634 Component: packaging --- 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 658d91b7b5b80d9e0723b89870f5eb6dacf95bda Mon Sep 17 00:00:00 2001 From: Eli Uriegas Date: Fri, 21 Jul 2017 14:20:39 -0700 Subject: [PATCH 07/12] Update spec to align with new spec files Signed-off-by: Eli Uriegas Upstream-commit: feb2f647c5570753a607b71bb476028c8d1b4e55 Component: packaging --- .../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 29f596dcad4c6c636fbfe9839d2da5c104281a64 Mon Sep 17 00:00:00 2001 From: Eli Uriegas Date: Fri, 21 Jul 2017 13:35:20 -0700 Subject: [PATCH 08/12] 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 Upstream-commit: 36cc14cd480879391eeb9f470417698618f4cdb3 Component: packaging --- components/packaging/Makefile | 2 +- components/packaging/README.md | 1 - components/packaging/deb/Makefile | 19 ++----------- .../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 +- 7 files changed, 4 insertions(+), 104 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/Makefile b/components/packaging/Makefile index a48ba86a99..858c59abf5 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 deb: ## build deb packages $(MAKE) -C $@ metrics_plugin for p in $(DOCKER_BUILD_PKGS); do \ 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 bdc0dfd86c..045acbfeb4 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 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) @@ -23,7 +23,7 @@ clean: ## remove build artifacts deb: ubuntu debian ## 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 @@ -63,21 +63,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 0c686df10548a7e594f5be24aebbb5f96b3390b4 Mon Sep 17 00:00:00 2001 From: Stefan Scherer Date: Mon, 5 Jun 2017 18:28:12 +0200 Subject: [PATCH 09/12] Add raspbian deb packages Upstream-commit: 1c61fdcafc4f6fa0e41c267cd857d0b60d3a2dbd Component: packaging --- 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 2293c613cd..251d42f0a4 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-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 045acbfeb4..f81ff0b615 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-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-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) @@ -122,3 +124,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 b58d0f8839f38498dd08cdedb3d939e5ef5fe5fe Mon Sep 17 00:00:00 2001 From: Eli Uriegas Date: Mon, 24 Jul 2017 15:11:11 -0700 Subject: [PATCH 10/12] Tell build-deb to throw up errors Signed-off-by: Eli Uriegas Upstream-commit: 3618e4aa262f154f79c804752d69110772e636a3 Component: packaging --- 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 5230175f79e1f6ac010365084caf91408c963488 Mon Sep 17 00:00:00 2001 From: Eli Uriegas Date: Mon, 24 Jul 2017 15:52:49 -0700 Subject: [PATCH 11/12] Revert "Added the metrics plugin to the RPM/DEB packages" This reverts commit ceac22bf2240df483b1d3bd3a19ac681e665f910. Signed-off-by: Eli Uriegas Upstream-commit: bda73f99e455bd3f041ccc843f094186ca8b8623 Component: packaging --- components/packaging/Makefile | 8 +-- .../packaging/common/load-telemetry-plugin | 66 ------------------- components/packaging/deb/Makefile | 34 ---------- components/packaging/deb/build-deb | 2 +- .../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 | 28 ++------ .../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 - 13 files changed, 10 insertions(+), 178 deletions(-) delete mode 100755 components/packaging/common/load-telemetry-plugin diff --git a/components/packaging/Makefile b/components/packaging/Makefile index 251d42f0a4..0545e2feaf 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-26 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 f81ff0b615..10754515d8 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/$@ @@ -70,13 +54,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/$@ @@ -85,13 +66,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/$@ @@ -100,13 +78,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/$@ @@ -115,13 +90,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/$@ @@ -130,13 +102,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/$@ @@ -145,12 +114,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/build-deb b/components/packaging/deb/build-deb index 2ca570f07f..955b6b585a 100755 --- a/components/packaging/deb/build-deb +++ b/components/packaging/deb/build-deb @@ -53,7 +53,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" 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 f720177786..d894c950e1 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,22 +37,22 @@ fedora: fedora-26 fedora-25 fedora-24 ## build all fedora rpm packages centos: centos-7 ## build all centos rpm packages -fedora-26: rpmbuild/SOURCES/engine.tgz rpmbuild/SOURCES/cli.tgz rpmbuild/SOURCES/telemetry.tgz ## build fedora-26 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-25: rpmbuild/SOURCES/engine.tgz rpmbuild/SOURCES/cli.tgz rpmbuild/SOURCES/telemetry.tgz ## build fedora-25 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 -fedora-24: rpmbuild/SOURCES/engine.tgz rpmbuild/SOURCES/cli.tgz rpmbuild/SOURCES/telemetry.tgz ## build fedora-24 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 rpmbuild/SOURCES/telemetry.tgz ## build centos-7 rpm packages +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 @@ -78,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 4128b146dc6423042337208be3dfd26dac47a7fe Mon Sep 17 00:00:00 2001 From: Eli Uriegas Date: Tue, 25 Jul 2017 11:26:40 -0700 Subject: [PATCH 12/12] Removes telemetry mentions from Fedora 26 Signed-off-by: Eli Uriegas Upstream-commit: a8c7e75bfd263b2f7445b06f749aba13aaeac789 Component: packaging --- 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