Compare commits

...

152 Commits

Author SHA1 Message Date
Eli Uriegas f3af90aee7
Merge pull request #294 from thaJeztah/18.09_backport_start_dockerd_after_containerd
[18.09 backport] Start docker.service after containerd.service
2019-02-12 18:27:03 -08:00
Eli Uriegas 8a4654e98e
Merge pull request #298 from thaJeztah/18.09_backport_fix_containerd_race_condition
[18.09 backport] systemd: set --containerd socket patch to prevent race-condition
2019-02-12 18:25:59 -08:00
docker-unir[bot] c7bc734ebf
Merge pull request #293 from thaJeztah/18.09_bump_golang_1.10.8
Merged with https://github.com/seemethere/unir
2019-02-12 19:59:07 +00:00
Sebastiaan van Stijn 15653df497
systemd: set --containerd socket patch to prevent race-condition
containerd is now running as a separate service, and should
no longer be started as a managed child-process of dockerd.

The dockerd service already specifies that it should be started
`After` the containerd.service, but there is still a race
condition, where containerd is started, but its socket is not yet
created.

In that situation, `dockerd` detects that the containerd socket
is missing, and will start a new instance of containerd (as a
managed child-process), which causes live-restore to fail.

This patch explicitly sets the `--containerd` daemon option.
If this option is set, `dockerd` will not start a new instance
of containerd.

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
(cherry picked from commit 1985463b13)
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2019-02-11 14:41:33 +01:00
Andrew Hsu f2862f5f21
Merge pull request #167 from seemethere/req_g_ce
[18.09-ce] [ENGSEC-52] Bump containerd.io dep >= 1.2.2-3 (CVE-2019-5736)
2019-02-08 14:41:20 -08:00
Eli Uriegas 06b649e2b0 Bump containerd.io dep >= 1.2.2-3 (CVE-2019-5736)
Signed-off-by: Eli Uriegas <eli.uriegas@docker.com>
2019-02-08 21:40:09 +00:00
corbin-coleman 00600cd121
Start docker.service after containerd.service
Signed-off-by: corbin-coleman <corbin.coleman@docker.com>
(cherry picked from commit 27f7ae18f4)
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2019-01-25 14:00:33 +01:00
Sebastiaan van Stijn 9aec27794c
[18.09] Bump Golang 1.10.8 (CVE-2019-6486)
See the milestone for details;
https://github.com/golang/go/issues?q=milestone%3AGo1.10.8+label%3ACherryPickApproved

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2019-01-23 23:59:33 +01:00
Eli Uriegas d22718c000
Merge pull request #286 from paddy-hack/restore-sysvinit-and-upstart-support
Restore SysVinit and Upstart support
2018-12-27 14:12:46 -06:00
Olaf Meeuwissen 196c402828 Restore SysVinit and Upstart support
This was removed in 662e248f68.  The
removal breaks usage on Debian derivatives that do not use systemd
(see https://github.com/docker/for-linux/issues/482).
2018-12-23 20:12:09 +09:00
docker-unir[bot] b9bfa649ce
Merge pull request #284 from thaJeztah/18.09_backport_cli_does_not_obsolete_selinux_and_engine
Merged with https://github.com/seemethere/unir
2018-12-18 12:50:13 +00:00
Sebastiaan van Stijn 9e6f124b6b
Remove obsolete "selinux" and "engine" packages from CLI rpm
The CLI package does not provide the functionality of the
"selinux" and "engine" packages (it does _conflict_ with
older engine packages though).

This removes the "obsoletes" from the CLI package, as the
Engine package already obsoletes the other ones.

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
(cherry picked from commit d4e1ddb963)
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2018-12-17 18:04:48 +01:00
docker-unir[bot] 98f072d26b
Merge pull request #282 from seemethere/1_10_6_backport
Merged with https://github.com/seemethere/unir
2018-12-14 21:20:42 +00:00
Eli Uriegas d5e1848a81 bump to golang 1.10.6
Signed-off-by: Eli Uriegas <eli.uriegas@docker.com>
(cherry picked from commit 010a8c218d)
Signed-off-by: Eli Uriegas <eli.uriegas@docker.com>
2018-12-13 23:53:43 +00:00
Andrew Hsu abbaa92613
Merge pull request #280 from thaJeztah/18.09_backport_remove_spec
[18.09 backport] Remove unused spec files
2018-12-05 11:38:57 -08:00
Eli Uriegas 9d68fe72f3
Remove unused spec files
We don't use these spec files to actually build from anymore so we
should just go through and remove them.

Signed-off-by: Eli Uriegas <eli.uriegas@docker.com>
(cherry picked from commit b98d7aad1e)
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2018-12-05 15:12:29 +01:00
Andrew Hsu 47d440b147
Merge pull request #279 from andrewhsu/golang
[18.09] bump golang to 1.10.5
2018-12-03 14:49:31 -08:00
Andrew Hsu df92c55b0c bump golang to 1.10.5
Signed-off-by: Andrew Hsu <andrewhsu@docker.com>
(cherry picked from commit c658dc5459)
Signed-off-by: Andrew Hsu <andrewhsu@docker.com>
2018-12-03 22:21:44 +00:00
docker-unir[bot] be8c06f8a7
Merge pull request #276 from andrewhsu/sock
Merged with https://github.com/seemethere/unir
2018-12-03 19:45:33 +00:00
Eli Uriegas 93f125a260 Add docker.socket requirement for docker.service
Without this the docker.socket would not start by default when starting
the docker.service leading to failures to start.

Signed-off-by: Eli Uriegas <eli.uriegas@docker.com>
(cherry picked from commit 88885d18b1)
Signed-off-by: Andrew Hsu <andrewhsu@docker.com>
2018-12-03 19:42:41 +00:00
docker-unir[bot] 091c4453b8
Merge pull request #260 from thaJeztah/18.09_remove_telemetry_remnants
Merged with https://github.com/seemethere/unir
2018-12-03 19:40:52 +00:00
Eli Uriegas d2f8b45e8e
Merge pull request #274 from seemethere/1809_sockles
[18.09] Add socket activation for RHEL based distributions
2018-11-30 12:54:23 -08:00
Eli Uriegas 6a7e302c26 Add socket activation for RHEL based distributions
Removes the systemd drop-in unit file for socket activation and instead
prefers socket activation by default for both RHEL based and DEBIAN
based distributions.

Socket activation for RHEL based distributions was tested on CentOS 7 and Fedora 28.

Signed-off-by: Eli Uriegas <eli.uriegas@docker.com>
(cherry picked from commit 91c85cd381)
Signed-off-by: Eli Uriegas <eli.uriegas@docker.com>
2018-11-30 19:43:29 +00:00
Eli Uriegas ad65acf1a6
Merge pull request #269 from thaJeztah/18.09_backport_dont_require_containerd
[18.09 backport] Remove containerd dependency from CLI
2018-11-28 12:34:11 -06:00
Eli Uriegas 1a683520a4
Merge pull request #263 from thaJeztah/18.09_backport_compat
[18.09 backport] Change replaces/breaks to have compat with nightly
2018-11-28 12:20:39 -06:00
Sebastiaan van Stijn bc3867a8f6 Remove containerd dependency from CLI
The RPM packages list containerd as a hard dependency. While
having containerd installed allows certain features (e.g., allow
you to run `docker engine activate`), this should not be a requirement
for installing the Docker CLI, as it limits the use of this package
for situations where the CLI is installed to connect to a remote
daemon.

This patch removes the containerd dependency from the RPM packages
(the deb packages don't have this dependency, so no change is needed
in those packages)

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
(cherry picked from commit 037349c5dc)
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
Signed-off-by: Eli Uriegas <eli.uriegas@docker.com>
2018-11-28 18:19:44 +00:00
Eli Uriegas 12dff41696
Merge pull request #267 from thaJeztah/18.09_restore_requires
[18.09] Add back requirements that were removed in the migration
2018-11-28 12:15:16 -06:00
Andrew Hsu 9a7acfb994
Merge pull request #266 from thaJeztah/18.09_add_seccomp_dependency
[18.09] Add libseccomp requirement for rpm packages
2018-11-28 10:00:52 -08:00
Sebastiaan van Stijn a6ff66f1a5
Add back requirements that were removed in the migration
During the migration to "image based builds", some dependencies
were removed.

This patch brings back those dependencies.

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2018-11-28 15:44:43 +01:00
Sebastiaan van Stijn 86ed6eb2ce
Add libseccomp requirement for rpm packages
This requirement was originally added in 86f76496ce,
but got removed in the migration to the new image-based packaging.

Commit f2ceca9882 added this requirement
back for `.deb` packages, but did not include the same changes for
RPMs.

This patch adds back the requirement for RPM packages as well.

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2018-11-28 15:28:34 +01:00
Eli Uriegas 3e383bee96
Change replaces/breaks to have compat with nightly
Nightly builds wouldn't install correctly since our versioning scheme
for nightly builds is 0.0.0~ and 0 < 18.

Should be backwards compatible with 18.09 builds so there's no need to
actually backport this to 18.09.

Signed-off-by: Eli Uriegas <eli.uriegas@docker.com>
(cherry picked from commit de312224be)
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2018-11-28 13:54:25 +01:00
Sebastiaan van Stijn f7b95cb416
Remove remnants from telemetry plugin from Fedora 27, 28
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
(cherry picked from commit d91edcf9ae)
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2018-11-28 13:35:39 +01:00
docker-unir[bot] 1750dc22c9
Merge pull request #254 from thaJeztah/18.09_backport_remove_old_distros
Merged with https://github.com/seemethere/unir
2018-11-26 16:36:52 +00:00
Eli Uriegas bf7dd26e4a
Merge pull request #258 from seemethere/sockittome
[18.09] Add the docker.socket back in
2018-11-20 17:46:44 -06:00
Eli Uriegas aaf0359702 Add the docker.socket back in
Re-adds the docker.socket file for debian based distributions.

TAR-144 +review

Signed-off-by: Eli Uriegas <eli.uriegas@docker.com>
(cherry picked from commit 69bd2eea39)
Signed-off-by: Eli Uriegas <eli.uriegas@docker.com>
2018-11-19 17:25:13 +00:00
docker-unir[bot] dc8e682ed5
Merge pull request #255 from thaJeztah/18.09_backport_cosmic
Merged with https://github.com/seemethere/unir
2018-11-15 00:55:20 +00:00
docker-unir[bot] 8233fbfa68
Merge pull request #256 from thaJeztah/18.09_backport_fedora29
Merged with https://github.com/seemethere/unir
2018-11-15 00:52:17 +00:00
Eli Uriegas 6c3958b6ac
Add initial scripts for Fedora 29
Signed-off-by: Eli Uriegas <eli.uriegas@docker.com>
(cherry picked from commit 42f5f2f438)
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2018-10-31 11:29:45 +01:00
Eli Uriegas b10fbb8979
Add initial scripts for Ubuntu Cosmic (18.10)
Signed-off-by: Eli Uriegas <eli.uriegas@docker.com>
(cherry picked from commit 3228c35895)
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2018-10-26 14:32:27 +02:00
Sebastiaan van Stijn 89705eb29d
README: remove Ubuntu 17.10 "Artful"
Packages are no longer built for Ubuntu 17.10 since
commit eb635bdb30, so
remove it from the README as well

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
(cherry picked from commit 9cab4c43c4)
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2018-10-26 14:25:17 +02:00
Sebastiaan van Stijn 90fadd7b66
Remove Ubuntu 14.04 "trusty tahr" build scripts
Docker no longer ships packages for Ubuntu 14.04,
so remove the build scripts as well.

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
(cherry picked from commit 3a8fa7fc0a)
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2018-10-26 14:25:15 +02:00
Sebastiaan van Stijn 146e29aa88
Remove build scripts for Debian 8 "Jessie"
Docker is no longer packaged for Debian Jessie,
so remove the scripts.

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
(cherry picked from commit 49524c88c2)
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2018-10-26 14:25:12 +02:00
Sebastiaan van Stijn 9e724cc033
README: Remove mention of Debian 7 Wheezy
Packages for Wheezy are no longer built, so remove it
from the list of packages in the README.

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
(cherry picked from commit c8935f360b)
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2018-10-26 14:25:09 +02:00
Eli Uriegas 50b5361dab
Merge pull request #252 from thaJeztah/18.09_backport_notify
[18.09 backport] Restore `Type=notify` in Systemd unit
2018-10-18 09:29:55 -07:00
Valentin Kulesh ea2b2cdae5
Restore `Type=notify` in Systemd unit
Signed-off-by: Valentin Kulesh <valentin.kulesh@virtuozzo.com>
(cherry picked from commit 221b152fde)
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2018-10-18 17:14:52 +02:00
docker-unir[bot] 4756a2fba8
Merge pull request #247 from dhiltgen/buildtime
Merged with https://github.com/seemethere/unir
2018-10-02 22:42:06 +00:00
Daniel Hiltgen 9a071a3fbe Make sure buildtime is always set
This should ensure we don't produce builds without a valid "Built:"
field in the the version payload.

Signed-off-by: Daniel Hiltgen <daniel.hiltgen@docker.com>
2018-10-02 10:01:45 -07:00
Eli Uriegas 52bc21044c
Merge pull request #246 from seemethere/metadata_1809
[18.09] Change metadata to be stored in docker-engine
2018-09-28 14:23:25 -07:00
Eli Uriegas 379255ca5b
Merge pull request #245 from seemethere/upgrade_1809
[18.09] Fix debian package upgrade scenarios
2018-09-26 15:48:44 -07:00
Eli Uriegas 865140fc41 Change metadata to be stored in docker-engine
People blow away `/var/lib/docker` all the time so we probably shouldn't
store important data there.

Signed-off-by: Eli Uriegas <eli.uriegas@docker.com>
(cherry picked from commit 9391057c94)
Signed-off-by: Eli Uriegas <eli.uriegas@docker.com>
2018-09-26 22:33:01 +00:00
Eli Uriegas bebe7028c6 Fix debian package upgrade scenarios
Epoch needs to be included in the Replaces / Breaks sections

Signed-off-by: Eli Uriegas <eli.uriegas@docker.com>
(cherry picked from commit f6a3e274b4)
Signed-off-by: Eli Uriegas <eli.uriegas@docker.com>
2018-09-26 22:28:39 +00:00
Eli Uriegas dd7701adda
Merge pull request #242 from seemethere/remove_env_1809
[18.09] Remove Environment, not needed anymore
2018-09-26 13:21:33 -07:00
Eli Uriegas 6a38ee294c
Merge pull request #241 from seemethere/fix_static_builds_1809
[18.09] Fix static builds relying on the docker-* prefix
2018-09-26 13:21:11 -07:00
Eli Uriegas 08dd353c77 Remove Environment, not needed anymore
Signed-off-by: Eli Uriegas <eli.uriegas@docker.com>
(cherry picked from commit 9eac27f0ee)
Signed-off-by: Eli Uriegas <eli.uriegas@docker.com>
2018-09-26 19:00:07 +00:00
Eli Uriegas 75906054be containerd-ctr -> ctr
Signed-off-by: Eli Uriegas <eli.uriegas@docker.com>
2018-09-26 18:57:16 +00:00
Andrew Hsu 43ebdc0845 rename binaries to remove docker prefix
For static builds.

Signed-off-by: Andrew Hsu <andrewhsu@docker.com>
Signed-off-by: Eli Uriegas <eli.uriegas@docker.com>
2018-09-26 18:57:16 +00:00
Eli Uriegas cb57569b5d
Merge pull request #237 from jose-bigio/18.09_epoch_bump
[18.09] epoch bump
2018-09-24 11:14:05 -07:00
Eli Uriegas 6e43dbbc35 Bump epoch to 5
Signed-off-by: Eli Uriegas <eli.uriegas@docker.com>
(cherry picked from commit 024e366bd3)
Signed-off-by: Jose Bigio <jose.bigio@docker.com>
2018-09-24 10:40:01 -07:00
docker-unir[bot] 4d3c344a28
Merge pull request #235 from seemethere/backport_f
Merged with https://github.com/seemethere/unir
2018-09-21 22:20:55 +00:00
Eli Uriegas 6a66a0b6ae Use image artifacts as daemon and dependencies
Signed-off-by: Eli Uriegas <eli.uriegas@docker.com>
(cherry picked from commit 944fa7137c)
Signed-off-by: Eli Uriegas <eli.uriegas@docker.com>
2018-09-21 22:10:36 +00:00
Eli Uriegas 4264c8e1a8
Merge pull request #234 from jose-bigio/18.09_cherry_pick
[18.09] Make -dm image based not tag based
2018-09-21 15:06:42 -07:00
Eli Uriegas aea8f6a1db Make -dm image based not tag based
Signed-off-by: Eli Uriegas <eli.uriegas@docker.com>
(cherry picked from commit 206d61f29d)
Signed-off-by: Jose Bigio <jose.bigio@docker.com>
2018-09-21 14:14:28 -07:00
Eli Uriegas 43f81b5c52
Merge pull request #226 from thaJeztah/18.09_more_updates_to_package_description
[18.09] more updates to package description
2018-09-20 11:54:50 -07:00
Eli Uriegas 1cb8fe5bda
Merge pull request #225 from thaJeztah/18.09_update_package_description
[18.09] backport update package description
2018-09-20 11:54:31 -07:00
Eli Uriegas 1b2edd1ffd
Merge pull request #230 from kolyshkin/18.09-fix-path
[18.09] systemd/docker.service: fix PATH
2018-09-20 11:53:29 -07:00
Eli Uriegas 8751612797
Merge pull request #227 from thaJeztah/18.09_update_fedora_list
[18.09] backport Update outdated Fedora versions
2018-09-20 11:45:24 -07:00
Eli Uriegas ea3b15971e
Merge pull request #229 from thaJeztah/18.09_revert_suffix
[18.09] revert "Specify suffix for DEB_VERSION"
2018-09-20 11:45:02 -07:00
Kir Kolyshkin fca673ad80 deb/systemd: remove
These files are not used, and having them in repo is misleading.

Signed-off-by: Kir Kolyshkin <kolyshkin@gmail.com>
2018-09-20 10:16:39 -07:00
Kir Kolyshkin 62d9a0d125 systemd/docker.service: fix PATH
Set the PATH to what appears to be the standard on latest Ubuntu (18.04)
and Debian (9), fixing the following two issues:

1. PATH did not contain /bin (leading to ContainerTop/ps not working
on newer distros, among the other things).

2. $PATH can't be specified in Environment directives in .service files.

Signed-off-by: Kir Kolyshkin <kolyshkin@gmail.com>
2018-09-20 10:09:10 -07:00
Sebastiaan van Stijn 00104664c1
Revert "Specify suffix for DEB_VERSION"
This reverts commit 6c5b7fcb95.

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2018-09-20 16:06:01 +02:00
Justin Clift 5f5601309a
Update outdated Fedora versions
(cherry picked from commit f021264902)
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2018-09-20 13:04:16 +02:00
Sebastiaan van Stijn eb89f3ebd6
more updates to package descriptions
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2018-09-20 12:42:43 +02:00
Sebastiaan van Stijn 56bed5f33d
change some wording in package description
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
(cherry picked from commit 1a3379642f)
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2018-09-20 12:34:01 +02:00
Sebastiaan van Stijn 702f6a07fc
change home page link for deb pkgs
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
(cherry picked from commit a4df8fe1f8)
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2018-09-20 12:33:54 +02:00
docker-unir[bot] 24d48340b7
Merge pull request #220 from seemethere/configurable_1809
Merged with https://github.com/seemethere/unir
2018-09-19 00:01:01 +00:00
Eli Uriegas 48b843941c
Merge pull request #219 from seemethere/dynamic_compile_1809
[18.09] Dynamically compile the docker daemon
2018-09-18 13:44:37 -07:00
Eli Uriegas 7df6db6ac3 Make base for Dockerfile.engine-dm configurable
Signed-off-by: Eli Uriegas <eli.uriegas@docker.com>
(cherry picked from commit 605df1abcb)
Signed-off-by: Eli Uriegas <eli.uriegas@docker.com>
2018-09-18 13:34:12 -07:00
Eli Uriegas 5e9cc98454 Dynamically compile the docker daemon
Signed-off-by: Eli Uriegas <eli.uriegas@docker.com>
(cherry picked from commit 4f18a19695)
Signed-off-by: Eli Uriegas <eli.uriegas@docker.com>
2018-09-18 13:30:21 -07:00
Eli Uriegas b7286dfc64
Merge pull request #216 from seemethere/add_devicemapper_1809
[18.09] Add native rpm compilation for devicemapper
2018-09-18 02:40:00 +02:00
Eli Uriegas c80ac56dfa Add native rpm compilation for devicemapper
devicemapper cannot be enabled on a statically compiled binary so we
dynamically compile it on a rhel based distribution in order to enable
devicemapper usage.

Signed-off-by: Eli Uriegas <eli.uriegas@docker.com>
(cherry picked from commit 7cb8d35894)
Signed-off-by: Eli Uriegas <eli.uriegas@docker.com>
2018-09-17 16:50:09 -07:00
docker-unir[bot] 6dada46805
Merge pull request #214 from seemethere/iptables_fix_1809
Merged with https://github.com/seemethere/unir
2018-09-17 17:24:00 +00:00
Eli Uriegas 36a08784a0 Add `/usr/sbin` to our path variable for systemd
iptables is sometimes placed in `/usr/sbin`

Signed-off-by: Eli Uriegas <eli.uriegas@docker.com>
(cherry picked from commit c86a958d6d)
Signed-off-by: Eli Uriegas <eli.uriegas@docker.com>
2018-09-17 10:20:34 -07:00
docker-unir[bot] 0285849e90
Merge pull request #211 from andrewhsu/aufs
Merged with https://github.com/seemethere/unir
2018-09-13 20:32:44 +00:00
Andrew Hsu 18a9c4921b type fix on deb package recommends aufs-tools
Signed-off-by: Andrew Hsu <andrewhsu@docker.com>
2018-09-13 18:41:31 +00:00
Eli Uriegas 283db28dde
Merge pull request #209 from kolyshkin/18.09-fix-seccomp
[18.09] image/Dockerfile: add osusergo, seccomp tags
2018-09-13 12:14:05 +02:00
Kirill Kolyshkin 97596405f4 image/Dockerfile: add osusergo, seccomp tags
osusergo build tag is needed for better chances to have
a proper static binary when Go >= 1.11 is used, and is
harmless otherwise.

seccomp build tag is needed so the resulting dockerd binary
has seccomp support.

[v2: add libseccomp-dev installation]

Signed-off-by: Kir Kolyshkin <kolyshkin@gmail.com>
2018-09-12 19:34:45 -07:00
Eli Uriegas 4246e237d4
Merge pull request #207 from seemethere/do_not_include_arch_1809
[18.09] Remove the arch in the image tag
2018-09-12 16:28:07 +02:00
Eli Uriegas 0fb14f8b91 Remove the arch in the image tag
Signed-off-by: Eli Uriegas <eli.uriegas@docker.com>
(cherry picked from commit f7b0d0742e)
Signed-off-by: Eli Uriegas <eli.uriegas@docker.com>
2018-09-12 07:19:27 -07:00
Eli Uriegas 798d4cc8c5
Merge pull request #206 from seemethere/remove_need_for_suffix_1809
[18.09] Remove need for SUFFIX in gen-deb-ver
2018-09-12 15:20:36 +02:00
Eli Uriegas d3176d845c
Merge pull request #205 from seemethere/bump_containerd_proxy_1809
[18.09] Bump proxy to 35c543b
2018-09-12 15:13:52 +02:00
Eli Uriegas cc336d0804 Remove need for SUFFIX in gen-deb-ver
Should generate correct bits whether or not the suffix is present.

Working example:

❯ ./gen-deb-ver . 18.09.0-beta1
18.09.0~1.1.beta1 18.09.0-beta1

❯ ./gen-deb-ver . 18.09.0-ce-beta1
18.09.0~ce~1.1.beta1 18.09.0-ce-beta1

Signed-off-by: Eli Uriegas <eli.uriegas@docker.com>
(cherry picked from commit 9de3f6fb57)
Signed-off-by: Eli Uriegas <eli.uriegas@docker.com>
2018-09-12 06:03:56 -07:00
Eli Uriegas 098761f132
Merge pull request #203 from seemethere/fix_tar_1809
[18.09] Have the tar target make a docker compat one too
2018-09-12 15:02:49 +02:00
Eli Uriegas befa3c6195 Bump proxy to 35c543b
Includes fixes related to upgrade cycles

Signed-off-by: Eli Uriegas <eli.uriegas@docker.com>
(cherry picked from commit 83a20d53f1)
Signed-off-by: Eli Uriegas <eli.uriegas@docker.com>
2018-09-12 06:00:21 -07:00
Eli Uriegas 6ada859528
Merge pull request #199 from dhiltgen/platform
Wire up the platform string properly
2018-09-12 14:59:32 +02:00
Eli Uriegas f38206fa47 Add *.tar and image-linux to our gitignore
A bit overdue

Signed-off-by: Eli Uriegas <eli.uriegas@docker.com>
(cherry picked from commit 11643a30e0)
Signed-off-by: Eli Uriegas <eli.uriegas@docker.com>
2018-09-12 05:42:28 -07:00
Eli Uriegas ea811c67ee Have the tar target make a docker compat one too
docker load doesn't support OCI based tar files so we have to make 2
different ones.

Signed-off-by: Eli Uriegas <eli.uriegas@docker.com>
(cherry picked from commit 696cdc009c)
Signed-off-by: Eli Uriegas <eli.uriegas@docker.com>
2018-09-12 05:42:28 -07:00
Daniel Hiltgen a5ad547141 Wire up the platform string properly
This is set in a top-level makefile, but apparently
isn't getting passed all the way through as expected.

Signed-off-by: Daniel Hiltgen <daniel.hiltgen@docker.com>
2018-09-11 19:14:27 -07:00
docker-unir[bot] 335dcd5851
Merge pull request #198 from jose-bigio/18.09_move_tar_targets
Merged with https://github.com/seemethere/unir
2018-09-11 16:37:57 +00:00
Jose Bigio 8e4a92dc66 Call the engine-.tar target
Also cleans up the target in rpm and deb Makfiles because
the tar target already output a tar.

Signed-off-by: Jose Bigio <jose.bigio@docker.com>
(cherry picked from commit 8a4744f48a)
Signed-off-by: Jose Bigio <jose.bigio@docker.com>
2018-09-11 08:42:18 -07:00
Jose Bigio 9398be8a7b Move the tar creation to the image directory
Signed-off-by: Jose Bigio <jose.bigio@docker.com>
(cherry picked from commit eba0ed1f34)
Signed-off-by: Jose Bigio <jose.bigio@docker.com>
2018-09-11 08:42:03 -07:00
Jose Bigio 66979a05d0
Merge pull request #185 from corbin-coleman/add-build-image-arg
[18.09] Parameterize Dockerfiles base build images
2018-09-10 10:30:46 -07:00
corbin-coleman 7afc35b95a Parameterize Dockerfiles base build images
This will make it easier for anybody to build with a specific version of a distro they want to build on.
They could lock into a specific sha of a docker image if they wanted, as an example.

Signed-off-by: corbin-coleman <corbin.coleman@docker.com>
2018-09-10 16:54:32 +00:00
Eli Uriegas 346f22eb45
Merge pull request #193 from dhiltgen/bump_epoch
[18.09] Bump packaging epoch
2018-09-10 18:41:49 +02:00
Eli Uriegas a44c95733f
Merge pull request #192 from seemethere/no_offline_installer_1809
[18.09] Remove offline installer to install shim-process
2018-09-10 18:41:30 +02:00
Daniel Hiltgen be00095e1d Bump packaging epoch
This should accomodate the new versioning fix

Signed-off-by: Daniel Hiltgen <daniel.hiltgen@docker.com>
2018-09-10 08:26:11 -07:00
Eli Uriegas 31d0cb047b Remove offline installer to install shim-process
Removes the need for the offline installer to install the shim process
and instead installs the shim process as part of the packaging.

May be easier in the future to just package the shim process on it's own
but that'll come after this 18.09 release

Signed-off-by: Eli Uriegas <eli.uriegas@docker.com>
(cherry picked from commit f8bd366d58)
Signed-off-by: Eli Uriegas <eli.uriegas@docker.com>
2018-09-10 14:06:32 +00:00
docker-unir[bot] 8887f3388e
Merge pull request #190 from seemethere/1809_deb
Merged with https://github.com/seemethere/unir
2018-09-07 15:55:26 +00:00
Eli Uriegas 1293fb5473 Fix docker-ce-cli replacing files
Signed-off-by: Eli Uriegas <eli.uriegas@docker.com>
(cherry picked from commit 193a6be5de)
Signed-off-by: Eli Uriegas <eli.uriegas@docker.com>
2018-09-07 14:16:46 +00:00
docker-unir[bot] 3921898c49
Merge pull request #181 from seemethere/bump_1104
Merged with https://github.com/seemethere/unir
2018-09-06 18:11:16 +00:00
Eli Uriegas a354d5f78f
Merge pull request #182 from seemethere/backport_systemd
[18.09] Update new systemd unit file with changes from upstream
2018-09-06 10:26:02 +01:00
Andrew Hsu fc32916152
Merge pull request #187 from andrewhsu/to
[18.09] Update proxy commit for shutdown timeouts
2018-09-05 15:45:18 -07:00
Michael Crosby 61d98f8540 Update proxy commit for shutdown timeouts
Signed-off-by: Michael Crosby <crosbymichael@gmail.com>
(cherry picked from commit 7941c692e6)
Signed-off-by: Andrew Hsu <andrewhsu@docker.com>
2018-09-05 22:39:47 +00:00
docker-unir[bot] 7d267aead8
Merge pull request #183 from dhiltgen/better_names_q3
Merged with https://github.com/seemethere/unir
2018-09-04 19:46:08 +00:00
Daniel Hiltgen 3c757b281b Change deb package filenames to be unique
It's generally bad-form to generate two identically named package files
that are actually different, so we should name our packages based on
the distro and version, not just the distro.

Signed-off-by: Daniel Hiltgen <daniel.hiltgen@docker.com>
(cherry picked from commit 13bde85f00)
Signed-off-by: Daniel Hiltgen <daniel.hiltgen@docker.com>
2018-09-04 12:43:44 -07:00
Sebastiaan van Stijn 5963decd15 systemd: set start burst limits
Note that StartLimit* options were moved from "Service" to "Unit" in systemd 229
(6bf0f408e4)
both the old, and new location are accepted by systemd 229 and up, so using the old location
to make them work for either version of systemd.

StartLimitInterval was renamed to StartLimitIntervalSec in systemd 230
(f0367da7d1)
both the old, and new name are accepted by systemd 230 and up, so using the old name to make
this option work for either version of systemd.

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
(cherry picked from commit 2c2bfea5d0)
Signed-off-by: Eli Uriegas <eli.uriegas@docker.com>
2018-09-04 14:56:45 +00:00
Sebastiaan van Stijn 127426fc69 systemd: add support for reloading daemon configuration through systemd
This adds support for reloading the docker daemon
(SIGHIUP) so that changes in '/etc/docker/daemon.json'
can be loaded at runtime by reloading the service
through systemd ('systemctl reload docker')

Before this change, systemd would output an error
that "reloading" is not supported for the docker
service;

  systemctl reload docker
  Failed to reload docker.service: Job type reload is not applicable for unit docker.service.

After this change, the docker daemon can be reloaded
through 'systemctl reload docker', which reloads
the configuration;

  journalctl -f -u docker.service

  May 02 03:49:20 testing systemd[1]: Reloading Docker Application Container Engine.
  May 02 03:49:20 testing docker[28496]: time="2016-05-02T03:49:20.143964103-04:00" level=info msg="Got signal to reload configuration, reloading from: /etc/docker/daemon.json"
  May 02 03:49:20 testing systemd[1]: Reloaded Docker Application Container Engine.

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
(cherry picked from commit 3e1b508e5f)
Signed-off-by: Eli Uriegas <eli.uriegas@docker.com>
2018-09-04 14:56:45 +00:00
Sebastiaan van Stijn 784c5936ec systemd: set systemd KillMode
Change the kill mode to process so that systemd does not kill container
processes when the daemon is shutdown but only the docker daemon

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
(cherry picked from commit d736ae9da7)
Signed-off-by: Eli Uriegas <eli.uriegas@docker.com>
2018-09-04 14:56:45 +00:00
Sebastiaan van Stijn 1120496ca0 systemd: add "Delegate=yes" to docker's service file
We need to add delegate yes to docker's service file so that it can
manage the cgroups of the processes that it launches without systemd
interfering with them and moving the processes after it is reloaded.

       Delegate=
           Turns on delegation of further resource control partitioning to
           processes of the unit. For unprivileged services (i.e. those
           using the User= setting), this allows processes to create a
           subhierarchy beneath its control group path. For privileged
           services and scopes, this ensures the processes will have all
           control group controllers enabled.

This is the proper fix for issue moby/moby#20152

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
(cherry picked from commit e134e666a5)
Signed-off-by: Eli Uriegas <eli.uriegas@docker.com>
2018-09-04 14:56:45 +00:00
Sebastiaan van Stijn c42e4736e0 systemd: don't limit tasks
Systemd sets a default of 512 tasks, which is far
too low to run many containers.

Note that TasksMax is only supported on systemd 226
and above.

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
(cherry picked from commit 82fe96733f)
Signed-off-by: Eli Uriegas <eli.uriegas@docker.com>
2018-09-04 14:56:45 +00:00
Sebastiaan van Stijn 1246dedcd5 systemd: set Limit* to infinity
There is a not-insignificant performance overhead for all containers (if
containerd is a child of Docker, which is the current setup) if systemd
sets rlimits on the main Docker daemon process (because the limits
propogate to all children).

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
(cherry picked from commit 68e15413dc)
Signed-off-by: Eli Uriegas <eli.uriegas@docker.com>
2018-09-04 14:56:45 +00:00
Sebastiaan van Stijn f93f452517 systemd: no limit on core size
set LimitCORE=infinity to ensure complete core creation,
allows extraction of as much information as possible.

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
(cherry picked from commit da69663b9c)
Signed-off-by: Eli Uriegas <eli.uriegas@docker.com>
2018-09-04 14:56:45 +00:00
Sebastiaan van Stijn 3920ea81ea Bump Go to 1.10.4
Includes fixes to the go command, linker, and the net/http, mime/multipart,
ld/macho, bytes, and strings packages. See the Go 1.10.4 milestone on the
issue tracker for details:

https://github.com/golang/go/issues?q=milestone%3AGo1.10.4

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
(cherry picked from commit 11b4630f4c)
Signed-off-by: Eli Uriegas <eli.uriegas@docker.com>
2018-09-04 08:26:35 +00:00
docker-unir[bot] e1bdbd889d
Merge pull request #176 from dhiltgen/oci_labels
Merged with https://github.com/seemethere/unir
2018-08-31 20:46:38 +00:00
Daniel Hiltgen 58e5b9c981 Add standard OCI labels
This adds the standardized OCI labels for our image so downstream tools
will be able to inspect/extract these mechanically.

Reference: https://github.com/opencontainers/image-spec/blob/master/annotations.md#pre-defined-annotation-keys

Signed-off-by: Daniel Hiltgen <daniel.hiltgen@docker.com>
2018-08-29 10:27:51 -07:00
Andrew Hsu 3e1fd2ba5b
Merge pull request #173 from andrewhsu/se
[18.09] add requires container-selinux to spec
2018-08-28 22:12:02 -07:00
Andrew Hsu e4b1c10a6b add requires container-selinux to spec
Signed-off-by: Andrew Hsu <andrewhsu@docker.com>
2018-08-29 04:23:49 +00:00
Andrew Hsu f0a0c5acba
Merge pull request #172 from dhiltgen/seccomp_dep
[18.09] Add explicit dependency for libseccomp2
2018-08-28 21:06:40 -07:00
docker-unir[bot] bb9b1d3c1c
Merge pull request #165 from dhiltgen/platform
Merged with https://github.com/seemethere/unir
2018-08-29 03:51:49 +00:00
Andrew Hsu 66ad326a35
Merge pull request #171 from andrewhsu/ps
[18.09] Add post-stop
2018-08-28 17:41:35 -07:00
Daniel Hiltgen f2ceca9882 Add explicit dependency for libseccomp2
While testing on older ubuntu images we discovered
we do depend on a newer version of libseccomp2.

Signed-off-by: Daniel Hiltgen <daniel.hiltgen@docker.com>
2018-08-28 17:07:43 -07:00
Michael Crosby 89d7846366 Add post-stop
Signed-off-by: Michael Crosby <crosbymichael@gmail.com>
(cherry picked from commit 5f4b9c0eab)
Signed-off-by: Andrew Hsu <andrewhsu@docker.com>
2018-08-28 23:31:50 +00:00
docker-unir[bot] e7ab731876
Merge pull request #170 from jose-bigio/bump_ubuntu_epoch
Merged with https://github.com/seemethere/unir
2018-08-28 23:19:20 +00:00
Jose Bigio 4f3c49bc92 Bump the epoch from 2 to 3 for deb packages
Signed-off-by: Jose Bigio <jose.bigio@docker.com>
2018-08-28 13:27:01 -07:00
docker-unir[bot] 080c2c5b30
Merge pull request #167 from seemethere/suffix
Merged with https://github.com/seemethere/unir
2018-08-28 20:21:38 +00:00
Eli Uriegas 6c5b7fcb95 Specify suffix for DEB_VERSION
Signed-off-by: Eli Uriegas <eli.uriegas@docker.com>
2018-08-28 17:24:58 +00:00
Daniel Hiltgen c443439189 Add build date per upstream moby pattern
This adds a build date using the same pattern as upstream
https://github.com/moby/moby/blob/master/hack/make.sh#L69

Signed-off-by: Daniel Hiltgen <daniel.hiltgen@docker.com>
2018-08-24 17:19:51 -07:00
Daniel Hiltgen 4d9fd7d17f Expose the platform string for community builds
This encodes the platform as "Docker Engine - Community"
for community engines

Signed-off-by: Daniel Hiltgen <daniel.hiltgen@docker.com>
2018-08-24 17:05:42 -07:00
Andrew Hsu e551ce4329
Merge pull request #164 from andrewhsu/rsec
[18.09] added RestartSec
2018-08-24 15:45:36 -07:00
Andrew Hsu 3614f5dc4e added RestartSec
Signed-off-by: Andrew Hsu <andrewhsu@docker.com>
2018-08-24 22:40:02 +00:00
Andrew Hsu ad501c8f80
Merge pull request #162 from andrewhsu/cprox
[18.09] update containerd proxy commit to afca176
2018-08-24 15:19:12 -07:00
Andrew Hsu eea6967f5d update containerd proxy commit to afca176
Signed-off-by: Andrew Hsu <andrewhsu@docker.com>
2018-08-24 22:14:20 +00:00
Eli Uriegas 4a425676ac
Merge pull request #160 from dhiltgen/fix_scope
[18.09] Make engine scope a build time setting
2018-08-24 12:01:27 -07:00
Daniel Hiltgen 7240669124 Make engine scope a build time setting
This should make it easier to change downstream builds
to change the scope.

Signed-off-by: Daniel Hiltgen <daniel.hiltgen@docker.com>
2018-08-24 11:40:42 -07:00
Eli Uriegas 7e5cc1a95e
Merge pull request #158 from andrewhsu/ac
[18.09] use systemctl is-active to check for containerd
2018-08-23 09:59:48 -07:00
Andrew Hsu a9b0387bb0 use systemctl is-active to check for containerd
The other way was not working.

Signed-off-by: Andrew Hsu <andrewhsu@docker.com>
(cherry picked from commit f00df1bf1e)
Signed-off-by: Andrew Hsu <andrewhsu@docker.com>
2018-08-23 16:57:41 +00:00
Eli Uriegas 54dc76c596
Merge pull request #157 from seemethere/remove_overlay_1809
[18.09] Remove overlay as the default storage driver
2018-08-23 09:44:14 -07:00
Eli Uriegas 6cc81c2e8c Remove overlay as the default storage driver
Should rely on list in the daemon

Signed-off-by: Eli Uriegas <eli.uriegas@docker.com>
(cherry picked from commit 605758124d)
Signed-off-by: Eli Uriegas <eli.uriegas@docker.com>
2018-08-23 16:39:44 +00:00
Eli Uriegas 9162117ba4
Merge pull request #155 from seemethere/fix_up_dockerfile_1809
[18.09] Fix up Dockerfile.engine to compile docker-proxy statically
2018-08-23 08:50:54 -07:00
Eli Uriegas 82258262f9 Remove linux-headers as a dependency
Signed-off-by: Eli Uriegas <eli.uriegas@docker.com>
2018-08-23 15:08:24 +00:00
Eli Uriegas 3aeb8e9365 Wire up dependencies for debian, source -> .
Signed-off-by: Eli Uriegas <eli.uriegas@docker.com>
(cherry picked from commit 99bbb6e33f)
Signed-off-by: Eli Uriegas <eli.uriegas@docker.com>
2018-08-22 23:28:39 +00:00
Eli Uriegas ce1d295cf4 Fix whitespace, add Dockerfile.engine to clean
Signed-off-by: Eli Uriegas <eli.uriegas@docker.com>
(cherry picked from commit 831482a329)
Signed-off-by: Eli Uriegas <eli.uriegas@docker.com>
2018-08-22 23:28:39 +00:00
Eli Uriegas 5bfb6ce946 Make GO_IMAGE configurable, default to official go
Signed-off-by: Eli Uriegas <eli.uriegas@docker.com>
(cherry picked from commit 4cdbe08bf9)
Signed-off-by: Eli Uriegas <eli.uriegas@docker.com>
2018-08-22 23:28:39 +00:00
40 changed files with 769 additions and 992 deletions

2
.gitignore vendored
View File

@ -4,3 +4,5 @@ rpmbuild
tmp
artifacts
sources
*.tar
image-linux*

View File

@ -5,9 +5,13 @@ VERSION?=0.0.0-dev
DOCKER_GITCOMMIT:=abcdefg
ARCH=$(shell uname -m)
STATIC_VERSION=$(shell static/gen-static-ver $(ENGINE_DIR) $(VERSION))
GO_VERSION:=1.10.3
GO_VERSION:=1.10.8
DEFAULT_PRODUCT_LICENSE:=Community Engine
PLATFORM=Docker Engine - Community
BUILDTIME=$(shell date -u -d "@$${SOURCE_DATE_EPOCH:-$$(date +%s)}" --rfc-3339 ns 2> /dev/null | sed -e 's/ /T/')
export DEFAULT_PRODUCT_LICENSE
export PLATFORM
export BUILDTIME
# Taken from: https://www.cmcrossroads.com/article/printing-value-makefile-variable
print-% : ; @echo $($*)

View File

@ -8,14 +8,10 @@ This repository is solely maintained by Docker, Inc.
The scripts will build for this list of packages types:
* DEB packages for Ubuntu 18.04 Bionic
* DEB packages for Ubuntu 17.10 Artful
* DEB packages for Ubuntu 16.04 Xenial
* DEB packages for Ubuntu 14.04 Trusty
* DEB packages for Debian 10 Buster
* DEB packages for Debian 9 Stretch
* DEB packages for Debian 8 Jessie
* DEB packages for Debian 7 Wheezy
* RPM packages for Fedora 28
* RPM packages for Fedora 27
* RPM packages for Fedora 26
* RPM packages for CentOS 7
* TGZ and ZIP files with static binaries

View File

@ -3,10 +3,9 @@
"imagePath": "/var/lib/docker-engine/engine.tar",
"namespace":"docker",
"args": [
"-s", "overlay",
"--containerd", "/run/containerd/containerd.sock",
"--default-runtime", "containerd",
"--add-runtime", "containerd=runc"
],
"scope": "ce"
"scope": "${ENGINE_SCOPE}"
}

