diff --git a/components/packaging/deb/Makefile b/components/packaging/deb/Makefile index 0afa9a3ec0..d0bedb8a67 100644 --- a/components/packaging/deb/Makefile +++ b/components/packaging/deb/Makefile @@ -31,6 +31,7 @@ ubuntu-xenial: ## build ubuntu xenial deb packages -v $(CURDIR)/debbuild/$@:/build \ -v $(ENGINE_DIR):/engine \ -v $(CLI_DIR):/cli \ + -v $(CURDIR)/systemd:/root/build-deb/systemd \ debbuild-$@/$(ARCH) $(CHOWN) -R $(shell id -u):$(shell id -g) debbuild/$@ @@ -42,6 +43,7 @@ ubuntu-trusty: ## build ubuntu trusty deb packages -v $(CURDIR)/debbuild/$@:/build \ -v $(ENGINE_DIR):/engine \ -v $(CLI_DIR):/cli \ + -v $(CURDIR)/systemd:/root/build-deb/systemd \ debbuild-$@/$(ARCH) $(CHOWN) -R $(shell id -u):$(shell id -g) debbuild/$@ @@ -53,6 +55,7 @@ ubuntu-yakkety: ## build ubuntu yakkety deb packages -v $(CURDIR)/debbuild/$@:/build \ -v $(ENGINE_DIR):/engine \ -v $(CLI_DIR):/cli \ + -v $(CURDIR)/systemd:/root/build-deb/systemd \ debbuild-$@/$(ARCH) $(CHOWN) -R $(shell id -u):$(shell id -g) debbuild/$@ @@ -64,6 +67,7 @@ ubuntu-zesty: ## build ubuntu zesty deb packages -v $(CURDIR)/debbuild/$@:/build \ -v $(ENGINE_DIR):/engine \ -v $(CLI_DIR):/cli \ + -v $(CURDIR)/systemd:/root/build-deb/systemd \ debbuild-$@/$(ARCH) $(CHOWN) -R $(shell id -u):$(shell id -g) debbuild/$@ @@ -75,6 +79,7 @@ debian-jessie: ## build debian jessie deb packages -v $(CURDIR)/debbuild/$@:/build \ -v $(ENGINE_DIR):/engine \ -v $(CLI_DIR):/cli \ + -v $(CURDIR)/systemd:/root/build-deb/systemd \ debbuild-$@/$(ARCH) $(CHOWN) -R $(shell id -u):$(shell id -g) debbuild/$@ @@ -86,6 +91,7 @@ debian-stretch: ## build debian stretch deb packages -v $(CURDIR)/debbuild/$@:/build \ -v $(ENGINE_DIR):/engine \ -v $(CLI_DIR):/cli \ + -v $(CURDIR)/systemd:/root/build-deb/systemd \ debbuild-$@/$(ARCH) $(CHOWN) -R $(shell id -u):$(shell id -g) debbuild/$@ @@ -97,5 +103,6 @@ debian-wheezy: ## build debian wheezy deb packages -v $(CURDIR)/debbuild/$@:/build \ -v $(ENGINE_DIR):/engine \ -v $(CLI_DIR):/cli \ + -v $(CURDIR)/systemd:/root/build-deb/systemd \ debbuild-$@/$(ARCH) $(CHOWN) -R $(shell id -u):$(shell id -g) debbuild/$@ diff --git a/components/packaging/deb/common/docker-ce.install b/components/packaging/deb/common/docker-ce.install index baa8cac2dc..90d0b29179 100644 --- a/components/packaging/deb/common/docker-ce.install +++ b/components/packaging/deb/common/docker-ce.install @@ -5,8 +5,8 @@ engine/contrib/*-integration usr/share/docker-ce/contrib/ engine/contrib/check-config.sh usr/share/docker-ce/contrib/ engine/contrib/completion/fish/docker.fish usr/share/fish/vendor_completions.d/ engine/contrib/completion/zsh/_docker usr/share/zsh/vendor-completions/ -engine/contrib/init/systemd/docker.service lib/systemd/system/ -engine/contrib/init/systemd/docker.socket lib/systemd/system/ +systemd/docker.service lib/systemd/system/ +systemd/docker.socket lib/systemd/system/ engine/contrib/mk* usr/share/docker-ce/contrib/ engine/contrib/nuke-graph-directory.sh usr/share/docker-ce/contrib/ engine/contrib/syntax/nano/Dockerfile.nanorc usr/share/nano/ diff --git a/components/packaging/deb/systemd/docker.service b/components/packaging/deb/systemd/docker.service new file mode 100644 index 0000000000..517463172b --- /dev/null +++ b/components/packaging/deb/systemd/docker.service @@ -0,0 +1,34 @@ +[Unit] +Description=Docker Application Container Engine +Documentation=https://docs.docker.com +After=network-online.target docker.socket firewalld.service +Wants=network-online.target +Requires=docker.socket + +[Service] +Type=notify +# the default is not to use systemd for cgroups because the delegate issues still +# exists and systemd currently does not support the cgroup feature set required +# for containers run by docker +ExecStart=/usr/bin/dockerd -H fd:// +ExecReload=/bin/kill -s HUP $MAINPID +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. +LimitNPROC=infinity +LimitCORE=infinity +# Uncomment TasksMax if your systemd version supports it. +# Only systemd 226 and above support this version. +#TasksMax=infinity +TimeoutStartSec=0 +# set delegate yes so that systemd does not reset the cgroups of docker containers +Delegate=yes +# kill only the docker process, not all processes in the cgroup +KillMode=process +# restart the docker process if it exits prematurely +Restart=on-failure +StartLimitBurst=3 +StartLimitInterval=60s + +[Install] +WantedBy=multi-user.target diff --git a/components/packaging/deb/systemd/docker.socket b/components/packaging/deb/systemd/docker.socket new file mode 100644 index 0000000000..7dd95098e4 --- /dev/null +++ b/components/packaging/deb/systemd/docker.socket @@ -0,0 +1,12 @@ +[Unit] +Description=Docker Socket for the API +PartOf=docker.service + +[Socket] +ListenStream=/var/run/docker.sock +SocketMode=0660 +SocketUser=root +SocketGroup=docker + +[Install] +WantedBy=sockets.target diff --git a/components/packaging/rpm/Makefile b/components/packaging/rpm/Makefile index 90efb83656..d5845abac6 100644 --- a/components/packaging/rpm/Makefile +++ b/components/packaging/rpm/Makefile @@ -11,7 +11,8 @@ RPMBUILD=docker run --privileged --rm -i \ -v $(CURDIR)/rpmbuild/BUILD:/root/rpmbuild/BUILD \ -v $(CURDIR)/rpmbuild/BUILDROOT:/root/rpmbuild/BUILDROOT \ -v $(CURDIR)/rpmbuild/RPMS:/root/rpmbuild/RPMS \ - -v $(CURDIR)/rpmbuild/SRPMS:/root/rpmbuild/SRPMS + -v $(CURDIR)/rpmbuild/SRPMS:/root/rpmbuild/SRPMS \ + -v $(CURDIR)/systemd:/systemd RPMBUILD_FLAGS=-ba\ --define '_gitcommit $(word 3,$(GEN_RPM_VER))' \ --define '_release $(word 2,$(GEN_RPM_VER))' \ diff --git a/components/packaging/rpm/centos-7/docker-ce.spec b/components/packaging/rpm/centos-7/docker-ce.spec index e155059059..7a83a0eb1d 100644 --- a/components/packaging/rpm/centos-7/docker-ce.spec +++ b/components/packaging/rpm/centos-7/docker-ce.spec @@ -95,7 +95,7 @@ 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 @@ -164,4 +164,3 @@ fi %changelog * Wed May 10 2017 17.06.0-dev -- Initial RPM release diff --git a/components/packaging/rpm/fedora-24/docker-ce.spec b/components/packaging/rpm/fedora-24/docker-ce.spec index bd17ae5dcf..98a8775aef 100644 --- a/components/packaging/rpm/fedora-24/docker-ce.spec +++ b/components/packaging/rpm/fedora-24/docker-ce.spec @@ -95,7 +95,7 @@ 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 diff --git a/components/packaging/rpm/fedora-25/docker-ce.spec b/components/packaging/rpm/fedora-25/docker-ce.spec index 32c4315f58..c54d6ee114 100644 --- a/components/packaging/rpm/fedora-25/docker-ce.spec +++ b/components/packaging/rpm/fedora-25/docker-ce.spec @@ -94,7 +94,7 @@ 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 diff --git a/components/packaging/rpm/gen-rpm-ver b/components/packaging/rpm/gen-rpm-ver index 596e969d79..ef9ba7c708 100755 --- a/components/packaging/rpm/gen-rpm-ver +++ b/components/packaging/rpm/gen-rpm-ver @@ -5,6 +5,11 @@ VERSION=$2 [[ $# < 2 ]] && echo 'not enough args' && exit 1 +DATE_COMMAND="date" +if [[ $(uname) -eq "Darwin" ]]; then + DATE_COMMAND="docker run --rm alpine date" +fi + GIT_COMMAND="git -C $ENGINE_DIR" rpmName=docker-ce rpmVersion="$VERSION" @@ -32,7 +37,7 @@ fi # if we have a "-dev" suffix or have change in Git, let's make this package version more complex so it works better if [[ "$rpmVersion" == *-dev ]] || [ -n "$($GIT_COMMAND status --porcelain)" ]; then gitUnix="$($GIT_COMMAND log -1 --pretty='%at')" - gitDate="$(date --date "@$gitUnix" +'%Y%m%d.%H%M%S')" + gitDate="$($DATE_COMMAND --date "@$gitUnix" +'%Y%m%d.%H%M%S')" gitCommit="$($GIT_COMMAND log -1 --pretty='%h')" gitVersion="${gitDate}.git${gitCommit}" # gitVersion is now something like '20150128.112847.17e840a' diff --git a/components/packaging/rpm/systemd/docker.service b/components/packaging/rpm/systemd/docker.service new file mode 100644 index 0000000000..6c60646b56 --- /dev/null +++ b/components/packaging/rpm/systemd/docker.service @@ -0,0 +1,33 @@ +[Unit] +Description=Docker Application Container Engine +Documentation=https://docs.docker.com +After=network-online.target firewalld.service +Wants=network-online.target + +[Service] +Type=notify +# the default is not to use systemd for cgroups because the delegate issues still +# exists and systemd currently does not support the cgroup feature set required +# for containers run by docker +ExecStart=/usr/bin/dockerd +ExecReload=/bin/kill -s HUP $MAINPID +# 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 +LimitNPROC=infinity +LimitCORE=infinity +# Uncomment TasksMax if your systemd version supports it. +# Only systemd 226 and above support this version. +#TasksMax=infinity +TimeoutStartSec=0 +# set delegate yes so that systemd does not reset the cgroups of docker containers +Delegate=yes +# kill only the docker process, not all processes in the cgroup +KillMode=process +# restart the docker process if it exits prematurely +Restart=on-failure +StartLimitBurst=3 +StartLimitInterval=60s + +[Install] +WantedBy=multi-user.target