From f462cfc7cf01448bde29935997507462dee2699f Mon Sep 17 00:00:00 2001 From: Andrew Hsu Date: Wed, 12 Jul 2017 16:09:15 +0000 Subject: [PATCH 1/3] 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 2/3] 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 3/3] 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