View File

@ -1,10 +1,10 @@
# Common things for containerd functionality
CONTAINERD_PROXY_COMMIT=82ae3d13e91d062dd4853379fe018638023c8da2
CONTAINERD_PROXY_COMMIT=35c543bd887878714213cf61ee14038499fd25b7
CONTAINERD_SHIM_PROCESS_IMAGE=docker.io/docker/containerd-shim-process:ff98a47
# If containerd is running use that socket instead
ifeq ($(shell systemctl status containerd 2>/dev/null >/dev/null && echo -n "yes"), "yes")
ifeq ("$(shell systemctl is-active containerd)", "active")
CONTAINERD_SOCK:=/var/run/containerd/containerd.sock
else
CONTAINERD_SOCK:=/var/run/docker/containerd/docker-containerd.sock

View File

@ -6,16 +6,22 @@ CLI_DIR:=$(CURDIR)/../../cli
GITCOMMIT?=$(shell cd $(CLI_DIR) && git rev-parse --short HEAD)
VERSION?=0.0.0-dev
GO_BASE_IMAGE=golang
GO_VERSION:=1.10.3
GO_VERSION:=1.10.8
GO_IMAGE=$(GO_BASE_IMAGE):$(GO_VERSION)
DEB_VERSION=$(shell ./gen-deb-ver $(CLI_DIR) "$(VERSION)")
CHOWN:=docker run --rm -v $(CURDIR):/v -w /v alpine chown
EPOCH?=2
EPOCH?=5
ifdef BUILD_IMAGE
BUILD_IMAGE_FLAG=--build-arg $(BUILD_IMAGE)
endif
COMMON_FILES=common
BUILD?=docker build \
$(BUILD_IMAGE_FLAG) \
--build-arg GO_IMAGE=$(GO_IMAGE) \
--build-arg COMMON_FILES=$(COMMON_FILES) \
--build-arg ENGINE_IMAGE="$(shell cat sources/engine-image)" \
-t debbuild-$@/$(ARCH) \
-f $(CURDIR)/$@/Dockerfile .
RUN=docker run --rm -i \
@ -26,11 +32,8 @@ RUN=docker run --rm -i \
-v $(CURDIR)/debbuild/$@:/build \
debbuild-$@/$(ARCH)
SOURCE_FILES=containerd-proxy.tgz cli.tgz containerd-shim-process.tar docker.service dockerd.json engine.tar
SOURCE_FILES=engine-image cli.tgz docker.service docker.socket distribution_based_engine.json
SOURCES=$(addprefix sources/, $(SOURCE_FILES))
ENGINE_IMAGE=docker/engine-community
IMAGE_TAG=nightly
.PHONY: help
help: ## show make targets
@ -42,9 +45,7 @@ clean: ## remove build artifacts
$(RM) -r debbuild
[ ! -d sources ] || $(CHOWN) -R $(shell id -u):$(shell id -g) sources
$(RM) -r sources
[ ! -d artifacts ] || $(CHOWN) -R $(shell id -u):$(shell id -g) artifacts
$(RM) -r artifacts
-docker rm docker2oci
$(RM) engine-image
engine-$(ARCH).tar:
$(MAKE) -C ../image image-linux
@ -54,13 +55,20 @@ engine-$(ARCH).tar:
deb: ubuntu debian raspbian ## build all deb packages
.PHONY: ubuntu
ubuntu: ubuntu-bionic ubuntu-xenial ubuntu-trusty ## build all ubuntu deb packages
ubuntu: ubuntu-bionic ubuntu-xenial ## build all ubuntu deb packages
.PHONY: debian
debian: debian-stretch debian-jessie ## build all debian deb packages
debian: debian-stretch ## build all debian deb packages
.PHONY: raspbian
raspbian: raspbian-stretch debian-jessie ## build all raspbian deb packages
raspbian: raspbian-stretch ## build all raspbian deb packages
.PHONY: ubuntu-cosmic
ubuntu-cosmic: ## build ubuntu cosmic deb packages
ubuntu-cosmic: $(SOURCES)
$(BUILD)
$(RUN)
$(CHOWN) -R $(shell id -u):$(shell id -g) debbuild/$@
.PHONY: ubuntu-bionic
ubuntu-bionic: ## build ubuntu bionic deb packages
@ -76,13 +84,6 @@ ubuntu-xenial: $(SOURCES)
$(RUN)
$(CHOWN) -R $(shell id -u):$(shell id -g) debbuild/$@
.PHONY: ubuntu-trusty
ubuntu-trusty: ## build ubuntu trusty deb packages
ubuntu-trusty: $(SOURCES)
$(BUILD)
$(RUN)
$(CHOWN) -R $(shell id -u):$(shell id -g) debbuild/$@
.PHONY: debian-buster
debian-buster: ## build debian buster deb packages
debian-buster: $(SOURCES)
@ -90,13 +91,6 @@ debian-buster: $(SOURCES)
$(RUN)
$(CHOWN) -R $(shell id -u):$(shell id -g) debbuild/$@
.PHONY: debian-jessie
debian-jessie: ## build debian jessie deb packages
debian-jessie: $(SOURCES)
$(BUILD)
$(RUN)
$(CHOWN) -R $(shell id -u):$(shell id -g) debbuild/$@
.PHONY: debian-stretch
debian-stretch: ## build debian stretch deb packages
debian-stretch: $(SOURCES)
@ -104,13 +98,6 @@ debian-stretch: $(SOURCES)
$(RUN)
$(CHOWN) -R $(shell id -u):$(shell id -g) debbuild/$@
.PHONY: raspbian-jessie
raspbian-jessie: ## build raspbian jessie deb packages
raspbian-jessie: $(SOURCES)
$(BUILD)
$(RUN)
$(CHOWN) -R $(shell id -u):$(shell id -g) debbuild/$@
.PHONY: raspbian-stretch
raspbian-stretch: ## build raspbian stretch deb packages
raspbian-stretch: $(SOURCES)
@ -126,46 +113,20 @@ sources/cli.tgz:
alpine \
tar -C / -c -z -f /v/cli.tgz --exclude .git cli
sources/containerd-proxy.tgz:
mkdir -p tmp/
curl -fL -o tmp/containerd-proxy.tgz "https://github.com/crosbymichael/containerd-proxy/archive/$(CONTAINERD_PROXY_COMMIT).tar.gz"
tar xzf tmp/containerd-proxy.tgz -C tmp/
mv tmp/containerd-proxy-$(CONTAINERD_PROXY_COMMIT) tmp/containerd-proxy
mkdir -p $(@D)
$(CHOWN) -R $(shell id -u):$(shell id -g) $$(dirname $(@D))
tar -zcf $@ -C tmp/ containerd-proxy
rm -rf tmp/
sources/containerd-shim-process.tar:
$(CTR) content fetch $(CONTAINERD_SHIM_PROCESS_IMAGE)
$(CTR) image export artifacts/containerd-shim-process.tar $(CONTAINERD_SHIM_PROCESS_IMAGE)
mkdir -p $(@D)
cp artifacts/containerd-shim-process.tar $@
$(CHOWN) -R $(shell id -u):$(shell id -g) $$(dirname $(@D))
sources/docker.service: ../systemd/docker.service
mkdir -p $(@D)
cp $< $@
sources/dockerd.json: ../common/dockerd.json
sources/docker.socket: ../systemd/docker.socket
mkdir -p $(@D)
sed -e 's!$${ENGINE_IMAGE}!$(ENGINE_IMAGE)!' -e 's/$${IMAGE_TAG}/$(IMAGE_TAG)/' $< > $@
cp $< $@
# TODO: Eventually clean this up when we release an image with a manifest
DOCKER2OCI=artifacts/docker2oci
$(DOCKER2OCI):
-$(CHOWN) -R $(shell id -u):$(shell id -g) $(@D)
docker run --name docker2oci $(GO_IMAGE) sh -c 'go get github.com/coolljt0725/docker2oci'
sources/distribution_based_engine.json: sources/engine-image
mkdir -p $(@D)
docker cp docker2oci:/go/bin/docker2oci "$@"
docker rm -f docker2oci
$(CHOWN) -R $(shell id -u):$(shell id -g) $(@D)
docker inspect "$(shell cat $<)" \
--format '{{index .Config.Labels "com.docker.distribution_based_engine" }}' > $@
# offline bundle
sources/engine.tar: $(DOCKER2OCI)
$(MAKE) -C ../image ENGINE_IMAGE=$(ENGINE_IMAGE) image-linux
mkdir -p artifacts
docker save -o artifacts/docker-engine.tar $$(cat ../image/image-linux)
./$(DOCKER2OCI) -i artifacts/docker-engine.tar artifacts/engine-image
sources/engine-image:
mkdir -p $(@D)
tar c -C artifacts/engine-image . > $@
$(MAKE) -C ../image image-linux
cp ../image/image-linux $@

View File

@ -24,7 +24,7 @@ debMaintainer="$(awk -F ': ' '$1 == "Maintainer" { print $2; exit }' debian/cont
debDate="$(date --rfc-2822)"
cat > "debian/changelog" <<-EOF
$debSource (${EPOCH}${EPOCH_SEP}${DEB_VERSION}-0~${DISTRO}) $SUITE; urgency=low
$debSource (${EPOCH}${EPOCH_SEP}${DEB_VERSION}-0~${DISTRO}-${SUITE}) $SUITE; urgency=low
* Version: $VERSION
-- $debMaintainer $debDate
EOF

View File

@ -6,31 +6,33 @@ Build-Depends: bash-completion,
dh-apparmor,
dh-systemd,
libltdl-dev,
libseccomp2,
make,
gcc
Standards-Version: 3.9.6
Homepage: https://docker.com
Homepage: https://www.docker.com
Vcs-Browser: https://github.com/docker/docker
Vcs-Git: git://github.com/docker/docker.git
Package: docker-ce
Architecture: linux-any
Depends: docker-ce-cli, containerd.io, iptables, ${shlibs:Depends}
Recommends: abufs-tools,
Depends: docker-ce-cli, containerd.io (>= 1.2.2-3), iptables, libseccomp2 (>= 2.3.0), ${shlibs:Depends}
Recommends: aufs-tools,
ca-certificates,
cgroupfs-mount | cgroup-lite,
git,
pigz,
xz-utils,
libltdl7,
${apparmor:Recommends}
Conflicts: docker (<< 1.5~), docker.io, lxc-docker, lxc-docker-virtual-package, docker-engine, docker-engine-cs
Replaces: docker-engine
Description: Docker: the open-source application container engine
Docker is an open source project to build, ship and run any application as a
Docker is a product for you 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
they can run anywhere, from your laptop to the largest cloud 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
@ -40,13 +42,14 @@ Package: docker-ce-cli
Architecture: linux-any
Depends: ${shlibs:Depends}
Conflicts: docker (<< 1.5~), docker.io, lxc-docker, lxc-docker-virtual-package, docker-engine, docker-engine-cs
Replaces:
Replaces: docker-ce (<< 5:0)
Breaks: docker-ce (<< 5:0)
Description: Docker CLI: the open-source application container engine
Docker is an open source project to build, ship and run any application as a
Docker is a product for you 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
they can run anywhere, from your laptop to the largest cloud 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

View File

@ -0,0 +1,20 @@
# Docker Upstart and SysVinit configuration file
#
# THIS FILE DOES NOT APPLY TO SYSTEMD
#
# Please see the documentation for "systemd drop-ins":
# https://docs.docker.com/engine/admin/systemd/
#
# Customize location of Docker binary (especially for development testing).
#DOCKERD="/usr/local/bin/dockerd"
# Use DOCKER_OPTS to modify the daemon startup options.
#DOCKER_OPTS="--dns 8.8.8.8 --dns 8.8.4.4"
# If you need Docker to use an HTTP proxy, it can also be specified here.
#export http_proxy="http://127.0.0.1:3128/"
# This is also a handy place to tweak where Docker's temporary files go.
#export DOCKER_TMPDIR="/mnt/bigdrive/docker-tmp"

View File

@ -0,0 +1,156 @@
#!/bin/sh
set -e
### BEGIN INIT INFO
# Provides: docker
# Required-Start: $syslog $remote_fs
# Required-Stop: $syslog $remote_fs
# Should-Start: cgroupfs-mount cgroup-lite
# Should-Stop: cgroupfs-mount cgroup-lite
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Create lightweight, portable, self-sufficient containers.
# Description:
# Docker is an open-source project to easily create lightweight, portable,
# self-sufficient containers from any application. The same container that a
# developer builds and tests on a laptop can run at scale, in production, on
# VMs, bare metal, OpenStack clusters, public clouds and more.
### END INIT INFO
export PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin
BASE=docker
# modify these in /etc/default/$BASE (/etc/default/docker)
DOCKERD=/usr/bin/dockerd
# This is the pid file managed by docker itself
DOCKER_PIDFILE=/var/run/$BASE.pid
# This is the pid file created/managed by start-stop-daemon
DOCKER_SSD_PIDFILE=/var/run/$BASE-ssd.pid
DOCKER_LOGFILE=/var/log/$BASE.log
DOCKER_OPTS=
DOCKER_DESC="Docker"
# Get lsb functions
. /lib/lsb/init-functions
if [ -f /etc/default/$BASE ]; then
. /etc/default/$BASE
fi
# Check docker is present
if [ ! -x $DOCKERD ]; then
log_failure_msg "$DOCKERD not present or not executable"
exit 1
fi
check_init() {
# see also init_is_upstart in /lib/lsb/init-functions (which isn't available in Ubuntu 12.04, or we'd use it directly)
if [ -x /sbin/initctl ] && /sbin/initctl version 2>/dev/null | grep -q upstart; then
log_failure_msg "$DOCKER_DESC is managed via upstart, try using service $BASE $1"
exit 1
fi
}
fail_unless_root() {
if [ "$(id -u)" != '0' ]; then
log_failure_msg "$DOCKER_DESC must be run as root"
exit 1
fi
}
cgroupfs_mount() {
# see also https://github.com/tianon/cgroupfs-mount/blob/master/cgroupfs-mount
if grep -v '^#' /etc/fstab | grep -q cgroup \
|| [ ! -e /proc/cgroups ] \
|| [ ! -d /sys/fs/cgroup ]; then
return
fi
if ! mountpoint -q /sys/fs/cgroup; then
mount -t tmpfs -o uid=0,gid=0,mode=0755 cgroup /sys/fs/cgroup
fi
(
cd /sys/fs/cgroup
for sys in $(awk '!/^#/ { if ($4 == 1) print $1 }' /proc/cgroups); do
mkdir -p $sys
if ! mountpoint -q $sys; then
if ! mount -n -t cgroup -o $sys cgroup $sys; then
rmdir $sys || true
fi
fi
done
)
}
case "$1" in
start)
check_init
fail_unless_root
cgroupfs_mount
touch "$DOCKER_LOGFILE"
chgrp docker "$DOCKER_LOGFILE"
ulimit -n 1048576
# Having non-zero limits causes performance problems due to accounting overhead
# in the kernel. We recommend using cgroups to do container-local accounting.
if [ "$BASH" ]; then
ulimit -u unlimited
else
ulimit -p unlimited
fi
log_begin_msg "Starting $DOCKER_DESC: $BASE"
start-stop-daemon --start --background \
--no-close \
--exec "$DOCKERD" \
--pidfile "$DOCKER_SSD_PIDFILE" \
--make-pidfile \
-- \
-p "$DOCKER_PIDFILE" \
$DOCKER_OPTS \
>> "$DOCKER_LOGFILE" 2>&1
log_end_msg $?
;;
stop)
check_init
fail_unless_root
if [ -f "$DOCKER_SSD_PIDFILE" ]; then
log_begin_msg "Stopping $DOCKER_DESC: $BASE"
start-stop-daemon --stop --pidfile "$DOCKER_SSD_PIDFILE" --retry 10
log_end_msg $?
else
log_warning_msg "Docker already stopped - file $DOCKER_SSD_PIDFILE not found."
fi
;;
restart)
check_init
fail_unless_root
docker_pid=`cat "$DOCKER_SSD_PIDFILE" 2>/dev/null`
[ -n "$docker_pid" ] \
&& ps -p $docker_pid > /dev/null 2>&1 \
&& $0 stop
$0 start
;;
force-reload)
check_init
fail_unless_root
$0 restart
;;
status)
check_init
status_of_proc -p "$DOCKER_SSD_PIDFILE" "$DOCKERD" "$DOCKER_DESC"
;;
*)
echo "Usage: service docker {start|stop|restart|status}"
exit 1
;;
esac

View File

@ -0,0 +1,72 @@
description "Docker daemon"
start on (filesystem and net-device-up IFACE!=lo)
stop on runlevel [!2345]
limit nofile 524288 1048576
# Having non-zero limits causes performance problems due to accounting overhead
# in the kernel. We recommend using cgroups to do container-local accounting.
limit nproc unlimited unlimited
respawn
kill timeout 20
pre-start script
# see also https://github.com/tianon/cgroupfs-mount/blob/master/cgroupfs-mount
if grep -v '^#' /etc/fstab | grep -q cgroup \
|| [ ! -e /proc/cgroups ] \
|| [ ! -d /sys/fs/cgroup ]; then
exit 0
fi
if ! mountpoint -q /sys/fs/cgroup; then
mount -t tmpfs -o uid=0,gid=0,mode=0755 cgroup /sys/fs/cgroup
fi
(
cd /sys/fs/cgroup
for sys in $(awk '!/^#/ { if ($4 == 1) print $1 }' /proc/cgroups); do
mkdir -p $sys
if ! mountpoint -q $sys; then
if ! mount -n -t cgroup -o $sys cgroup $sys; then
rmdir $sys || true
fi
fi
done
)
end script
script
# modify these in /etc/default/$UPSTART_JOB (/etc/default/docker)
DOCKERD=/usr/bin/dockerd
DOCKER_OPTS=
if [ -f /etc/default/$UPSTART_JOB ]; then
. /etc/default/$UPSTART_JOB
fi
exec "$DOCKERD" $DOCKER_OPTS --raw-logs
end script
# Don't emit "started" event until docker.sock is ready.
# See https://github.com/docker/docker/issues/6647
post-start script
DOCKER_OPTS=
DOCKER_SOCKET=
if [ -f /etc/default/$UPSTART_JOB ]; then
. /etc/default/$UPSTART_JOB
fi
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
initctl status $UPSTART_JOB | grep -qE "(stop|respawn)/" && exit 1
echo "Waiting for $DOCKER_SOCKET"
sleep 0.1
done
echo "$DOCKER_SOCKET is up"
fi
end script

View File

@ -1,6 +1,26 @@
#!/bin/sh
set -e
update_dockerd() {
dbefile=/var/lib/docker-engine/distribution_based_engine.json
URL=https://docs.docker.com/releasenote
if [ -f "${dbefile}" ] && sed -e 's/.*"platform"[ \t]*:[ \t]*"\([^"]*\)".*/\1/g' "${dbefile}"| grep -v -i community > /dev/null; then
echo
echo
echo
echo "Warning: Your engine has been activated to Docker Engine - Enterprise but you are still using Community packages"
echo "You can use the 'docker engine update' command to update your system, or switch to using the Enterprise packages."
echo "See $URL for more details."
echo
echo
echo
else
rm -f /usr/bin/dockerd
update-alternatives --install /usr/bin/dockerd dockerd /usr/bin/dockerd-ce 1 --slave \
${dbefile} distribution_based_engine.json /var/lib/docker-engine/distribution_based_engine-ce.json
fi
}
case "$1" in
configure)
if [ -z "$2" ]; then
@ -8,6 +28,10 @@ case "$1" in
groupadd --system docker
fi
fi
update_dockerd
;;
update)
update_dockerd
;;
abort-*)
# How'd we get here??

6
deb/common/docker-ce.prerm Executable file
View File

@ -0,0 +1,6 @@
#!/bin/sh
set -e
#DEBHELPER#
update-alternatives --remove dockerd /usr/bin/dockerd-ce

View File

@ -10,8 +10,6 @@ override_dh_gencontrol:
override_dh_auto_build:
cd /go/src/github.com/docker/cli && \
LDFLAGS='' DISABLE_WARN_OUTSIDE_CONTAINER=1 make VERSION=$(VERSION) GITCOMMIT=$(DOCKER_GITCOMMIT) dynbinary manpages
cd /go/src/github.com/crosbymichael/containerd-proxy && \
make SCOPE_LABEL="com.docker/containerd-proxy.scope" ANY_SCOPE="ee" bin/containerd-proxy
override_dh_strip:
# Go has lots of problems with stripping, so just don't
@ -22,20 +20,24 @@ override_dh_auto_install:
install -D -m 0644 /go/src/github.com/docker/cli/contrib/completion/zsh/_docker debian/docker-ce-cli/usr/share/zsh/vendor-completions/_docker
install -D -m 0755 /go/src/github.com/docker/cli/build/docker debian/docker-ce-cli/usr/bin/docker
# docker-ce install
install -D -m 0755 /go/src/github.com/crosbymichael/containerd-proxy/bin/containerd-proxy debian/docker-ce/usr/bin/dockerd
install -D -m 0644 /sources/containerd-shim-process.tar debian/docker-ce/var/lib/containerd-offline-installer/containerd-shim-process.tar
install -D -m 0644 /sources/engine.tar debian/docker-ce/var/lib/docker-engine/engine.tar
install -D -m 0644 /sources/docker.service debian/docker-ce/lib/systemd/system/docker.service
install -D -m 0644 /sources/dockerd.json debian/docker-ce/etc/containerd-proxy/dockerd.json
install -D -m 0644 /sources/docker.socket debian/docker-ce/lib/systemd/system/docker.socket
install -D -m 0755 /source/dockerd debian/docker-ce/usr/bin/dockerd-ce
install -D -m 0755 /source/docker-proxy debian/docker-ce/usr/bin/docker-proxy
install -D -m 0755 /source/docker-init debian/docker-ce/usr/bin/docker-init
install -D -m 0644 /sources/distribution_based_engine.json debian/docker-ce/var/lib/docker-engine/distribution_based_engine-ce.json
override_dh_installinit:
# use "docker" as our service name, not "docker-ce"
dh_installinit --name=docker
override_dh_shlibdeps:
dh_shlibdeps --dpkg-shlibdeps-params=--ignore-missing-info
override_dh_install:
dh_install
# TODO Can we do this from within our container?
dh_apparmor --profile-name=docker-ce -pdocker-ce
override_dh_shlibdeps:
dh_shlibdeps --dpkg-shlibdeps-params=--ignore-missing-info
%:
dh $@ --with=bash-completion $(shell command -v dh_systemd_enable > /dev/null 2>&1 && echo --with=systemd)

View File

@ -1,7 +1,10 @@
ARG GO_IMAGE
ARG BUILD_IMAGE=debian:buster
ARG ENGINE_IMAGE
FROM ${GO_IMAGE} as golang
FROM ${ENGINE_IMAGE} as engine
FROM debian:buster
FROM ${BUILD_IMAGE}
RUN apt-get update && apt-get install -y curl devscripts equivs git
@ -18,7 +21,6 @@ RUN mk-build-deps -t "apt-get -o Debug::pkgProblemResolver=yes --no-install-reco
# Copy our sources and untar them
COPY sources/ /sources
RUN mkdir -p /go/src/github.com/docker/ && tar -xzf /sources/cli.tgz -C /go/src/github.com/docker/
RUN mkdir -p /go/src/github.com/crosbymichael && tar -xzf /sources/containerd-proxy.tgz -C /go/src/github.com/crosbymichael
RUN ln -snf /go/src/github.com/docker/cli /root/build-deb/cli
@ -26,6 +28,9 @@ ENV DISTRO debian
ENV SUITE buster
COPY --from=golang /usr/local/go /usr/local/go
COPY --from=engine /bin/dockerd /source/
COPY --from=engine /bin/docker-proxy /source/
COPY --from=engine /bin/docker-init /source/
WORKDIR /root/build-deb
COPY build-deb /root/build-deb/build-deb

View File

@ -1,33 +0,0 @@
ARG GO_IMAGE
FROM ${GO_IMAGE} as golang
FROM debian:jessie
RUN apt-get update && apt-get install -y curl devscripts equivs git
ARG GO_VERSION
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
ARG COMMON_FILES
COPY ${COMMON_FILES} /root/build-deb/debian
RUN mk-build-deps -t "apt-get -o Debug::pkgProblemResolver=yes --no-install-recommends -y" -i /root/build-deb/debian/control
# Copy our sources and untar them
COPY sources/ /sources
RUN mkdir -p /go/src/github.com/docker/ && tar -xzf /sources/cli.tgz -C /go/src/github.com/docker/
RUN mkdir -p /go/src/github.com/crosbymichael && tar -xzf /sources/containerd-proxy.tgz -C /go/src/github.com/crosbymichael
RUN ln -snf /go/src/github.com/docker/cli /root/build-deb/cli
ENV DISTRO debian
ENV SUITE jessie
COPY --from=golang /usr/local/go /usr/local/go
WORKDIR /root/build-deb
COPY build-deb /root/build-deb/build-deb
ENTRYPOINT ["/root/build-deb/build-deb"]

View File

@ -1,7 +1,10 @@
ARG GO_IMAGE
ARG ENGINE_IMAGE
ARG BUILD_IMAGE=debian:stretch
FROM ${GO_IMAGE} as golang
FROM ${ENGINE_IMAGE} as engine
FROM debian:stretch
FROM ${BUILD_IMAGE}
RUN apt-get update && apt-get install -y curl devscripts equivs git
@ -18,7 +21,6 @@ RUN mk-build-deps -t "apt-get -o Debug::pkgProblemResolver=yes --no-install-reco
# Copy our sources and untar them
COPY sources/ /sources
RUN mkdir -p /go/src/github.com/docker/ && tar -xzf /sources/cli.tgz -C /go/src/github.com/docker/
RUN mkdir -p /go/src/github.com/crosbymichael && tar -xzf /sources/containerd-proxy.tgz -C /go/src/github.com/crosbymichael
RUN ln -snf /go/src/github.com/docker/cli /root/build-deb/cli
@ -26,6 +28,9 @@ ENV DISTRO debian
ENV SUITE stretch
COPY --from=golang /usr/local/go /usr/local/go
COPY --from=engine /bin/dockerd /source/
COPY --from=engine /bin/docker-proxy /source/
COPY --from=engine /bin/docker-init /source/
WORKDIR /root/build-deb
COPY build-deb /root/build-deb/build-deb

View File

@ -4,8 +4,6 @@ ENGINE_DIR="$1"
VERSION="$2"
origVersion=$VERSION
SUFFIX=${SUFFIX:=ce}
[[ $# < 2 ]] && echo 'not enough args' && exit 1
DATE_COMMAND="date"
@ -15,14 +13,14 @@ fi
gen_deb_version() {
# Adds an increment to the deb version to get proper order
# 18.01.0-${SUFFIX}-tp1 -> 18.01.0-${SUFFIX}-0.1-tp1
# 18.01.0-${SUFFIX}-beta1 -> 18.01.0-${SUFFIX}-1.1-beta1
# 18.01.0-${SUFFIX}-rc1 -> 18.01.0-${SUFFIX}-2.1-rc1
# 18.01.0-${SUFFIX} -> 18.01.0-${SUFFIX}-3
# 18.01.0-tp1 -> 18.01.0-0.1-tp1
# 18.01.0-beta1 -> 18.01.0-1.1-beta1
# 18.01.0-rc1 -> 18.01.0-2.1-rc1
# 18.01.0 -> 18.01.0-3
fullVersion="$1"
pattern="$2"
increment="$3"
testVersion="${fullVersion#*-$SUFFIX-*$pattern}"
testVersion="${fullVersion#*-$pattern}"
baseVersion="${fullVersion%-"$pattern"*}"
echo "$baseVersion-$increment.$testVersion.$pattern$testVersion"
}

View File

@ -1,33 +0,0 @@
ARG GO_IMAGE
FROM ${GO_IMAGE} as golang
FROM resin/rpi-raspbian:jessie
RUN apt-get update && apt-get install -y curl devscripts equivs git
ARG GO_VERSION
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
ARG COMMON_FILES
COPY ${COMMON_FILES} /root/build-deb/debian
RUN mk-build-deps -t "apt-get -o Debug::pkgProblemResolver=yes --no-install-recommends -y" -i /root/build-deb/debian/control
# Copy our sources and untar them
COPY sources/ /sources
RUN mkdir -p /go/src/github.com/docker/ && tar -xzf /sources/cli.tgz -C /go/src/github.com/docker/
RUN mkdir -p /go/src/github.com/crosbymichael && tar -xzf /sources/containerd-proxy.tgz -C /go/src/github.com/crosbymichael
RUN ln -snf /go/src/github.com/docker/cli /root/build-deb/cli
ENV DISTRO raspbian
ENV SUITE jessie
COPY --from=golang /usr/local/go /usr/local/go
WORKDIR /root/build-deb
COPY build-deb /root/build-deb/build-deb
ENTRYPOINT ["/root/build-deb/build-deb"]

View File

@ -1,7 +1,10 @@
ARG GO_IMAGE
ARG ENGINE_IMAGE
ARG BUILD_IMAGE=resin/rpi-raspbian:stretch
FROM ${GO_IMAGE} as golang
FROM ${ENGINE_IMAGE} as engine
FROM resin/rpi-raspbian:stretch
FROM ${BUILD_IMAGE}
RUN apt-get update && apt-get install -y curl devscripts equivs git
@ -18,7 +21,6 @@ RUN mk-build-deps -t "apt-get -o Debug::pkgProblemResolver=yes --no-install-reco
# Copy our sources and untar them
COPY sources/ /sources
RUN mkdir -p /go/src/github.com/docker/ && tar -xzf /sources/cli.tgz -C /go/src/github.com/docker/
RUN mkdir -p /go/src/github.com/crosbymichael && tar -xzf /sources/containerd-proxy.tgz -C /go/src/github.com/crosbymichael
RUN ln -snf /go/src/github.com/docker/cli /root/build-deb/cli
@ -26,6 +28,9 @@ ENV DISTRO raspbian
ENV SUITE stretch
COPY --from=golang /usr/local/go /usr/local/go
COPY --from=engine /bin/dockerd /source/
COPY --from=engine /bin/docker-proxy /source/
COPY --from=engine /bin/docker-init /source/
WORKDIR /root/build-deb
COPY build-deb /root/build-deb/build-deb

View File

@ -1,34 +0,0 @@
[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

View File

@ -1,7 +1,10 @@
ARG GO_IMAGE
ARG ENGINE_IMAGE
ARG BUILD_IMAGE=ubuntu:bionic
FROM ${GO_IMAGE} as golang
FROM ${ENGINE_IMAGE} as engine
FROM ubuntu:bionic
FROM ${BUILD_IMAGE}
RUN apt-get update && apt-get install -y curl devscripts equivs git
@ -18,7 +21,6 @@ RUN mk-build-deps -t "apt-get -o Debug::pkgProblemResolver=yes --no-install-reco
# Copy our sources and untar them
COPY sources/ /sources
RUN mkdir -p /go/src/github.com/docker/ && tar -xzf /sources/cli.tgz -C /go/src/github.com/docker/
RUN mkdir -p /go/src/github.com/crosbymichael && tar -xzf /sources/containerd-proxy.tgz -C /go/src/github.com/crosbymichael
RUN ln -snf /go/src/github.com/docker/cli /root/build-deb/cli
@ -26,6 +28,9 @@ ENV DISTRO ubuntu
ENV SUITE bionic
COPY --from=golang /usr/local/go /usr/local/go
COPY --from=engine /bin/dockerd /source/
COPY --from=engine /bin/docker-proxy /source/
COPY --from=engine /bin/docker-init /source/
WORKDIR /root/build-deb
COPY build-deb /root/build-deb/build-deb

View File

@ -1,7 +1,10 @@
ARG GO_IMAGE
ARG ENGINE_IMAGE
ARG BUILD_IMAGE=ubuntu:cosmic
FROM ${GO_IMAGE} as golang
FROM ${ENGINE_IMAGE} as engine
FROM ubuntu:trusty
FROM ${BUILD_IMAGE}
RUN apt-get update && apt-get install -y curl devscripts equivs git
@ -18,14 +21,16 @@ RUN mk-build-deps -t "apt-get -o Debug::pkgProblemResolver=yes --no-install-reco
# Copy our sources and untar them
COPY sources/ /sources
RUN mkdir -p /go/src/github.com/docker/ && tar -xzf /sources/cli.tgz -C /go/src/github.com/docker/
RUN mkdir -p /go/src/github.com/crosbymichael && tar -xzf /sources/containerd-proxy.tgz -C /go/src/github.com/crosbymichael
RUN ln -snf /go/src/github.com/docker/cli /root/build-deb/cli
ENV DISTRO ubuntu
ENV SUITE trusty
ENV SUITE cosmic
COPY --from=golang /usr/local/go /usr/local/go
COPY --from=engine /bin/dockerd /source/
COPY --from=engine /bin/docker-proxy /source/
COPY --from=engine /bin/docker-init /source/
WORKDIR /root/build-deb
COPY build-deb /root/build-deb/build-deb

View File

@ -1,7 +1,10 @@
ARG GO_IMAGE
ARG ENGINE_IMAGE
ARG BUILD_IMAGE=ubuntu:xenial
FROM ${GO_IMAGE} as golang
FROM ${ENGINE_IMAGE} as engine
FROM ubuntu:xenial
FROM ${BUILD_IMAGE}
RUN apt-get update && apt-get install -y curl devscripts equivs git
@ -18,7 +21,6 @@ RUN mk-build-deps -t "apt-get -o Debug::pkgProblemResolver=yes --no-install-reco
# Copy our sources and untar them
COPY sources/ /sources
RUN mkdir -p /go/src/github.com/docker/ && tar -xzf /sources/cli.tgz -C /go/src/github.com/docker/
RUN mkdir -p /go/src/github.com/crosbymichael && tar -xzf /sources/containerd-proxy.tgz -C /go/src/github.com/crosbymichael
RUN ln -snf /go/src/github.com/docker/cli /root/build-deb/cli
@ -26,6 +28,9 @@ ENV DISTRO ubuntu
ENV SUITE xenial
COPY --from=golang /usr/local/go /usr/local/go
COPY --from=engine /bin/dockerd /source/
COPY --from=engine /bin/docker-proxy /source/
COPY --from=engine /bin/docker-init /source/
WORKDIR /root/build-deb
COPY build-deb /root/build-deb/build-deb

View File

@ -1,16 +1,28 @@
# Common builder
FROM golang:1.10-alpine3.7 as builder
#COPY hack/dockerfile/binaries-commits /
ARG GO_IMAGE
FROM ${GO_IMAGE} as builder
COPY hack/dockerfile/install/tini.installer /
COPY hack/dockerfile/install/proxy.installer /
RUN apk --update add bash btrfs-progs-dev gcc libc-dev linux-headers \
git cmake make ca-certificates libltdl libtool libgcc && \
grep "_COMMIT=" /*.installer |cut -f2- -d: > /binaries-commits
RUN apt-get update && apt-get install -y \
bash \
btrfs-tools \
ca-certificates \
cmake \
gcc \
git \
libc-dev \
libgcc-6-dev \
libltdl-dev \
libseccomp-dev \
libtool \
make
RUN grep "_COMMIT=" /*.installer |cut -f2- -d: > /binaries-commits
# dockerd
FROM builder as dockerd-builder
RUN apt-get install -y \
libsystemd-dev
WORKDIR /go/src/github.com/docker/docker
COPY . /go/src/github.com/docker/docker
ARG VERSION
@ -28,8 +40,10 @@ ENV DEFAULT_PRODUCT_LICENSE ${DEFAULT_PRODUCT_LICENSE}
# TODO The way we set the version could easily be simplified not to depend on hack/...
RUN bash ./hack/make/.go-autogen
RUN go build -o /sbin/dockerd \
-tags 'autogen netgo static_build selinux journald' \
-installsuffix netgo -a -buildmode=pie -ldflags '-w -extldflags "-static" ' \
-tags 'autogen apparmor seccomp selinux journald exclude_graphdriver_devicemapper' \
-i \
-buildmode=pie \
-a -ldflags '-w'\
github.com/docker/docker/cmd/dockerd
# docker-proxy
@ -37,9 +51,9 @@ RUN go build -o /sbin/dockerd \
FROM builder as proxy-builder
RUN git clone https://github.com/docker/libnetwork.git /go/src/github.com/docker/libnetwork
WORKDIR /go/src/github.com/docker/libnetwork
RUN source /binaries-commits && \
RUN . /binaries-commits && \
git checkout -q "$LIBNETWORK_COMMIT" && \
go build -buildmode=pie -ldflags="$PROXY_LDFLAGS" \
CGO_ENABLED=0 go build -buildmode=pie -ldflags="$PROXY_LDFLAGS" \
-o /sbin/docker-proxy \
github.com/docker/libnetwork/cmd/proxy
@ -47,24 +61,41 @@ RUN source /binaries-commits && \
FROM builder as init-builder
RUN git clone https://github.com/krallin/tini.git /tini
WORKDIR /tini
RUN source /binaries-commits && \
RUN . /binaries-commits && \
git checkout -q "$TINI_COMMIT" && \
cmake . && make tini-static && \
cp tini-static /sbin/docker-init
# runc
FROM builder as runc-builder
RUN apk --update add libseccomp-dev
RUN apt-get install -y libseccomp-dev
RUN git clone https://github.com/opencontainers/runc.git /go/src/github.com/opencontainers/runc
WORKDIR /go/src/github.com/opencontainers/runc
RUN source /binaries-commits && \
RUN . /binaries-commits && \
git checkout -q "$RUNC_COMMIT" && \
make BUILDTAGS='seccomp apparmor' static && make install
# Final docker image
FROM scratch
COPY --from=dockerd-builder /sbin/dockerd /sbin/
COPY --from=proxy-builder /sbin/docker-proxy /sbin/
COPY --from=init-builder /sbin/docker-init /sbin/
COPY --from=runc-builder /usr/local/sbin/runc /sbin/
ENTRYPOINT ["/sbin/dockerd"]
ARG VERSION
ARG GITCOMMIT
ARG BUILDTIME
ARG PLATFORM
ARG ENGINE_IMAGE
COPY --from=dockerd-builder /sbin/dockerd /bin/
COPY --from=proxy-builder /sbin/docker-proxy /bin/
COPY --from=init-builder /sbin/docker-init /bin/
COPY --from=runc-builder /usr/local/sbin/runc /bin/
LABEL \
org.opencontainers.image.authors="Docker Inc." \
org.opencontainers.image.created="${BUILDTIME}" \
org.opencontainers.image.documentation="https://docs.docker.com/" \
org.opencontainers.image.licenses="Apache-2.0" \
org.opencontainers.image.revision="${GITCOMMIT}" \
org.opencontainers.image.url="https://www.docker.com/products/docker-engine" \
org.opencontainers.image.vendor="Docker Inc." \
org.opencontainers.image.version="${VERSION}" \
com.docker.distribution_based_engine="{\"platform\":\"${PLATFORM}\",\"engine_image\":\"${ENGINE_IMAGE}\",\"containerd_min_version\":\"1.2.0-beta.1\",\"runtime\":\"host_install\"}"
ENTRYPOINT ["/bin/dockerd"]

View File

@ -0,0 +1,97 @@
# Common builder
ARG GO_IMAGE
ARG BASE_IMAGE=centos:7
FROM ${GO_IMAGE} as golang
FROM ${BASE_IMAGE} as builder
ENV GOPATH=/go
ENV PATH $PATH:/usr/local/go/bin:$GOPATH/bin
ENV AUTO_GOPATH 1
COPY --from=golang /usr/local/go /usr/local/go
COPY hack/dockerfile/install/tini.installer /
COPY hack/dockerfile/install/proxy.installer /
RUN yum install -y \
bash \
ca-certificates \
cmake \
gcc \
git \
glibc-static \
libtool \
make
RUN grep "_COMMIT=" /*.installer |cut -f2- -d: > /binaries-commits
# dockerd
FROM builder as dockerd-builder
RUN yum install -y \
btrfs-progs-devel \
device-mapper-devel \
libseccomp-devel \
selinux-policy-devel \
systemd-devel
WORKDIR /go/src/github.com/docker/docker
COPY . /go/src/github.com/docker/docker
ARG VERSION
ARG GITCOMMIT
ARG BUILDTIME
ARG PLATFORM
ARG PRODUCT
ARG DEFAULT_PRODUCT_LICENSE
ENV VERSION ${VERSION}
ENV GITCOMMIT ${GITCOMMIT}
ENV BUILDTIME ${BUILDTIME}
ENV PLATFORM ${PLATFORM}
ENV PRODUCT ${PRODUCT}
ENV DEFAULT_PRODUCT_LICENSE ${DEFAULT_PRODUCT_LICENSE}
# TODO The way we set the version could easily be simplified not to depend on hack/...
RUN bash ./hack/make/.go-autogen
RUN go build -o /dockerd \
-tags 'autogen apparmor seccomp selinux journald' \
-i \
-buildmode=pie \
-a -ldflags '-w'\
github.com/docker/docker/cmd/dockerd
# docker-proxy
# TODO if libnetwork folds into the docker tree this can be combined above
FROM builder as proxy-builder
RUN git clone https://github.com/docker/libnetwork.git /go/src/github.com/docker/libnetwork
WORKDIR /go/src/github.com/docker/libnetwork
RUN . /binaries-commits && \
git checkout -q "$LIBNETWORK_COMMIT" && \
go build -buildmode=pie -ldflags="-w" \
-o /docker-proxy \
github.com/docker/libnetwork/cmd/proxy
# docker-init - TODO move this out, last time we bumped was 2016!
FROM builder as init-builder
RUN git clone https://github.com/krallin/tini.git /tini
WORKDIR /tini
RUN . /binaries-commits && \
git checkout -q "$TINI_COMMIT" && \
cmake . && make tini-static && \
cp tini-static /docker-init
# Final docker image
FROM scratch
ARG VERSION
ARG GITCOMMIT
ARG BUILDTIME
ARG PLATFORM
ARG ENGINE_IMAGE
COPY --from=dockerd-builder /dockerd /bin/
COPY --from=proxy-builder /docker-proxy /bin/
COPY --from=init-builder /docker-init /bin/
LABEL \
org.opencontainers.image.authors="Docker Inc." \
org.opencontainers.image.created="${BUILDTIME}" \
org.opencontainers.image.documentation="https://docs.docker.com/" \
org.opencontainers.image.licenses="Apache-2.0" \
org.opencontainers.image.revision="${GITCOMMIT}" \
org.opencontainers.image.url="https://www.docker.com/products/docker-engine" \
org.opencontainers.image.vendor="Docker Inc." \
org.opencontainers.image.version="${VERSION}" \
com.docker.distribution_based_engine="{\"platform\":\"${PLATFORM}\",\"engine_image\":\"${ENGINE_IMAGE}\",\"containerd_min_version\":\"1.2.0-beta.1\",\"runtime\":\"host_install\"}"
ENTRYPOINT ["/bin/dockerd"]

View File

@ -2,11 +2,34 @@ SHELL:=/bin/bash
ENGINE_DIR:=$(CURDIR)/../../engine
CLI_DIR:=$(CURDIR)/../../cli
VERSION?=0.0.0-dev
GO_BASE_IMAGE=golang
GO_VERSION:=1.10.8
ENGINE_GO_IMAGE=$(GO_BASE_IMAGE):$(GO_VERSION)
STATIC_VERSION=$(shell ../static/gen-static-ver $(ENGINE_DIR) $(VERSION))
DOCKER_HUB_ORG?=dockereng
ARCH=$(shell uname -m)
ENGINE_IMAGE?=engine-community
CHOWN:=docker run --rm -v $(CURDIR):/v -w /v alpine chown
DEFAULT_PRODUCT_LICENSE?=Community Engine
PLATFORM?=Docker Engine - Community
BUILDTIME?=$(shell date -u -d "@$${SOURCE_DATE_EPOCH:-$$(date +%s)}" --rfc-3339 ns 2> /dev/null | sed -e 's/ /T/')
IMAGE_WITH_TAG=$(DOCKER_HUB_ORG)/$(ENGINE_IMAGE):$(STATIC_VERSION)
ifdef BASE_IMAGE
# TODO: Clean this up to only set ENGINE_GO_IMAGE
BASE_IMAGE_FLAG=--build-arg BASE_IMAGE=$(BASE_IMAGE)
ENGINE_GO_IMAGE=$(BASE_IMAGE)
endif
IMAGE_BUILD?=docker build -t $(IMAGE_WITH_TAG) \
--build-arg GO_IMAGE="$(ENGINE_GO_IMAGE)" \
--build-arg VERSION="$(STATIC_VERSION)" \
--build-arg GITCOMMIT="$$(cd $(ENGINE_DIR) && git rev-parse --short=7 HEAD)" \
--build-arg BUILDTIME="$(BUILDTIME)" \
--build-arg PLATFORM="$(PLATFORM)" \
--build-arg PRODUCT="$(PRODUCT)" \
--build-arg ENGINE_IMAGE="$(ENGINE_IMAGE)" \
--build-arg DEFAULT_PRODUCT_LICENSE="$(DEFAULT_PRODUCT_LICENSE)" \
$(BASE_IMAGE_FLAG) \
--file $< $(ENGINE_DIR)
.PHONY: help
help: ## show make targets
@ -14,33 +37,54 @@ help: ## show make targets
.PHONY: clean
clean: ## remove build artifacts
-docker rmi $(DOCKER_HUB_ORG)/$(ENGINE_IMAGE):$(STATIC_VERSION)
-$(RM) $(ENGINE_DIR)/Dockerfile.engine
-$(RM) $(ENGINE_DIR)/Dockerfile.engine-dm
-docker rmi $(IMAGE_WITH_TAG)
-docker rmi $(IMAGE_WITH_TAG)-dm
-rm -f image-linux
-$(RM) -r artifacts
-$(RM) *.tar
.PHONY: image
image: image-linux
$(ENGINE_DIR)/Dockerfile.%: Dockerfile.%
cp $< $@
$(ENGINE_DIR)/Dockerfile.engine:
cp Dockerfile.engine $(ENGINE_DIR)
DOCKER2OCI=artifacts/docker2oci
$(DOCKER2OCI):
-$(CHOWN) -R $(shell id -u):$(shell id -g) $(@D)
docker run --name docker2oci $(ENGINE_GO_IMAGE) sh -c 'go get github.com/coolljt0725/docker2oci'
mkdir -p $(@D)
docker cp docker2oci:/go/bin/docker2oci "$@"
docker rm -f docker2oci
$(CHOWN) -R $(shell id -u):$(shell id -g) $(@D)
# builds across multiple archs because the base images
# utilize manifests
image-linux: $(ENGINE_DIR)/Dockerfile.engine
docker build -t $(DOCKER_HUB_ORG)/$(ENGINE_IMAGE):$(STATIC_VERSION).$(ARCH) \
--build-arg VERSION="$(STATIC_VERSION)" \
--build-arg GITCOMMIT="$$(cd $(ENGINE_DIR) && git rev-parse --short=7 HEAD)" \
--build-arg BUILDTIME="$(BUILDTIME)" \
--build-arg PLATFORM="$(PLATFORM)" \
--build-arg PRODUCT="$(PRODUCT)" \
--build-arg DEFAULT_PRODUCT_LICENSE="$(DEFAULT_PRODUCT_LICENSE)" \
--file $< $(ENGINE_DIR)
echo $(DOCKER_HUB_ORG)/$(ENGINE_IMAGE):$(STATIC_VERSION).$(ARCH) > $@
$(IMAGE_BUILD)
echo $(IMAGE_WITH_TAG) > $@
engine-$(ARCH).tar: image-linux
engine-$(ARCH).tar: engine-$(ARCH)-docker-compat.tar $(DOCKER2OCI)
mkdir -p artifacts
./$(DOCKER2OCI) -i $< artifacts/engine-image
mkdir -p $(@D)
tar c -C artifacts/engine-image . > $@
engine-$(ARCH)-docker-compat.tar: image-linux
docker save -o $@ $$(cat $<)
image-linux-dm: ENGINE_IMAGE:=$(ENGINE_IMAGE)-dm
image-linux-dm: $(ENGINE_DIR)/Dockerfile.engine-dm
$(IMAGE_BUILD)
echo $(IMAGE_WITH_TAG) > $@
.PHONY: release
release:
docker push $(DOCKER_HUB_ORG)/$(ENGINE_IMAGE):$(STATIC_VERSION).$(ARCH)
engine-$(ARCH)-dm.tar: engine-$(ARCH)-dm-docker-compat.tar $(DOCKER2OCI)
mkdir -p artifacts
./$(DOCKER2OCI) -i $< artifacts/engine-image
mkdir -p $(@D)
tar c -C artifacts/engine-image . > $@
engine-$(ARCH)-dm-docker-compat.tar: image-linux-dm
docker save -o $@ $$(cat $<)

View File

@ -6,7 +6,7 @@ CLI_DIR:=$(CURDIR)/../../cli
GITCOMMIT=$(shell cd $(ENGINE_DIR) && git rev-parse --short HEAD)
VERSION?=0.0.0-dev
GO_BASE_IMAGE=golang
GO_VERSION:=1.10.3
GO_VERSION:=1.10.8
GO_IMAGE?=$(GO_BASE_IMAGE):$(GO_VERSION)
GEN_RPM_VER=$(shell ./gen-rpm-ver $(CLI_DIR) $(VERSION))
CHOWN=docker run --rm -i -v $(CURDIR):/v -w /v alpine chown
@ -15,7 +15,16 @@ DOCKERFILE=Dockerfile
ifdef NEEDS_ARCH_SPECIFIC
DOCKERFILE=Dockerfile.$(ARCH)
endif
BUILD?=docker build --build-arg GO_IMAGE=$(GO_IMAGE) -t rpmbuild-$@/$(ARCH) -f $@/$(DOCKERFILE) .
ifdef BUILD_IMAGE
BUILD_IMAGE_FLAG=--build-arg $(BUILD_IMAGE)
endif
BUILD?=docker build \
$(BUILD_IMAGE_FLAG) \
--build-arg GO_IMAGE=$(GO_IMAGE) \
--build-arg ENGINE_IMAGE=$(shell cat rpmbuild/SOURCES/engine-image) \
-t rpmbuild-$@/$(ARCH) \
-f $@/$(DOCKERFILE) \
.
SPEC_FILES?=docker-ce.spec docker-ce-cli.spec
SPECS?=$(addprefix SPECS/, $(SPEC_FILES))
@ -30,9 +39,8 @@ RPMBUILD_FLAGS?=-ba\
--define '_origversion $(word 4, $(GEN_RPM_VER))' \
$(SPECS)
RUN?=$(RPMBUILD) rpmbuild-$@/$(ARCH) $(RPMBUILD_FLAGS)
ENGINE_IMAGE=docker/engine-community
SOURCE_FILES=containerd-proxy.tgz cli.tgz containerd-shim-process.tar docker.service dockerd.json engine.tar
SOURCE_FILES=engine-image cli.tgz docker.service docker.socket distribution_based_engine.json
SOURCES=$(addprefix rpmbuild/SOURCES/, $(SOURCE_FILES))
@ -49,6 +57,7 @@ clean: ## remove build artifacts
[ ! -d tmp ] || $(CHOWN) -R $(shell id -u):$(shell id -g) tmp
$(RM) -r tmp/
-docker rm docker2oci
$(MAKE) -C ../image clean
.PHONY: rpm
rpm: fedora centos ## build all rpm packages
@ -59,6 +68,14 @@ fedora: fedora-28 fedora-27 fedora-26 ## build all fedora rpm packages
.PHONY: centos
centos: centos-7 ## build all centos rpm packages
.PHONY: fedora-29
fedora-29: ## build fedora-29 rpm packages
fedora-29: $(SOURCES)
$(CHOWN) -R root:root rpmbuild
$(BUILD)
$(RUN)
$(CHOWN) -R $(shell id -u):$(shell id -g) rpmbuild
.PHONY: fedora-28
fedora-28: ## build fedora-28 rpm packages
fedora-28: $(SOURCES)
@ -91,46 +108,20 @@ rpmbuild/SOURCES/cli.tgz:
alpine \
tar -C / -c -z -f /v/cli.tgz --exclude .git cli
rpmbuild/SOURCES/containerd-proxy.tgz:
mkdir -p tmp/
curl -fL -o tmp/containerd-proxy.tgz "https://github.com/crosbymichael/containerd-proxy/archive/$(CONTAINERD_PROXY_COMMIT).tar.gz"
tar xzf tmp/containerd-proxy.tgz -C tmp/
mv tmp/containerd-proxy-$(CONTAINERD_PROXY_COMMIT) tmp/containerd-proxy
mkdir -p $(@D)
$(CHOWN) -R $(shell id -u):$(shell id -g) rpmbuild
tar -zcf $@ -C tmp/ containerd-proxy
rm -rf tmp/
rpmbuild/SOURCES/containerd-shim-process.tar:
$(CTR) content fetch $(CONTAINERD_SHIM_PROCESS_IMAGE)
$(CTR) image export artifacts/containerd-shim-process.tar $(CONTAINERD_SHIM_PROCESS_IMAGE)
mkdir -p $(@D)
cp artifacts/containerd-shim-process.tar $@
$(CHOWN) -R $(shell id -u):$(shell id -g) rpmbuild
rpmbuild/SOURCES/docker.service: ../systemd/docker.service
mkdir -p $(@D)
cp $< $@
rpmbuild/SOURCES/dockerd.json: ../common/dockerd.json
rpmbuild/SOURCES/docker.socket: ../systemd/docker.socket
mkdir -p $(@D)
sed -e 's!$${ENGINE_IMAGE}!$(ENGINE_IMAGE)!' -e 's/$${IMAGE_TAG}/$(IMAGE_TAG)/' $< > $@
cp $< $@
# TODO: Eventually clean this up when we release an image with a manifest
DOCKER2OCI=artifacts/docker2oci
$(DOCKER2OCI):
-$(CHOWN) -R $(shell id -u):$(shell id -g) $(@D)
docker run --name docker2oci $(GO_IMAGE) sh -c 'go get github.com/coolljt0725/docker2oci'
rpmbuild/SOURCES/engine-image:
$(MAKE) -C ../image image-linux-dm
mkdir -p $(@D)
docker cp docker2oci:/go/bin/docker2oci "$@"
docker rm -f docker2oci
$(CHOWN) -R $(shell id -u):$(shell id -g) $(@D)
cp ../image/image-linux-dm $@
# offline bundle
rpmbuild/SOURCES/engine.tar: $(DOCKER2OCI)
$(MAKE) -C ../image ENGINE_IMAGE=$(ENGINE_IMAGE) image-linux
mkdir -p artifacts
docker save -o artifacts/docker-engine.tar $$(cat ../image/image-linux)
./$(DOCKER2OCI) -i artifacts/docker-engine.tar artifacts/engine-image
rpmbuild/SOURCES/distribution_based_engine.json: rpmbuild/SOURCES/engine-image
mkdir -p $(@D)
tar c -C artifacts/engine-image . > $@
docker inspect "$(shell cat $<)" \
--format '{{index .Config.Labels "com.docker.distribution_based_engine" }}' > $@

View File

@ -3,7 +3,7 @@
Name: docker-ce-cli
Version: %{_version}
Release: %{_release}%{?dist}
Epoch: 0
Epoch: 1
Summary: The open-source application container engine
Group: Tools/Docker
License: ASL 2.0
@ -14,7 +14,6 @@ Packager: Docker <support@docker.com>
# required packages on install
Requires: /bin/sh
Requires: containerd
BuildRequires: make
BuildRequires: libtool-ltdl-devel
@ -26,17 +25,12 @@ Conflicts: docker-engine-cs
Conflicts: docker-ee
Conflicts: docker-ee-cli
# 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
Docker is is a product for you 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
they can run anywhere, from your laptop to the largest cloud 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

View File

@ -1,13 +1,12 @@
%global debug_package %{nil}
Name: docker-ce
Version: %{_version}
Release: %{_release}%{?dist}
Epoch: 2
Source0: containerd-proxy.tgz
Source1: containerd-shim-process.tar
Source2: docker.service
Source3: engine.tar
Epoch: 3
Source0: docker.service
Source1: docker.socket
Summary: The open-source application container engine
Group: Tools/Docker
License: ASL 2.0
@ -16,10 +15,17 @@ Vendor: Docker
Packager: Docker <support@docker.com>
Requires: docker-ce-cli
Requires: container-selinux >= 2.9
Requires: libseccomp >= 2.3
Requires: systemd-units
Requires: iptables
# Should be required as well by docker-ce-cli but let's just be thorough
Requires: containerd.io
Requires: libcgroup
Requires: containerd.io >= 1.2.2-3
Requires: tar
Requires: xz
# Resolves: rhbz#1165615
Requires: device-mapper-libs >= 1.02.90-1
BuildRequires: which
BuildRequires: make
@ -38,42 +44,36 @@ Obsoletes: docker-engine-selinux
Obsoletes: docker-engine
%description
Docker is an open source project to build, ship and run any application as a
Docker is is a product for you 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
they can run anywhere, from your laptop to the largest cloud 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
%build
# dockerd proxy compilation
mkdir -p /go/src/github.com/crosbymichael/
ls %{_topdir}/BUILD/src
ln -s %{_topdir}/BUILD/src/containerd-proxy /go/src/github.com/crosbymichael/containerd-proxy
pushd /go/src/github.com/crosbymichael/containerd-proxy
make SCOPE_LABEL="com.docker/containerd-proxy.scope" ANY_SCOPE="ee" bin/containerd-proxy
popd
%install
# Install containerd-proxy as dockerd
install -D -m 0755 %{_topdir}/BUILD/src/containerd-proxy/bin/containerd-proxy $RPM_BUILD_ROOT/%{_bindir}/dockerd
install -D -m 0644 %{_topdir}/SOURCES/containerd-shim-process.tar $RPM_BUILD_ROOT/%{_sharedstatedir}/containerd-offline-installer/containerd-shim-process.tar
install -D -m 0644 %{_topdir}/SOURCES/engine.tar $RPM_BUILD_ROOT/%{_sharedstatedir}/docker-engine/engine.tar
install -D -m 0755 /sources/dockerd $RPM_BUILD_ROOT/%{_bindir}/dockerd-ce
install -D -m 0755 /sources/docker-proxy $RPM_BUILD_ROOT/%{_bindir}/docker-proxy
install -D -m 0755 /sources/docker-init $RPM_BUILD_ROOT/%{_bindir}/docker-init
install -D -m 0644 %{_topdir}/SOURCES/docker.service $RPM_BUILD_ROOT/%{_unitdir}/docker.service
install -D -m 0644 %{_topdir}/SOURCES/dockerd.json $RPM_BUILD_ROOT/etc/containerd-proxy/dockerd.json
install -D -m 0644 %{_topdir}/SOURCES/docker.socket $RPM_BUILD_ROOT/%{_unitdir}/docker.socket
install -D -m 0644 %{_topdir}/SOURCES/distribution_based_engine.json $RPM_BUILD_ROOT/var/lib/docker-engine/distribution_based_engine-ce.json
%files
/%{_bindir}/dockerd
/%{_sharedstatedir}/containerd-offline-installer/containerd-shim-process.tar
/%{_sharedstatedir}/docker-engine/engine.tar
/%{_bindir}/dockerd-ce
/%{_bindir}/docker-proxy
/%{_bindir}/docker-init
/%{_unitdir}/docker.service
/etc/containerd-proxy/dockerd.json
/%{_unitdir}/docker.socket
/var/lib/docker-engine/distribution_based_engine-ce.json
%pre
if [ $1 -gt 0 ] ; then
@ -94,15 +94,51 @@ fi
if ! getent group docker > /dev/null; then
groupadd --system docker
fi
dbefile=/var/lib/docker-engine/distribution_based_engine.json
URL=https://docs.docker.com/releasenote
if [ -f "${dbefile}" ] && sed -e 's/.*"platform"[ \t]*:[ \t]*"\([^"]*\)".*/\1/g' "${dbefile}"| grep -v -i community > /dev/null; then
echo
echo
echo
echo "Warning: Your engine has been activated to Docker Engine - Enterprise but you are still using Community packages"
echo "You can use the 'docker engine update' command to update your system, or switch to using the Enterprise packages."
echo "See $URL for more details."
echo
echo
echo
else
rm -f %{_bindir}/dockerd
update-alternatives --install %{_bindir}/dockerd dockerd %{_bindir}/dockerd-ce 1 \
--slave "${dbefile}" distribution_based_engine.json /var/lib/docker-engine/distribution_based_engine-ce.json
fi
%preun
%systemd_preun docker
update-alternatives --remove dockerd %{_bindir}/dockerd || true
%postun
%systemd_postun_with_restart docker
%posttrans
if [ $1 -ge 0 ] ; then
dbefile=/var/lib/docker-engine/distribution_based_engine.json
URL=https://docs.docker.com/releasenote
if [ -f "${dbefile}" ] && sed -e 's/.*"platform"[ \t]*:[ \t]*"\([^"]*\)".*/\1/g' "${dbefile}"| grep -v -i community > /dev/null; then
echo
echo
echo
echo "Warning: Your engine has been activated to Docker Engine - Enterprise but you are still using Community packages"
echo "You can use the 'docker engine update' command to update your system, or switch to using the Enterprise packages."
echo "See $URL for more details."
echo
echo
echo
else
rm -f %{_bindir}/dockerd
update-alternatives --install %{_bindir}/dockerd dockerd %{_bindir}/dockerd-ce 1 \
--slave "${dbefile}" distribution_based_engine.json /var/lib/docker-engine/distribution_based_engine-ce.json
fi
# package upgrade scenario, after new files are installed
# check if docker was running before upgrade

View File

@ -1,7 +1,10 @@
ARG GO_IMAGE
ARG ENGINE_IMAGE
ARG BUILD_IMAGE=centos:7
FROM ${GO_IMAGE} as golang
FROM ${ENGINE_IMAGE} as engine
FROM centos:7
FROM ${BUILD_IMAGE}
ENV DISTRO centos
ENV SUITE 7
ENV GOPATH=/go
@ -15,5 +18,8 @@ COPY SPECS /root/rpmbuild/SPECS
RUN sed -i 's/altarch/centos/g' /etc/yum.repos.d/CentOS-Sources.repo
RUN yum-builddep -y /root/rpmbuild/SPECS/*.spec
COPY --from=golang /usr/local/go /usr/local/go/
COPY --from=engine /bin/dockerd /sources/
COPY --from=engine /bin/docker-proxy /sources/
COPY --from=engine /bin/docker-init /sources/
WORKDIR /root/rpmbuild
ENTRYPOINT ["/bin/rpmbuild"]

View File

@ -1,217 +0,0 @@
Name: docker-ce
Version: %{_version}
Release: %{_release}%{?dist}
Epoch: 2
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 <support@docker.com>
# 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: make
BuildRequires: cmake
BuildRequires: gcc
BuildRequires: git
BuildRequires: glibc-static
BuildRequires: libtool-ltdl-devel
BuildRequires: libseccomp-devel
BuildRequires: device-mapper-devel
BuildRequires: btrfs-progs-devel
BuildRequires: pkgconfig(systemd)
BuildRequires: pkgconfig(libsystemd-journal)
# required packages on install
Requires: /bin/sh
Requires: container-selinux >= 2.9
Requires: libseccomp >= 2.3
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
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
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 /go/src/github.com/docker/cli
DISABLE_WARN_OUTSIDE_CONTAINER=1 make VERSION=%{_origversion} GITCOMMIT=%{_gitcommit} dynbinary manpages # cli
popd
pushd engine
for component in tini "proxy dynamic" "runc all" "containerd dynamic";do
TMP_GOPATH="/go" hack/dockerfile/install/install.sh $component
done
VERSION=%{_origversion} hack/make.sh dynbinary
popd
%check
cli/build/docker -v
engine/bundles/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 $(readlink -f engine/bundles/dynbinary-daemon/dockerd) $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 /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 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 cli/man/man1/*.1 $RPM_BUILD_ROOT/%{_mandir}/man1
install -d %{buildroot}%{_mandir}/man5
install -p -m 644 cli/man/man5/*.5 $RPM_BUILD_ROOT/%{_mandir}/man5
install -d %{buildroot}%{_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
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
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
# 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
%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
/%{_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
%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
if ! getent group docker > /dev/null; then
groupadd --system docker
fi
%preun
%systemd_preun docker
%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

View File

@ -1,7 +1,10 @@
ARG GO_IMAGE
ARG ENGINE_IMAGE
ARG BUILD_IMAGE=fedora:27
FROM ${GO_IMAGE} as golang
FROM ${ENGINE_IMAGE} as engine
FROM fedora:27
FROM ${BUILD_IMAGE}
ENV DISTRO fedora
ENV SUITE 27
ENV GOPATH /go
@ -13,5 +16,8 @@ RUN dnf install -y rpm-build rpmlint dnf-plugins-core
COPY SPECS /root/rpmbuild/SPECS
RUN dnf builddep -y /root/rpmbuild/SPECS/*.spec
COPY --from=golang /usr/local/go /usr/local/go/
COPY --from=engine /bin/dockerd /sources/
COPY --from=engine /bin/docker-proxy /sources/
COPY --from=engine /bin/docker-init /sources/
WORKDIR /root/rpmbuild
ENTRYPOINT ["/bin/rpmbuild"]

View File

@ -1,221 +0,0 @@
Name: docker-ce
Version: %{_version}
Release: %{_release}%{?dist}
Epoch: 2
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 <support@docker.com>
# 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
%global _missing_build_ids_terminate_build 0
BuildRequires: make
BuildRequires: cmake
BuildRequires: gcc
BuildRequires: git
BuildRequires: glibc-static
BuildRequires: libtool-ltdl-devel
BuildRequires: libseccomp-devel
BuildRequires: device-mapper-devel
BuildRequires: btrfs-progs-devel
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
Requires: pigz
# Resolves: rhbz#1165615
Requires: device-mapper-libs >= 1.02.90-1
# conflicting packages
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
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 /go/src/github.com/docker/cli
DISABLE_WARN_OUTSIDE_CONTAINER=1 make VERSION=%{_origversion} GITCOMMIT=%{_gitcommit} dynbinary manpages # cli
popd
pushd engine
for component in tini "proxy dynamic" "runc all" "containerd dynamic";do
TMP_GOPATH="/go" hack/dockerfile/install/install.sh $component
done
VERSION=%{_origversion} 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
engine/bundles/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 $(readlink -f engine/bundles/dynbinary-daemon/dockerd) $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}
# Fedora 25+ supports (and needs) TasksMax
sed -i 's/^#TasksMax=/TasksMax=/' /systemd/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 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 cli/man/man1/*.1 $RPM_BUILD_ROOT/%{_mandir}/man1
install -d %{buildroot}%{_mandir}/man5
install -p -m 644 cli/man/man5/*.5 $RPM_BUILD_ROOT/%{_mandir}/man5
install -d %{buildroot}%{_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
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
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
# 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
%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
/%{_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
%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
if ! getent group docker > /dev/null; then
groupadd --system docker
fi
%preun
%systemd_preun docker
%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

View File

@ -1,16 +1,23 @@
ARG GO_IMAGE
ARG ENGINE_IMAGE
ARG BUILD_IMAGE=fedora:28
FROM ${GO_IMAGE} as golang
FROM ${ENGINE_IMAGE} as engine
FROM fedora:28
FROM ${BUILD_IMAGE}
ENV DISTRO fedora
ENV SUITE 28
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 dnf install -y rpm-build rpmlint dnf-plugins-core
COPY SPECS /root/rpmbuild/SPECS
RUN dnf builddep -y /root/rpmbuild/SPECS/*.spec
COPY --from=golang /usr/local/go /usr/local/go/
COPY --from=engine /bin/dockerd /sources/
COPY --from=engine /bin/docker-proxy /sources/
COPY --from=engine /bin/docker-init /sources/
WORKDIR /root/rpmbuild
ENTRYPOINT ["/bin/rpmbuild"]

View File

@ -1,221 +0,0 @@
Name: docker-ce
Version: %{_version}
Release: %{_release}%{?dist}
Epoch: 2
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 <support@docker.com>
# 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
%global _missing_build_ids_terminate_build 0
BuildRequires: make
BuildRequires: cmake
BuildRequires: gcc
BuildRequires: git
BuildRequires: glibc-static
BuildRequires: libtool-ltdl-devel
BuildRequires: libseccomp-devel
BuildRequires: device-mapper-devel
BuildRequires: btrfs-progs-devel
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
Requires: pigz
# Resolves: rhbz#1165615
Requires: device-mapper-libs >= 1.02.90-1
# conflicting packages
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
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 /go/src/github.com/docker/cli
DISABLE_WARN_OUTSIDE_CONTAINER=1 make VERSION=%{_origversion} GITCOMMIT=%{_gitcommit} dynbinary manpages # cli
popd
pushd engine
for component in tini "proxy dynamic" "runc all" "containerd dynamic";do
TMP_GOPATH="/go" hack/dockerfile/install/install.sh $component
done
VERSION=%{_origversion} 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
engine/bundles/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 $(readlink -f engine/bundles/dynbinary-daemon/dockerd) $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}
# Fedora 25+ supports (and needs) TasksMax
sed -i 's/^#TasksMax=/TasksMax=/' /systemd/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 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 cli/man/man1/*.1 $RPM_BUILD_ROOT/%{_mandir}/man1
install -d %{buildroot}%{_mandir}/man5
install -p -m 644 cli/man/man5/*.5 $RPM_BUILD_ROOT/%{_mandir}/man5
install -d %{buildroot}%{_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
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
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
# 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
%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
/%{_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
%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
if ! getent group docker > /dev/null; then
groupadd --system docker
fi
%preun
%systemd_preun docker
%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

23
rpm/fedora-29/Dockerfile Normal file
View File

@ -0,0 +1,23 @@
ARG GO_IMAGE
ARG ENGINE_IMAGE
ARG BUILD_IMAGE=fedora:29
FROM ${GO_IMAGE} as golang
FROM ${ENGINE_IMAGE} as engine
FROM ${BUILD_IMAGE}
ENV DISTRO fedora
ENV SUITE 29
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 dnf install -y rpm-build rpmlint dnf-plugins-core
COPY SPECS /root/rpmbuild/SPECS
RUN dnf builddep -y /root/rpmbuild/SPECS/*.spec
COPY --from=golang /usr/local/go /usr/local/go/
COPY --from=engine /bin/dockerd /sources/
COPY --from=engine /bin/docker-proxy /sources/
COPY --from=engine /bin/docker-init /sources/
WORKDIR /root/rpmbuild
ENTRYPOINT ["/bin/rpmbuild"]

View File

@ -24,7 +24,7 @@ static: static-linux cross-mac cross-win cross-arm ## create all static packages
static-linux: static-cli static-engine ## create tgz with linux x86_64 client and server
mkdir -p build/linux/docker
cp $(CLI_DIR)/build/docker build/linux/docker/
for f in dockerd docker-containerd docker-containerd-ctr docker-containerd-shim docker-init docker-proxy docker-runc; do \
for f in dockerd containerd ctr containerd-shim docker-init docker-proxy runc; do \
cp -L $(ENGINE_DIR)/bundles/binary-daemon/$$f build/linux/docker/$$f; \
done
tar -C build/linux -c -z -f build/linux/docker-$(STATIC_VERSION).tgz docker

View File

@ -2,18 +2,46 @@
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
BindsTo=containerd.service
After=network-online.target firewalld.service
After=network-online.target firewalld.service containerd.service
Wants=network-online.target
Requires=docker.socket
[Service]
# Install containerd-shim-process if it's not already installed
ExecStartPre=/usr/libexec/containerd-offline-installer /var/lib/containerd-offline-installer/containerd-shim-process.tar docker.io/docker/containerd-shim-process
ExecStart=/usr/bin/dockerd
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:// --containerd=/run/containerd/containerd.sock
ExecReload=/bin/kill -s HUP $MAINPID
TimeoutSec=0
RestartSec=2
Restart=always
# On RPM Based distributions PATH isn't defined so we define it here
# /opt/containerd/bin is in front so dockerd grabs the correct runc binary
Environment="PATH=/opt/containerd/bin:/sbin:/usr/bin:/usr/local/bin:$PATH"
# Note that StartLimit* options were moved from "Service" to "Unit" in systemd 229.
# Both the old, and new location are accepted by systemd 229 and up, so using the old location
# to make them work for either version of systemd.
StartLimitBurst=3
# Note that StartLimitInterval was renamed to StartLimitIntervalSec in systemd 230.
# Both the old, and new name are accepted by systemd 230 and up, so using the old name to make
# this option work for either version of systemd.
StartLimitInterval=60s
# 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
# Comment TasksMax if your systemd version does not supports it.
# Only systemd 226 and above support this option.
TasksMax=infinity
# 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
[Install]
WantedBy=multi-user.target