Accepting request 632984 from Virtualization:containers
OBS-URL: https://build.opensuse.org/request/show/632984 OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/docker?expand=0&rev=80
This commit is contained in:
commit
4e61c95de6
3
_multibuild
Normal file
3
_multibuild
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
<multibuild>
|
||||||
|
<package>kubic</package>
|
||||||
|
</multibuild>
|
4
_service
4
_service
@ -3,8 +3,8 @@
|
|||||||
<param name="url">https://github.com/docker/docker-ce.git</param>
|
<param name="url">https://github.com/docker/docker-ce.git</param>
|
||||||
<param name="scm">git</param>
|
<param name="scm">git</param>
|
||||||
<param name="exclude">.git</param>
|
<param name="exclude">.git</param>
|
||||||
<param name="versionformat">17.09.1_ce</param>
|
<param name="versionformat">18.06.1_ce</param>
|
||||||
<param name="revision">v17.09.1-ce</param>
|
<param name="revision">v18.06.1-ce</param>
|
||||||
<param name="filename">docker</param>
|
<param name="filename">docker</param>
|
||||||
</service>
|
</service>
|
||||||
<service name="recompress" mode="disabled">
|
<service name="recompress" mode="disabled">
|
||||||
|
@ -1,243 +0,0 @@
|
|||||||
From e57d7270deb50c31ac1f732d8f28812e5b809062 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Aleksa Sarai <asarai@suse.de>
|
|
||||||
Date: Thu, 16 Nov 2017 17:09:16 +1100
|
|
||||||
Subject: [PATCH] pkg: devmapper: dynamically load dm_task_deferred_remove
|
|
||||||
|
|
||||||
dm_task_deferred_remove is not supported by all distributions, due to
|
|
||||||
out-dated versions of devicemapper. However, in the case where the
|
|
||||||
devicemapper library was updated without rebuilding Docker (which can
|
|
||||||
happen in some distributions) then we should attempt to dynamically load
|
|
||||||
the relevant object rather than try to link to it.
|
|
||||||
|
|
||||||
This can only be done if Docker was built dynamically, for obvious
|
|
||||||
reasons.
|
|
||||||
|
|
||||||
In order to avoid having issues arise when dlsym(3) was unnecessary,
|
|
||||||
gate the whole dlsym(3) logic behind a buildflag that we disable by
|
|
||||||
default (libdm_dlsym_deferred_remove).
|
|
||||||
|
|
||||||
SUSE-Bugs: bsc#1021227 bsc#1029320 bsc#1058173
|
|
||||||
Signed-off-by: Aleksa Sarai <asarai@suse.de>
|
|
||||||
---
|
|
||||||
components/engine/hack/make.sh | 12 +-
|
|
||||||
...> devmapper_wrapper_dynamic_deferred_remove.go} | 10 +-
|
|
||||||
...mapper_wrapper_dynamic_dlsym_deferred_remove.go | 128 +++++++++++++++++++++
|
|
||||||
.../devmapper_wrapper_no_deferred_remove.go | 6 +-
|
|
||||||
4 files changed, 149 insertions(+), 7 deletions(-)
|
|
||||||
rename components/engine/pkg/devicemapper/{devmapper_wrapper_deferred_remove.go => devmapper_wrapper_dynamic_deferred_remove.go} (78%)
|
|
||||||
create mode 100644 components/engine/pkg/devicemapper/devmapper_wrapper_dynamic_dlsym_deferred_remove.go
|
|
||||||
|
|
||||||
diff --git a/components/engine/hack/make.sh b/components/engine/hack/make.sh
|
|
||||||
index 58e0d8cd628a..3b78ddef30b0 100755
|
|
||||||
--- a/components/engine/hack/make.sh
|
|
||||||
+++ b/components/engine/hack/make.sh
|
|
||||||
@@ -112,6 +112,12 @@ if [ ! "$GOPATH" ]; then
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
+# Adds $1_$2 to DOCKER_BUILDTAGS unless it already
|
|
||||||
+# contains a word starting from $1_
|
|
||||||
+add_buildtag() {
|
|
||||||
+ [[ " $DOCKER_BUILDTAGS" == *" $1_"* ]] || DOCKER_BUILDTAGS+=" $1_$2"
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
if ${PKG_CONFIG} 'libsystemd >= 209' 2> /dev/null ; then
|
|
||||||
DOCKER_BUILDTAGS+=" journald"
|
|
||||||
elif ${PKG_CONFIG} 'libsystemd-journal' 2> /dev/null ; then
|
|
||||||
@@ -127,12 +133,14 @@ if \
|
|
||||||
fi
|
|
||||||
|
|
||||||
# test whether "libdevmapper.h" is new enough to support deferred remove
|
|
||||||
-# functionality.
|
|
||||||
+# functionality. We favour libdm_dlsym_deferred_remove over
|
|
||||||
+# libdm_no_deferred_remove in dynamic cases because the binary could be shipped
|
|
||||||
+# with a newer libdevmapper than the one it was built wih.
|
|
||||||
if \
|
|
||||||
command -v gcc &> /dev/null \
|
|
||||||
&& ! ( echo -e '#include <libdevmapper.h>\nint main() { dm_task_deferred_remove(NULL); }'| gcc -xc - -o /dev/null $(pkg-config --libs devmapper) &> /dev/null ) \
|
|
||||||
; then
|
|
||||||
- DOCKER_BUILDTAGS+=' libdm_no_deferred_remove'
|
|
||||||
+ add_buildtag libdm dlsym_deferred_remove
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Use these flags when compiling the tests and final binary
|
|
||||||
diff --git a/components/engine/pkg/devicemapper/devmapper_wrapper_deferred_remove.go b/components/engine/pkg/devicemapper/devmapper_wrapper_dynamic_deferred_remove.go
|
|
||||||
similarity index 78%
|
|
||||||
rename from components/engine/pkg/devicemapper/devmapper_wrapper_deferred_remove.go
|
|
||||||
rename to components/engine/pkg/devicemapper/devmapper_wrapper_dynamic_deferred_remove.go
|
|
||||||
index 7f793c270868..bf57371ff4cf 100644
|
|
||||||
--- a/components/engine/pkg/devicemapper/devmapper_wrapper_deferred_remove.go
|
|
||||||
+++ b/components/engine/pkg/devicemapper/devmapper_wrapper_dynamic_deferred_remove.go
|
|
||||||
@@ -1,11 +1,15 @@
|
|
||||||
-// +build linux,cgo,!libdm_no_deferred_remove
|
|
||||||
+// +build linux,cgo,!static_build
|
|
||||||
+// +build !libdm_dlsym_deferred_remove,!libdm_no_deferred_remove
|
|
||||||
|
|
||||||
package devicemapper
|
|
||||||
|
|
||||||
-// #include <libdevmapper.h>
|
|
||||||
+/*
|
|
||||||
+#include <libdevmapper.h>
|
|
||||||
+*/
|
|
||||||
import "C"
|
|
||||||
|
|
||||||
-// LibraryDeferredRemovalSupport tells if the feature is enabled in the build
|
|
||||||
+// LibraryDeferredRemovalSupport tells if the feature is supported by the
|
|
||||||
+// current Docker invocation.
|
|
||||||
const LibraryDeferredRemovalSupport = true
|
|
||||||
|
|
||||||
func dmTaskDeferredRemoveFct(task *cdmTask) int {
|
|
||||||
diff --git a/components/engine/pkg/devicemapper/devmapper_wrapper_dynamic_dlsym_deferred_remove.go b/components/engine/pkg/devicemapper/devmapper_wrapper_dynamic_dlsym_deferred_remove.go
|
|
||||||
new file mode 100644
|
|
||||||
index 000000000000..5dfb369f1ff8
|
|
||||||
--- /dev/null
|
|
||||||
+++ b/components/engine/pkg/devicemapper/devmapper_wrapper_dynamic_dlsym_deferred_remove.go
|
|
||||||
@@ -0,0 +1,128 @@
|
|
||||||
+// +build linux,cgo,!static_build
|
|
||||||
+// +build libdm_dlsym_deferred_remove,!libdm_no_deferred_remove
|
|
||||||
+
|
|
||||||
+package devicemapper
|
|
||||||
+
|
|
||||||
+/*
|
|
||||||
+#cgo LDFLAGS: -ldl
|
|
||||||
+#include <stdlib.h>
|
|
||||||
+#include <dlfcn.h>
|
|
||||||
+#include <libdevmapper.h>
|
|
||||||
+
|
|
||||||
+// Yes, I know this looks scary. In order to be able to fill our own internal
|
|
||||||
+// dm_info with deferred_remove we need to have a struct definition that is
|
|
||||||
+// correct (regardless of the version of libdm that was used to compile it). To
|
|
||||||
+// this end, we define struct_backport_dm_info. This code comes from lvm2, and
|
|
||||||
+// I have verified that the structure has only ever had elements *appended* to
|
|
||||||
+// it (since 2001).
|
|
||||||
+//
|
|
||||||
+// It is also important that this structure be _larger_ than the dm_info that
|
|
||||||
+// libdevmapper expected. Otherwise libdm might try to write to memory it
|
|
||||||
+// shouldn't (they don't have a "known size" API).
|
|
||||||
+struct backport_dm_info {
|
|
||||||
+ int exists;
|
|
||||||
+ int suspended;
|
|
||||||
+ int live_table;
|
|
||||||
+ int inactive_table;
|
|
||||||
+ int32_t open_count;
|
|
||||||
+ uint32_t event_nr;
|
|
||||||
+ uint32_t major;
|
|
||||||
+ uint32_t minor;
|
|
||||||
+ int read_only;
|
|
||||||
+
|
|
||||||
+ int32_t target_count;
|
|
||||||
+
|
|
||||||
+ int deferred_remove;
|
|
||||||
+ int internal_suspend;
|
|
||||||
+
|
|
||||||
+ // Padding, purely for our own safety. This is to avoid cases where libdm
|
|
||||||
+ // was updated underneath us and we call into dm_task_get_info() with too
|
|
||||||
+ // small of a buffer.
|
|
||||||
+ char _[512];
|
|
||||||
+};
|
|
||||||
+
|
|
||||||
+// We have to wrap this in CGo, because Go really doesn't like function pointers.
|
|
||||||
+int call_dm_task_deferred_remove(void *fn, struct dm_task *task)
|
|
||||||
+{
|
|
||||||
+ int (*_dm_task_deferred_remove)(struct dm_task *task) = fn;
|
|
||||||
+ return _dm_task_deferred_remove(task);
|
|
||||||
+}
|
|
||||||
+*/
|
|
||||||
+import "C"
|
|
||||||
+
|
|
||||||
+import (
|
|
||||||
+ "unsafe"
|
|
||||||
+
|
|
||||||
+ "github.com/sirupsen/logrus"
|
|
||||||
+)
|
|
||||||
+
|
|
||||||
+// dm_task_deferred_remove is not supported by all distributions, due to
|
|
||||||
+// out-dated versions of devicemapper. However, in the case where the
|
|
||||||
+// devicemapper library was updated without rebuilding Docker (which can happen
|
|
||||||
+// in some distributions) then we should attempt to dynamically load the
|
|
||||||
+// relevant object rather than try to link to it.
|
|
||||||
+
|
|
||||||
+// dmTaskDeferredRemoveFct is a "bound" version of dm_task_deferred_remove.
|
|
||||||
+// It is nil if dm_task_deferred_remove was not found in the libdevmapper that
|
|
||||||
+// is currently loaded.
|
|
||||||
+var dmTaskDeferredRemovePtr unsafe.Pointer
|
|
||||||
+
|
|
||||||
+// LibraryDeferredRemovalSupport tells if the feature is supported by the
|
|
||||||
+// current Docker invocation. This value is fixed during init.
|
|
||||||
+var LibraryDeferredRemovalSupport bool
|
|
||||||
+
|
|
||||||
+func init() {
|
|
||||||
+ // Clear any errors.
|
|
||||||
+ var err *C.char
|
|
||||||
+ C.dlerror()
|
|
||||||
+
|
|
||||||
+ // The symbol we want to fetch.
|
|
||||||
+ symName := C.CString("dm_task_deferred_remove")
|
|
||||||
+ defer C.free(unsafe.Pointer(symName))
|
|
||||||
+
|
|
||||||
+ // See if we can find dm_task_deferred_remove. Since we already are linked
|
|
||||||
+ // to libdevmapper, we can search our own address space (rather than trying
|
|
||||||
+ // to guess what libdevmapper is called). We use NULL here, as RTLD_DEFAULT
|
|
||||||
+ // is not available in CGO (even if you set _GNU_SOURCE for some reason).
|
|
||||||
+ // The semantics are identical on glibc.
|
|
||||||
+ sym := C.dlsym(nil, symName)
|
|
||||||
+ err = C.dlerror()
|
|
||||||
+ if err != nil {
|
|
||||||
+ logrus.Debugf("devmapper: could not load dm_task_deferred_remove: %s", C.GoString(err))
|
|
||||||
+ return
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ logrus.Debugf("devmapper: found dm_task_deferred_remove at %x", uintptr(sym))
|
|
||||||
+ dmTaskDeferredRemovePtr = sym
|
|
||||||
+ LibraryDeferredRemovalSupport = true
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+func dmTaskDeferredRemoveFct(task *cdmTask) int {
|
|
||||||
+ sym := dmTaskDeferredRemovePtr
|
|
||||||
+ if sym == nil || !LibraryDeferredRemovalSupport {
|
|
||||||
+ return -1
|
|
||||||
+ }
|
|
||||||
+ return int(C.call_dm_task_deferred_remove(sym, (*C.struct_dm_task)(task)))
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
+func dmTaskGetInfoWithDeferredFct(task *cdmTask, info *Info) int {
|
|
||||||
+ if !LibraryDeferredRemovalSupport {
|
|
||||||
+ return -1
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ Cinfo := C.struct_backport_dm_info{}
|
|
||||||
+ defer func() {
|
|
||||||
+ info.Exists = int(Cinfo.exists)
|
|
||||||
+ info.Suspended = int(Cinfo.suspended)
|
|
||||||
+ info.LiveTable = int(Cinfo.live_table)
|
|
||||||
+ info.InactiveTable = int(Cinfo.inactive_table)
|
|
||||||
+ info.OpenCount = int32(Cinfo.open_count)
|
|
||||||
+ info.EventNr = uint32(Cinfo.event_nr)
|
|
||||||
+ info.Major = uint32(Cinfo.major)
|
|
||||||
+ info.Minor = uint32(Cinfo.minor)
|
|
||||||
+ info.ReadOnly = int(Cinfo.read_only)
|
|
||||||
+ info.TargetCount = int32(Cinfo.target_count)
|
|
||||||
+ info.DeferredRemove = int(Cinfo.deferred_remove)
|
|
||||||
+ }()
|
|
||||||
+ return int(C.dm_task_get_info((*C.struct_dm_task)(task), (*C.struct_dm_info)(unsafe.Pointer(&Cinfo))))
|
|
||||||
+}
|
|
||||||
diff --git a/components/engine/pkg/devicemapper/devmapper_wrapper_no_deferred_remove.go b/components/engine/pkg/devicemapper/devmapper_wrapper_no_deferred_remove.go
|
|
||||||
index a880fec8c499..80b034b3ff17 100644
|
|
||||||
--- a/components/engine/pkg/devicemapper/devmapper_wrapper_no_deferred_remove.go
|
|
||||||
+++ b/components/engine/pkg/devicemapper/devmapper_wrapper_no_deferred_remove.go
|
|
||||||
@@ -1,8 +1,10 @@
|
|
||||||
-// +build linux,cgo,libdm_no_deferred_remove
|
|
||||||
+// +build linux,cgo
|
|
||||||
+// +build !libdm_dlsym_deferred_remove,libdm_no_deferred_remove
|
|
||||||
|
|
||||||
package devicemapper
|
|
||||||
|
|
||||||
-// LibraryDeferredRemovalSupport tells if the feature is enabled in the build
|
|
||||||
+// LibraryDeferredRemovalSupport tells if the feature is supported by the
|
|
||||||
+// current Docker invocation.
|
|
||||||
const LibraryDeferredRemovalSupport = false
|
|
||||||
|
|
||||||
func dmTaskDeferredRemoveFct(task *cdmTask) int {
|
|
||||||
--
|
|
||||||
2.16.1
|
|
||||||
|
|
@ -0,0 +1,58 @@
|
|||||||
|
From d84d2f13c475bf5ff0ce7b080b759b0239d5d345 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Aleksa Sarai <asarai@suse.de>
|
||||||
|
Date: Thu, 23 Aug 2018 19:53:55 +1000
|
||||||
|
Subject: [PATCH] man: obey SOURCE_DATE_EPOCH when generating man pages
|
||||||
|
|
||||||
|
Previously our man pages included the current time each time they were
|
||||||
|
generated. This causes an issue for reproducible builds, since each
|
||||||
|
re-build of a package that includes the man pages will have different
|
||||||
|
times listed in the man pages.
|
||||||
|
|
||||||
|
To fix this, add support for SOURCE_DATE_EPOCH (which is a standardised
|
||||||
|
packaging environment variable, designed to be used specifically for
|
||||||
|
this purpose[1]). spf13/cobra doesn't support this natively yet (though
|
||||||
|
I will push a patch for that as well), but it's simpler to fix it
|
||||||
|
directly in docker/cli.
|
||||||
|
|
||||||
|
[1]: https://reproducible-builds.org/specs/source-date-epoch/
|
||||||
|
|
||||||
|
SUSE-Bugs: boo#1047218
|
||||||
|
Signed-off-by: Aleksa Sarai <asarai@suse.de>
|
||||||
|
---
|
||||||
|
components/cli/man/generate.go | 13 +++++++++++++
|
||||||
|
1 file changed, 13 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/components/cli/man/generate.go b/components/cli/man/generate.go
|
||||||
|
index 4197558a2225..4a3e98fb22c1 100644
|
||||||
|
--- a/components/cli/man/generate.go
|
||||||
|
+++ b/components/cli/man/generate.go
|
||||||
|
@@ -6,6 +6,8 @@ import (
|
||||||
|
"log"
|
||||||
|
"os"
|
||||||
|
"path/filepath"
|
||||||
|
+ "strconv"
|
||||||
|
+ "time"
|
||||||
|
|
||||||
|
"github.com/docker/cli/cli/command"
|
||||||
|
"github.com/docker/cli/cli/command/commands"
|
||||||
|
@@ -24,6 +26,17 @@ func generateManPages(opts *options) error {
|
||||||
|
Source: "Docker Community",
|
||||||
|
}
|
||||||
|
|
||||||
|
+ // If SOURCE_DATE_EPOCH is set, in order to allow reproducible package
|
||||||
|
+ // builds, we explicitly set the build time to SOURCE_DATE_EPOCH.
|
||||||
|
+ if epoch := os.Getenv("SOURCE_DATE_EPOCH"); epoch != "" {
|
||||||
|
+ unixEpoch, err := strconv.ParseInt(epoch, 10, 64)
|
||||||
|
+ if err != nil {
|
||||||
|
+ return fmt.Errorf("invalid SOURCE_DATE_EPOCH: %v", err)
|
||||||
|
+ }
|
||||||
|
+ now := time.Unix(unixEpoch, 0)
|
||||||
|
+ header.Date = &now
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
stdin, stdout, stderr := term.StdStreams()
|
||||||
|
dockerCli := command.NewDockerCli(stdin, stdout, stderr, false)
|
||||||
|
cmd := &cobra.Command{Use: "docker"}
|
||||||
|
--
|
||||||
|
2.18.0
|
||||||
|
|
@ -1,95 +0,0 @@
|
|||||||
From ff7b94c76f343931463b5916fb3fbd2610869a1a Mon Sep 17 00:00:00 2001
|
|
||||||
From: Aleksa Sarai <asarai@suse.de>
|
|
||||||
Date: Sun, 15 Oct 2017 17:06:20 +1100
|
|
||||||
Subject: [PATCH] daemon: oci: obey CL_UNPRIVILEGED for user namespaced daemon
|
|
||||||
|
|
||||||
When runc is bind-mounting a particular path "with options", it has to
|
|
||||||
do so by first creating a bind-mount and the modifying the options of
|
|
||||||
said bind-mount via remount. However, in a user namespace, there are
|
|
||||||
restrictions on which flags you can change with a remount (due to
|
|
||||||
CL_UNPRIVILEGED being set in this instance). Docker historically has
|
|
||||||
ignored this, and as a result, internal Docker mounts (such as secrets)
|
|
||||||
haven't worked with --userns-remap. Fix this by preserving
|
|
||||||
CL_UNPRIVILEGED mount flags when Docker is spawning containers with user
|
|
||||||
namespaces enabled.
|
|
||||||
|
|
||||||
SUSE-Bug: https://bugzilla.suse.com/show_bug.cgi?id=1055676
|
|
||||||
Signed-off-by: Aleksa Sarai <asarai@suse.de>
|
|
||||||
---
|
|
||||||
components/engine/daemon/oci_linux.go | 46 +++++++++++++++++++++++++++++++++++
|
|
||||||
1 file changed, 46 insertions(+)
|
|
||||||
|
|
||||||
diff --git a/components/engine/daemon/oci_linux.go b/components/engine/daemon/oci_linux.go
|
|
||||||
index 6917b4841429..936cb8f998ca 100644
|
|
||||||
--- a/components/engine/daemon/oci_linux.go
|
|
||||||
+++ b/components/engine/daemon/oci_linux.go
|
|
||||||
@@ -27,6 +27,7 @@ import (
|
|
||||||
"github.com/opencontainers/runc/libcontainer/user"
|
|
||||||
specs "github.com/opencontainers/runtime-spec/specs-go"
|
|
||||||
"github.com/sirupsen/logrus"
|
|
||||||
+ "golang.org/x/sys/unix"
|
|
||||||
)
|
|
||||||
|
|
||||||
var (
|
|
||||||
@@ -469,6 +470,38 @@ func ensureSharedOrSlave(path string) error {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
+// Get the set of mount flags that are set on the mount that contains the given
|
|
||||||
+// path and are locked by CL_UNPRIVILEGED. This is necessary to ensure that
|
|
||||||
+// bind-mounting "with options" will not fail with user namespaces, due to
|
|
||||||
+// kernel restrictions that require user namespace mounts to preserve
|
|
||||||
+// CL_UNPRIVILEGED locked flags.
|
|
||||||
+func getUnprivilegedMountFlags(path string) ([]string, error) {
|
|
||||||
+ var statfs unix.Statfs_t
|
|
||||||
+ if err := unix.Statfs(path, &statfs); err != nil {
|
|
||||||
+ return nil, err
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ // The set of keys come from https://github.com/torvalds/linux/blob/v4.13/fs/namespace.c#L1034-L1048.
|
|
||||||
+ unprivilegedFlags := map[uint64]string{
|
|
||||||
+ unix.MS_RDONLY: "ro",
|
|
||||||
+ unix.MS_NODEV: "nodev",
|
|
||||||
+ unix.MS_NOEXEC: "noexec",
|
|
||||||
+ unix.MS_NOSUID: "nosuid",
|
|
||||||
+ unix.MS_NOATIME: "noatime",
|
|
||||||
+ unix.MS_RELATIME: "relatime",
|
|
||||||
+ unix.MS_NODIRATIME: "nodiratime",
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ var flags []string
|
|
||||||
+ for mask, flag := range unprivilegedFlags {
|
|
||||||
+ if uint64(statfs.Flags)&mask == mask {
|
|
||||||
+ flags = append(flags, flag)
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ return flags, nil
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
var (
|
|
||||||
mountPropagationMap = map[string]int{
|
|
||||||
"private": mount.PRIVATE,
|
|
||||||
@@ -586,6 +619,19 @@ func setMounts(daemon *Daemon, s *specs.Spec, c *container.Container, mounts []c
|
|
||||||
opts = append(opts, mountPropagationReverseMap[pFlag])
|
|
||||||
}
|
|
||||||
|
|
||||||
+ // If we are using user namespaces, then we must make sure that we
|
|
||||||
+ // don't drop any of the CL_UNPRIVILEGED "locked" flags of the source
|
|
||||||
+ // "mount" when we bind-mount. The reason for this is that at the point
|
|
||||||
+ // when runc sets up the root filesystem, it is already inside a user
|
|
||||||
+ // namespace, and thus cannot change any flags that are locked.
|
|
||||||
+ if daemon.configStore.RemappedRoot != "" {
|
|
||||||
+ unprivOpts, err := getUnprivilegedMountFlags(m.Source)
|
|
||||||
+ if err != nil {
|
|
||||||
+ return err
|
|
||||||
+ }
|
|
||||||
+ opts = append(opts, unprivOpts...)
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
mt.Options = opts
|
|
||||||
s.Mounts = append(s.Mounts, mt)
|
|
||||||
}
|
|
||||||
--
|
|
||||||
2.16.1
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
|||||||
From 2cc9da975798847cd0a37d1571d8a0f1d72b522d Mon Sep 17 00:00:00 2001
|
From 3464bd58d266b0640774952e825558044ffc64e2 Mon Sep 17 00:00:00 2001
|
||||||
From: Aleksa Sarai <asarai@suse.de>
|
From: Aleksa Sarai <asarai@suse.de>
|
||||||
Date: Sun, 8 Apr 2018 20:21:30 +1000
|
Date: Sun, 8 Apr 2018 20:21:30 +1000
|
||||||
Subject: [PATCH 1/2] apparmor: allow receiving of signals from 'docker kill'
|
Subject: [PATCH 1/2] apparmor: allow receiving of signals from 'docker kill'
|
||||||
@ -15,7 +15,7 @@ Signed-off-by: Aleksa Sarai <asarai@suse.de>
|
|||||||
1 file changed, 6 insertions(+)
|
1 file changed, 6 insertions(+)
|
||||||
|
|
||||||
diff --git a/components/engine/profiles/apparmor/template.go b/components/engine/profiles/apparmor/template.go
|
diff --git a/components/engine/profiles/apparmor/template.go b/components/engine/profiles/apparmor/template.go
|
||||||
index c5ea4584de6b..082638e85903 100644
|
index c00a3f70e993..772c4a4873f6 100644
|
||||||
--- a/components/engine/profiles/apparmor/template.go
|
--- a/components/engine/profiles/apparmor/template.go
|
||||||
+++ b/components/engine/profiles/apparmor/template.go
|
+++ b/components/engine/profiles/apparmor/template.go
|
||||||
@@ -17,6 +17,12 @@ profile {{.Name}} flags=(attach_disconnected,mediate_deleted) {
|
@@ -17,6 +17,12 @@ profile {{.Name}} flags=(attach_disconnected,mediate_deleted) {
|
||||||
@ -32,5 +32,5 @@ index c5ea4584de6b..082638e85903 100644
|
|||||||
deny @{PROC}/* w, # deny write for all files directly in /proc (not in a subdir)
|
deny @{PROC}/* w, # deny write for all files directly in /proc (not in a subdir)
|
||||||
# deny write to files not in /proc/<number>/** or /proc/sys/**
|
# deny write to files not in /proc/<number>/** or /proc/sys/**
|
||||||
--
|
--
|
||||||
2.17.1
|
2.18.0
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
From 8edc54753ab5ea9294c55ec32b49c9eb7cdf3892 Mon Sep 17 00:00:00 2001
|
From 0954810e947abf0b4e5d8f6c78598c5d66b43952 Mon Sep 17 00:00:00 2001
|
||||||
From: Aleksa Sarai <asarai@suse.de>
|
From: Aleksa Sarai <asarai@suse.de>
|
||||||
Date: Fri, 29 Jun 2018 17:59:30 +1000
|
Date: Fri, 29 Jun 2018 17:59:30 +1000
|
||||||
Subject: [PATCH 2/2] apparmor: clobber docker-default profile on start
|
Subject: [PATCH 2/2] apparmor: clobber docker-default profile on start
|
||||||
@ -21,7 +21,7 @@ Signed-off-by: Aleksa Sarai <asarai@suse.de>
|
|||||||
3 files changed, 17 insertions(+), 5 deletions(-)
|
3 files changed, 17 insertions(+), 5 deletions(-)
|
||||||
|
|
||||||
diff --git a/components/engine/daemon/apparmor_default.go b/components/engine/daemon/apparmor_default.go
|
diff --git a/components/engine/daemon/apparmor_default.go b/components/engine/daemon/apparmor_default.go
|
||||||
index 2a418b25c241..c3e271ee4774 100644
|
index 461f5c7f96b2..8f21c5c0c566 100644
|
||||||
--- a/components/engine/daemon/apparmor_default.go
|
--- a/components/engine/daemon/apparmor_default.go
|
||||||
+++ b/components/engine/daemon/apparmor_default.go
|
+++ b/components/engine/daemon/apparmor_default.go
|
||||||
@@ -14,6 +14,15 @@ const (
|
@@ -14,6 +14,15 @@ const (
|
||||||
@ -53,12 +53,12 @@ index 2a418b25c241..c3e271ee4774 100644
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
diff --git a/components/engine/daemon/apparmor_default_unsupported.go b/components/engine/daemon/apparmor_default_unsupported.go
|
diff --git a/components/engine/daemon/apparmor_default_unsupported.go b/components/engine/daemon/apparmor_default_unsupported.go
|
||||||
index cd2dd9702ef2..17584063c711 100644
|
index 51f9c526b350..97d7758442ee 100644
|
||||||
--- a/components/engine/daemon/apparmor_default_unsupported.go
|
--- a/components/engine/daemon/apparmor_default_unsupported.go
|
||||||
+++ b/components/engine/daemon/apparmor_default_unsupported.go
|
+++ b/components/engine/daemon/apparmor_default_unsupported.go
|
||||||
@@ -2,6 +2,10 @@
|
@@ -2,6 +2,10 @@
|
||||||
|
|
||||||
package daemon
|
package daemon // import "github.com/docker/docker/daemon"
|
||||||
|
|
||||||
+func clobberDefaultAppArmorProfile() error {
|
+func clobberDefaultAppArmorProfile() error {
|
||||||
+ return nil
|
+ return nil
|
||||||
@ -68,10 +68,10 @@ index cd2dd9702ef2..17584063c711 100644
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
diff --git a/components/engine/daemon/daemon.go b/components/engine/daemon/daemon.go
|
diff --git a/components/engine/daemon/daemon.go b/components/engine/daemon/daemon.go
|
||||||
index a11a1f8691cc..6f8846b19f57 100644
|
index 5e5f586ae085..6ca6a7aaa268 100644
|
||||||
--- a/components/engine/daemon/daemon.go
|
--- a/components/engine/daemon/daemon.go
|
||||||
+++ b/components/engine/daemon/daemon.go
|
+++ b/components/engine/daemon/daemon.go
|
||||||
@@ -594,7 +594,9 @@ func NewDaemon(config *config.Config, registryService registry.Service, containe
|
@@ -660,7 +660,9 @@ func NewDaemon(config *config.Config, registryService registry.Service, containe
|
||||||
logrus.Warnf("Failed to configure golang's threads limit: %v", err)
|
logrus.Warnf("Failed to configure golang's threads limit: %v", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -83,5 +83,5 @@ index a11a1f8691cc..6f8846b19f57 100644
|
|||||||
}
|
}
|
||||||
|
|
||||||
--
|
--
|
||||||
2.17.1
|
2.18.0
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
From d39172ffc6b245f02da1898793ccaef20bb6858a Mon Sep 17 00:00:00 2001
|
From 547870ff2904a75fa3e0ee96fa264d53a81d4c01 Mon Sep 17 00:00:00 2001
|
||||||
From: Aleksa Sarai <asarai@suse.de>
|
From: Aleksa Sarai <asarai@suse.de>
|
||||||
Date: Mon, 30 Jul 2018 19:34:01 +1000
|
Date: Mon, 30 Jul 2018 19:34:01 +1000
|
||||||
Subject: [PATCH] build: add -buildmode=pie
|
Subject: [PATCH] build: add -buildmode=pie
|
||||||
@ -7,6 +7,7 @@ Make all dynbinary builds be position-independent (this adds both
|
|||||||
security benefits and can help with flaky builds on POWER
|
security benefits and can help with flaky builds on POWER
|
||||||
architectures).
|
architectures).
|
||||||
|
|
||||||
|
SUSE-Bugs: bsc#1100727
|
||||||
Signed-off-by: Aleksa Sarai <asarai@suse.de>
|
Signed-off-by: Aleksa Sarai <asarai@suse.de>
|
||||||
---
|
---
|
||||||
components/cli/scripts/build/dynbinary | 2 +-
|
components/cli/scripts/build/dynbinary | 2 +-
|
||||||
|
@ -1,3 +0,0 @@
|
|||||||
version https://git-lfs.github.com/spec/v1
|
|
||||||
oid sha256:dd19ad9900aaabb9eb5870be6271262aebbd4f86fa12f7c59677d47876492bf9
|
|
||||||
size 6237800
|
|
3
docker-18.06.1_ce.tar.xz
Normal file
3
docker-18.06.1_ce.tar.xz
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
version https://git-lfs.github.com/spec/v1
|
||||||
|
oid sha256:061ae523be13dbe05ff5377626113a299327cc39fc145f801cd674c67b8c7fe0
|
||||||
|
size 8561132
|
4
docker-kubic-service.conf
Normal file
4
docker-kubic-service.conf
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
[Service]
|
||||||
|
# Put docker under the podruntime slice. This the recommended
|
||||||
|
# deployment to allow fine resource control on Kubernetes.
|
||||||
|
Slice=podruntime.slice
|
@ -1,7 +1,9 @@
|
|||||||
addFilter ("^docker.x86_64: W: statically-linked-binary /usr/lib64/docker/dockerinit")
|
# This is intentional, since we use _multibuild for the flavours.
|
||||||
addFilter ("^docker-bash-completion.noarch: W: sourced-script-with-shebang /etc/bash_completion.d/docker bash")
|
addFilter ("^docker-kubic.src: W: invalid-spec-name")
|
||||||
addFilter ("^docker.x86_64: W: statically-linked-binary /usr/lib/docker/dockerinit")
|
|
||||||
addFilter ("^docker.x86_64: W: unstripped-binary-or-object /usr/lib/docker/dockerinit")
|
# The #! comes from upstream.
|
||||||
addFilter ("^docker.x86_64: W: no-manual-page-for-binary docker")
|
addFilter ("^docker(-kubic)?-bash-completion.noarch: W: sourced-script-with-shebang /etc/bash_completion.d/docker bash")
|
||||||
addFilter ("^docker.x86_64: W: no-manual-page-for-binary nsinit")
|
addFilter ("^docker(-kubic)?-zsh-completion.noarch: W: sourced-script-with-shebang /etc/zsh_completion.d/docker zsh")
|
||||||
addFilter ("^docker-test.*")
|
|
||||||
|
# -test is something that is used internally and isn't actually shipped -- it's a pseduo-source package.
|
||||||
|
addFilter ("^docker(-kubic)?-test.*")
|
||||||
|
133
docker.changes
133
docker.changes
@ -1,3 +1,76 @@
|
|||||||
|
-------------------------------------------------------------------
|
||||||
|
Tue Sep 4 08:32:43 UTC 2018 - rbrown@suse.com
|
||||||
|
|
||||||
|
- ExcludeArch i586 for entire docker-kubic flavour
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Tue Sep 4 07:32:47 UTC 2018 - rbrown@suse.com
|
||||||
|
|
||||||
|
- ExcludeArch i586 for docker-kubic-kubeadm-criconfig subpackage
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Fri Aug 24 08:17:41 UTC 2018 - asarai@suse.com
|
||||||
|
|
||||||
|
- Add patch to make package reproducible, which is a backport of
|
||||||
|
https://github.com/docker/cli/pull/1306. boo#1047218
|
||||||
|
+ bsc1047218-0001-man-obey-SOURCE_DATE_EPOCH-when-generating-man-pages.patch
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Wed Aug 22 09:54:57 UTC 2018 - asarai@suse.com
|
||||||
|
|
||||||
|
- Upgrade to docker-ce v18.06.1-ce. Upstream changelog:
|
||||||
|
https://github.com/docker/docker-ce/releases/tag/v18.06.1-ce bsc#1102522
|
||||||
|
- Remove patches that were merged upstream:
|
||||||
|
- bsc1102522-0001-18.06-disable-containerd-CRI-plugin.patch
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Tue Aug 21 09:50:01 UTC 2018 - asarai@suse.com
|
||||||
|
|
||||||
|
- Add a backport of https://github.com/docker/engine/pull/29 for the 18.06.0-ce
|
||||||
|
upgrade. This is a potential security issue (the CRI plugin was enabled by
|
||||||
|
default, which listens on a TCP port bound to 0.0.0.0) that will be fixed
|
||||||
|
upstream in the 18.06.1-ce upgrade. bsc#1102522
|
||||||
|
+ bsc1102522-0001-18.06-disable-containerd-CRI-plugin.patch
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Tue Aug 21 09:39:57 UTC 2018 - rbrown@suse.com
|
||||||
|
|
||||||
|
- Kubic: Make crio default, docker as alternative runtime
|
||||||
|
(boo#1104821)
|
||||||
|
- Provide kubernetes CRI config with docker-kubic-kubeadm-criconfig
|
||||||
|
subpackage
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Thu Aug 16 02:00:31 UTC 2018 - asarai@suse.com
|
||||||
|
|
||||||
|
- Merge -kubic packages back into the main Virtualization:containers packages.
|
||||||
|
This is done using _multibuild to add a "kubic" flavour, which is then used
|
||||||
|
to conditionally compile patches and other kubic-specific features.
|
||||||
|
bsc#1105000
|
||||||
|
- Rework docker-rpmlintrc with the new _multibuild setup.
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Wed Aug 1 09:40:59 UTC 2018 - asarai@suse.com
|
||||||
|
|
||||||
|
- Enable seccomp support on SLE12, since libseccomp is now a new enough vintage
|
||||||
|
to work with Docker and containerd. fate#325877
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Tue Jul 31 09:48:16 UTC 2018 - asarai@suse.com
|
||||||
|
|
||||||
|
- Upgrade to docker-ce v18.06.0-ce. bsc#1102522
|
||||||
|
- Remove systemd-service dependency on containerd, which is now being started
|
||||||
|
by dockerd to align with upstream defaults.
|
||||||
|
- Removed the following patches as they are merged upstream:
|
||||||
|
- bsc1021227-0001-pkg-devmapper-dynamically-load-dm_task_deferred_remo.patch
|
||||||
|
- bsc1055676-0001-daemon-oci-obey-CL_UNPRIVILEGED-for-user-namespaced-.patch
|
||||||
|
- Rebased the following patches:
|
||||||
|
* bsc1073877-0001-apparmor-allow-receiving-of-signals-from-docker-kill.patch
|
||||||
|
* bsc1073877-0002-apparmor-clobber-docker-default-profile-on-start.patch
|
||||||
|
* bsc1100727-0001-build-add-buildmode-pie.patch
|
||||||
|
* secrets-0001-daemon-allow-directory-creation-in-run-secrets.patch
|
||||||
|
* secrets-0002-SUSE-implement-SUSE-container-secrets.patch
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Mon Jul 30 09:44:47 UTC 2018 - asarai@suse.com
|
Mon Jul 30 09:44:47 UTC 2018 - asarai@suse.com
|
||||||
|
|
||||||
@ -14,11 +87,6 @@ Fri Jun 29 08:35:56 UTC 2018 - asarai@suse.com
|
|||||||
* bsc1073877-0001-apparmor-allow-receiving-of-signals-from-docker-kill.patch
|
* bsc1073877-0001-apparmor-allow-receiving-of-signals-from-docker-kill.patch
|
||||||
+ bsc1073877-0002-apparmor-clobber-docker-default-profile-on-start.patch
|
+ bsc1073877-0002-apparmor-clobber-docker-default-profile-on-start.patch
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
|
||||||
Wed Jun 13 10:19:23 UTC 2018 - dcassany@suse.com
|
|
||||||
|
|
||||||
- Make use of %license macro
|
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Tue Jun 5 11:24:35 UTC 2018 - asarai@suse.com
|
Tue Jun 5 11:24:35 UTC 2018 - asarai@suse.com
|
||||||
|
|
||||||
@ -26,6 +94,11 @@ Tue Jun 5 11:24:35 UTC 2018 - asarai@suse.com
|
|||||||
between in-container processes. bsc#1073877
|
between in-container processes. bsc#1073877
|
||||||
* bsc1073877-0001-apparmor-allow-receiving-of-signals-from-docker-kill.patch
|
* bsc1073877-0001-apparmor-allow-receiving-of-signals-from-docker-kill.patch
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Tue Jun 5 08:41:07 UTC 2018 - dcassany@suse.com
|
||||||
|
|
||||||
|
- Make use of %license macro
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Tue Jun 5 06:38:40 UTC 2018 - asarai@suse.com
|
Tue Jun 5 06:38:40 UTC 2018 - asarai@suse.com
|
||||||
|
|
||||||
@ -41,6 +114,18 @@ Tue May 29 08:10:48 UTC 2018 - asarai@suse.com
|
|||||||
* secrets-0001-daemon-allow-directory-creation-in-run-secrets.patch
|
* secrets-0001-daemon-allow-directory-creation-in-run-secrets.patch
|
||||||
* secrets-0002-SUSE-implement-SUSE-container-secrets.patch
|
* secrets-0002-SUSE-implement-SUSE-container-secrets.patch
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Wed May 16 10:12:56 UTC 2018 - jmassaguerpla@suse.com
|
||||||
|
|
||||||
|
- Review Obsoletes to fix bsc#1080978
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Thu Apr 12 12:49:25 UTC 2018 - fcastelli@suse.com
|
||||||
|
|
||||||
|
- Put docker under the podruntime slice. This the recommended
|
||||||
|
deployment to allow fine resource control on Kubernetes.
|
||||||
|
bsc#1086185
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Tue Apr 10 09:25:43 UTC 2018 - mmeister@suse.com
|
Tue Apr 10 09:25:43 UTC 2018 - mmeister@suse.com
|
||||||
|
|
||||||
@ -66,6 +151,13 @@ Tue Mar 27 10:13:41 UTC 2018 - asarai@suse.com
|
|||||||
- Add requirement for catatonit, which provides a docker-init implementation.
|
- Add requirement for catatonit, which provides a docker-init implementation.
|
||||||
fate#324652 bsc#1085380
|
fate#324652 bsc#1085380
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Thu Mar 8 13:14:54 UTC 2018 - vrothberg@suse.com
|
||||||
|
|
||||||
|
- Fix private-registry-0001-Add-private-registry-mirror-support.patch to
|
||||||
|
deal corretly with TLS configs of 3rd party registries.
|
||||||
|
fix bsc#1084533
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Tue Feb 13 10:45:58 UTC 2018 - asarai@suse.com
|
Tue Feb 13 10:45:58 UTC 2018 - asarai@suse.com
|
||||||
|
|
||||||
@ -75,9 +167,40 @@ Tue Feb 13 10:45:58 UTC 2018 - asarai@suse.com
|
|||||||
patch maintenance is much simpler.
|
patch maintenance is much simpler.
|
||||||
* bsc1021227-0001-pkg-devmapper-dynamically-load-dm_task_deferred_remo.patch
|
* bsc1021227-0001-pkg-devmapper-dynamically-load-dm_task_deferred_remo.patch
|
||||||
* bsc1055676-0001-daemon-oci-obey-CL_UNPRIVILEGED-for-user-namespaced-.patch
|
* bsc1055676-0001-daemon-oci-obey-CL_UNPRIVILEGED-for-user-namespaced-.patch
|
||||||
|
* private-registry-0001-Add-private-registry-mirror-support.patch
|
||||||
* secrets-0001-daemon-allow-directory-creation-in-run-secrets.patch
|
* secrets-0001-daemon-allow-directory-creation-in-run-secrets.patch
|
||||||
* secrets-0002-SUSE-implement-SUSE-container-secrets.patch
|
* secrets-0002-SUSE-implement-SUSE-container-secrets.patch
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Mon Feb 12 10:52:33 UTC 2018 - rbrown@suse.com
|
||||||
|
|
||||||
|
- Add ${version} to equivalent non-kubic package provides
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Thu Feb 8 12:34:51 UTC 2018 - rbrown@suse.com
|
||||||
|
|
||||||
|
- Add Provides for equivalent non-kubic packages
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Tue Jan 30 12:27:44 UTC 2018 - vrothberg@suse.com
|
||||||
|
|
||||||
|
- Disable all tests for docker/client and docker/pkg/discovery. The unit tests
|
||||||
|
of those packages broke reproducibly the builds in IBS.
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Mon Jan 29 14:39:02 UTC 2018 - vrothberg@suse.com
|
||||||
|
|
||||||
|
- Disable flaky tests github.com/docker/docker/pkg/discovery/kv.
|
||||||
|
|
||||||
|
-------------------------------------------------------------------
|
||||||
|
Fri Jan 26 07:15:53 UTC 2018 - vrothberg@suse.com
|
||||||
|
|
||||||
|
- Add patch to support mirroring of private/non-upstream registries. As soon as
|
||||||
|
the upstream PR (https://github.com/moby/moby/pull/34319) is merged, this
|
||||||
|
patch will be replaced by the backported one from upstream.
|
||||||
|
+ private-registry-0001-Add-private-registry-mirror-support.patch
|
||||||
|
fix bsc#1074971
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Fri Jan 19 14:12:32 UTC 2018 - asarai@suse.com
|
Fri Jan 19 14:12:32 UTC 2018 - asarai@suse.com
|
||||||
|
|
||||||
|
@ -1,8 +1,7 @@
|
|||||||
[Unit]
|
[Unit]
|
||||||
Description=Docker Application Container Engine
|
Description=Docker Application Container Engine
|
||||||
Documentation=http://docs.docker.com
|
Documentation=http://docs.docker.com
|
||||||
After=network.target containerd.socket containerd.service lvm2-monitor.service SuSEfirewall2.service
|
After=network.target lvm2-monitor.service SuSEfirewall2.service
|
||||||
Requires=containerd.socket containerd.service
|
|
||||||
|
|
||||||
[Service]
|
[Service]
|
||||||
EnvironmentFile=/etc/sysconfig/docker
|
EnvironmentFile=/etc/sysconfig/docker
|
||||||
@ -11,7 +10,7 @@ EnvironmentFile=/etc/sysconfig/docker
|
|||||||
# enabled by default because enabling socket activation means that on boot your
|
# enabled by default because enabling socket activation means that on boot your
|
||||||
# containers won't start until someone tries to administer the Docker daemon.
|
# containers won't start until someone tries to administer the Docker daemon.
|
||||||
Type=notify
|
Type=notify
|
||||||
ExecStart=/usr/bin/dockerd --containerd /run/containerd/containerd.sock --add-runtime oci=/usr/sbin/docker-runc $DOCKER_NETWORK_OPTIONS $DOCKER_OPTS
|
ExecStart=/usr/bin/dockerd --add-runtime oci=/usr/sbin/docker-runc $DOCKER_NETWORK_OPTIONS $DOCKER_OPTS
|
||||||
ExecReload=/bin/kill -s HUP $MAINPID
|
ExecReload=/bin/kill -s HUP $MAINPID
|
||||||
|
|
||||||
# Having non-zero Limit*s causes performance problems due to accounting overhead
|
# Having non-zero Limit*s causes performance problems due to accounting overhead
|
||||||
|
230
docker.spec
230
docker.spec
@ -26,32 +26,46 @@
|
|||||||
%define _fillupdir /var/adm/fillup-templates
|
%define _fillupdir /var/adm/fillup-templates
|
||||||
%endif
|
%endif
|
||||||
|
|
||||||
|
# Handle _multibuild magic.
|
||||||
|
%define flavour @BUILD_FLAVOR@%{nil}
|
||||||
|
|
||||||
|
# We split the Name: into "realname" and "name_suffix".
|
||||||
|
%define realname docker
|
||||||
|
%if "%flavour" == ""
|
||||||
|
%define name_suffix %{nil}
|
||||||
|
%else
|
||||||
|
%define name_suffix -%{flavour}
|
||||||
|
%endif
|
||||||
|
|
||||||
# Used when generating the "build" information for Docker version. The value of
|
# Used when generating the "build" information for Docker version. The value of
|
||||||
# git_commit_epoch is unused here (we use SOURCE_DATE_EPOCH, which rpm
|
# git_commit_epoch is unused here (we use SOURCE_DATE_EPOCH, which rpm
|
||||||
# helpfully injects into our build environment from the changelog). If you want
|
# helpfully injects into our build environment from the changelog). If you want
|
||||||
# to generate a new git_commit_epoch, use this:
|
# to generate a new git_commit_epoch, use this:
|
||||||
# $ date --date="$(git show --format=fuller --date=iso $COMMIT_ID | grep -oP '(?<=^CommitDate: ).*')" '+%s'
|
# $ date --date="$(git show --format=fuller --date=iso $COMMIT_ID | grep -oP '(?<=^CommitDate: ).*')" '+%s'
|
||||||
%define git_version f4ffd2511ce9
|
%define git_version e68fc7a215d7
|
||||||
%define git_commit_epoch 1508606827
|
%define git_commit_epoch 1534871791
|
||||||
|
|
||||||
# These are the git commits required. We verify them against the source to make
|
# These are the git commits required. We verify them against the source to make
|
||||||
# sure we didn't miss anything important when doing upgrades.
|
# sure we didn't miss anything important when doing upgrades.
|
||||||
%define required_containerd 06b9cb35161009dcb7123345749fef02f7cea8e0
|
%define required_containerd 468a545b9edcd5932818eb9de8e72413e616e86e
|
||||||
%define required_dockerrunc 3f2f8b84a77f73d38244dd690525642a72156c64
|
%define required_dockerrunc 69663f0bd4b60df09991c08812a60108003fa340
|
||||||
%define required_libnetwork 7b2b1feb1de4817d522cc372af149ff48d25028e
|
%define required_libnetwork 3ac297bc7fd0afec9051bbb47024c9bc1d75bf5b
|
||||||
|
|
||||||
Name: docker
|
Name: %{realname}%{name_suffix}
|
||||||
Version: 17.09.1_ce
|
Version: 18.06.1_ce
|
||||||
Release: 0
|
Release: 0
|
||||||
Summary: The Linux container runtime
|
Summary: The Linux container runtime
|
||||||
License: Apache-2.0
|
License: Apache-2.0
|
||||||
Group: System/Management
|
Group: System/Management
|
||||||
Url: http://www.docker.io
|
Url: http://www.docker.io
|
||||||
# TODO(VR): check those SOURCE files below
|
# TODO(VR): check those SOURCE files below
|
||||||
Source: %{name}-%{version}.tar.xz
|
Source: %{realname}-%{version}.tar.xz
|
||||||
Source1: docker.service
|
Source1: docker.service
|
||||||
|
# bsc#1086185 -- but we only apply this on Kubic.
|
||||||
|
Source2: docker-kubic-service.conf
|
||||||
Source3: 80-docker.rules
|
Source3: 80-docker.rules
|
||||||
Source4: sysconfig.docker
|
Source4: sysconfig.docker
|
||||||
|
Source5: kubelet.env
|
||||||
Source6: docker-rpmlintrc
|
Source6: docker-rpmlintrc
|
||||||
Source7: README_SUSE.md
|
Source7: README_SUSE.md
|
||||||
Source8: docker-audit.rules
|
Source8: docker-audit.rules
|
||||||
@ -62,16 +76,17 @@ Source9: tests.sh
|
|||||||
# branch in http://github.com/suse/docker.mirror.
|
# branch in http://github.com/suse/docker.mirror.
|
||||||
Patch200: secrets-0001-daemon-allow-directory-creation-in-run-secrets.patch
|
Patch200: secrets-0001-daemon-allow-directory-creation-in-run-secrets.patch
|
||||||
Patch201: secrets-0002-SUSE-implement-SUSE-container-secrets.patch
|
Patch201: secrets-0002-SUSE-implement-SUSE-container-secrets.patch
|
||||||
# SUSE-BACKPORT: Backport of https://github.com/moby/moby/pull/35205. bsc#1055676
|
|
||||||
Patch400: bsc1055676-0001-daemon-oci-obey-CL_UNPRIVILEGED-for-user-namespaced-.patch
|
|
||||||
# SUSE-BACKPORT: Backport of https://github.com/moby/moby/pull/35518. bsc#1021227 bsc#1029320 bsc#1058173
|
|
||||||
Patch401: bsc1021227-0001-pkg-devmapper-dynamically-load-dm_task_deferred_remo.patch
|
|
||||||
# SUSE-BACKPORT: Backport of https://github.com/moby/moby/pull/36822. bsc#1073877
|
# SUSE-BACKPORT: Backport of https://github.com/moby/moby/pull/36822. bsc#1073877
|
||||||
Patch402: bsc1073877-0001-apparmor-allow-receiving-of-signals-from-docker-kill.patch
|
Patch400: bsc1073877-0001-apparmor-allow-receiving-of-signals-from-docker-kill.patch
|
||||||
# SUSE-BACKPORT: Backport of https://github.com/moby/moby/pull/37353. bsc#1099277
|
# SUSE-BACKPORT: Backport of https://github.com/moby/moby/pull/37353. bsc#1099277
|
||||||
Patch403: bsc1073877-0002-apparmor-clobber-docker-default-profile-on-start.patch
|
Patch401: bsc1073877-0002-apparmor-clobber-docker-default-profile-on-start.patch
|
||||||
# SUSE-BACKPORT: Backport of https://github.com/docker/cli/pull/1242. bsc#1100727
|
# SUSE-BACKPORT: Backport of https://github.com/docker/cli/pull/1242. bsc#1100727
|
||||||
Patch404: bsc1100727-0001-build-add-buildmode-pie.patch
|
Patch402: bsc1100727-0001-build-add-buildmode-pie.patch
|
||||||
|
# SUSE-BACKPORT: Backport of https://github.com/docker/cli/pull/1306. boo#1047218
|
||||||
|
Patch403: bsc1047218-0001-man-obey-SOURCE_DATE_EPOCH-when-generating-man-pages.patch
|
||||||
|
# SUSE-FEATURE: Add support to mirror inofficial/private registries
|
||||||
|
# (https://github.com/moby/moby/pull/34319)
|
||||||
|
Patch500: private-registry-0001-Add-private-registry-mirror-support.patch
|
||||||
BuildRequires: audit
|
BuildRequires: audit
|
||||||
BuildRequires: bash-completion
|
BuildRequires: bash-completion
|
||||||
BuildRequires: ca-certificates
|
BuildRequires: ca-certificates
|
||||||
@ -79,21 +94,7 @@ BuildRequires: device-mapper-devel >= 1.2.68
|
|||||||
BuildRequires: glibc-devel-static
|
BuildRequires: glibc-devel-static
|
||||||
BuildRequires: libapparmor-devel
|
BuildRequires: libapparmor-devel
|
||||||
BuildRequires: libbtrfs-devel >= 3.8
|
BuildRequires: libbtrfs-devel >= 3.8
|
||||||
# enable libseccomp for sle >= sle12sp2
|
BuildRequires: libseccomp-devel >= 2.2
|
||||||
%if 0%{?sle_version} >= 120200
|
|
||||||
%define with_libseccomp 1
|
|
||||||
%endif
|
|
||||||
# enable libseccomp for leap >= 42.2
|
|
||||||
%if 0%{?leap_version} >= 420200
|
|
||||||
%define with_libseccomp 1
|
|
||||||
%endif
|
|
||||||
# enable libseccomp for Factory
|
|
||||||
%if 0%{?suse_version} > 1320
|
|
||||||
%define with_libseccomp 1
|
|
||||||
%endif
|
|
||||||
%if 0%{?with_libseccomp}
|
|
||||||
BuildRequires: libseccomp-devel
|
|
||||||
%endif
|
|
||||||
BuildRequires: libtool
|
BuildRequires: libtool
|
||||||
BuildRequires: procps
|
BuildRequires: procps
|
||||||
BuildRequires: sqlite3-devel
|
BuildRequires: sqlite3-devel
|
||||||
@ -104,14 +105,14 @@ Requires: ca-certificates-mozilla
|
|||||||
# Required in order for networking to work. fix_bsc_1057743 is a work-around
|
# Required in order for networking to work. fix_bsc_1057743 is a work-around
|
||||||
# for some old packaging issues (where rpm would delete a binary that was
|
# for some old packaging issues (where rpm would delete a binary that was
|
||||||
# installed by docker-libnetwork). See bsc#1057743 for more details.
|
# installed by docker-libnetwork). See bsc#1057743 for more details.
|
||||||
Requires: docker-libnetwork-git = %{required_libnetwork}
|
Requires: docker-libnetwork%{name_suffix}-git = %{required_libnetwork}
|
||||||
Requires: fix_bsc_1057743
|
Requires: fix_bsc_1057743
|
||||||
# Containerd and runC are required as they are the only currently supported
|
# Containerd and runC are required as they are the only currently supported
|
||||||
# execdrivers of Docker. NOTE: The version pinning here matches upstream's
|
# execdrivers of Docker. NOTE: The version pinning here matches upstream's
|
||||||
# vendor.conf to ensure that we don't use a slightly incompatible version of
|
# vendor.conf to ensure that we don't use a slightly incompatible version of
|
||||||
# runC or containerd (which would be bad).
|
# runC or containerd (which would be bad).
|
||||||
Requires: containerd-git = %{required_containerd}
|
Requires: containerd%{name_suffix}-git = %{required_containerd}
|
||||||
Requires: docker-runc-git = %{required_dockerrunc}
|
Requires: docker-runc%{name_suffix}-git = %{required_dockerrunc}
|
||||||
# Needed for --init support. We don't use "tini", we use our own implementation
|
# Needed for --init support. We don't use "tini", we use our own implementation
|
||||||
# which handles edge-cases better.
|
# which handles edge-cases better.
|
||||||
Requires: catatonit
|
Requires: catatonit
|
||||||
@ -134,11 +135,26 @@ Obsoletes: docker-image-migrator
|
|||||||
# different storage-driver than devicemapper
|
# different storage-driver than devicemapper
|
||||||
Recommends: lvm2 >= 2.2.89
|
Recommends: lvm2 >= 2.2.89
|
||||||
Conflicts: lxc < 1.0
|
Conflicts: lxc < 1.0
|
||||||
BuildRoot: %{_tmppath}/%{name}-%{version}-build
|
|
||||||
ExcludeArch: s390 ppc
|
ExcludeArch: s390 ppc
|
||||||
# Make sure we build with go 1.8
|
# Make sure we build with go 1.10
|
||||||
BuildRequires: go-go-md2man
|
BuildRequires: go-go-md2man
|
||||||
BuildRequires: golang(API) = 1.8
|
BuildRequires: golang(API) = 1.10
|
||||||
|
# KUBIC-SPECIFIC: This was required when upgrading from the original kubic
|
||||||
|
# packaging, when everything was renamed to -kubic. It also is
|
||||||
|
# used to ensure that nothing complains too much when using
|
||||||
|
# -kubic packages. Hopfully it can be removed one day.
|
||||||
|
%if "%flavour" == "kubic"
|
||||||
|
# Obsolete old packege without the -kubic suffix
|
||||||
|
Obsoletes: %{realname} = 1.12.6
|
||||||
|
Obsoletes: %{realname}_1_12_6
|
||||||
|
# Conflict with non-kubic package, and provide equivalent
|
||||||
|
Conflicts: %{realname}
|
||||||
|
Provides: %{realname} = %{version}
|
||||||
|
# Kubernetes requires cri-runtime, which should be provided only by the -kubic flavour of this package
|
||||||
|
Provides: cri-runtime
|
||||||
|
# No i586 Kubernetes, so docker-kubic must not be built for i586 also
|
||||||
|
ExcludeArch: i586
|
||||||
|
%endif
|
||||||
|
|
||||||
%description
|
%description
|
||||||
Docker complements LXC with a high-level API which operates at the process
|
Docker complements LXC with a high-level API which operates at the process
|
||||||
@ -153,8 +169,19 @@ service-oriented architectures, etc.
|
|||||||
Summary: Bash Completion for %{name}
|
Summary: Bash Completion for %{name}
|
||||||
Group: System/Management
|
Group: System/Management
|
||||||
Requires: %{name} = %{version}
|
Requires: %{name} = %{version}
|
||||||
Supplements: packageand(docker:bash-completion)
|
Supplements: packageand(%{name}:bash-completion)
|
||||||
BuildArch: noarch
|
BuildArch: noarch
|
||||||
|
# KUBIC-SPECIFIC: This was required when upgrading from the original kubic
|
||||||
|
# packaging, when everything was renamed to -kubic. It also is
|
||||||
|
# used to ensure that nothing complains too much when using
|
||||||
|
# -kubic packages. Hopfully it can be removed one day.
|
||||||
|
%if "%flavour" == "kubic"
|
||||||
|
# Obsolete old packege without the -kubic suffix
|
||||||
|
Obsoletes: %{realname}-bash-completion = 1.12.6
|
||||||
|
# Conflict with non-kubic package, and provide equivalent
|
||||||
|
Conflicts: %{realname}-bash-completion > 1.12.6
|
||||||
|
Provides: %{realname}-bash-completion = %{version}
|
||||||
|
%endif
|
||||||
|
|
||||||
%description bash-completion
|
%description bash-completion
|
||||||
Bash command line completion support for %{name}.
|
Bash command line completion support for %{name}.
|
||||||
@ -163,8 +190,19 @@ Bash command line completion support for %{name}.
|
|||||||
Summary: Zsh Completion for %{name}
|
Summary: Zsh Completion for %{name}
|
||||||
Group: System/Management
|
Group: System/Management
|
||||||
Requires: %{name} = %{version}
|
Requires: %{name} = %{version}
|
||||||
Supplements: packageand(docker:zsh)
|
Supplements: packageand(%{name}:zsh)
|
||||||
BuildArch: noarch
|
BuildArch: noarch
|
||||||
|
# KUBIC-SPECIFIC: This was required when upgrading from the original kubic
|
||||||
|
# packaging, when everything was renamed to -kubic. It also is
|
||||||
|
# used to ensure that nothing complains too much when using
|
||||||
|
# -kubic packages. Hopfully it can be removed one day.
|
||||||
|
%if "%flavour" == "kubic"
|
||||||
|
# Obsolete old packege without the -kubic suffix
|
||||||
|
Obsoletes: %{realname}-zsh-completion = 1.12.6
|
||||||
|
# Conflict with non-kubic package, and provide equivalent
|
||||||
|
Conflicts: %{realname}-zsh-completion > 1.12.6
|
||||||
|
Provides: %{realname}-zsh-completion = %{version}
|
||||||
|
%endif
|
||||||
|
|
||||||
%description zsh-completion
|
%description zsh-completion
|
||||||
Zsh command line completion support for %{name}.
|
Zsh command line completion support for %{name}.
|
||||||
@ -183,12 +221,37 @@ Requires: libbtrfs-devel >= 3.8
|
|||||||
Requires: procps
|
Requires: procps
|
||||||
Requires: sqlite3-devel
|
Requires: sqlite3-devel
|
||||||
Requires: golang(API) = 1.8
|
Requires: golang(API) = 1.8
|
||||||
|
# KUBIC-SPECIFIC: This was required when upgrading from the original kubic
|
||||||
|
# packaging, when everything was renamed to -kubic. It also is
|
||||||
|
# used to ensure that nothing complains too much when using
|
||||||
|
# -kubic packages. Hopfully it can be removed one day.
|
||||||
|
%if "%flavour" == "kubic"
|
||||||
|
# Obsolete old packege without the -kubic suffix
|
||||||
|
Obsoletes: %{realname}-test = 1.12.6
|
||||||
|
# Conflict with non-kubic package, and provide equivalent
|
||||||
|
Conflicts: %{realname}-test > 1.12.6
|
||||||
|
Provides: %{realname}-test = %{version}
|
||||||
|
%endif
|
||||||
|
|
||||||
%description test
|
%description test
|
||||||
Test package for docker. It contains the source code and the tests.
|
Test package for docker. It contains the source code and the tests.
|
||||||
|
|
||||||
|
%if "%flavour" == "kubic"
|
||||||
|
%package kubeadm-criconfig
|
||||||
|
Summary: docker container runtime configuration for kubeadm
|
||||||
|
Group: System/Management
|
||||||
|
Requires: kubernetes-kubeadm
|
||||||
|
Requires(post): %fillup_prereq
|
||||||
|
Supplements: docker-kubic
|
||||||
|
Provides: kubernetes-kubeadm-criconfig
|
||||||
|
Conflicts: cri-o-kubeadm-criconfig
|
||||||
|
|
||||||
|
%description kubeadm-criconfig
|
||||||
|
docker container runtime configuration for kubeadm
|
||||||
|
%endif
|
||||||
|
|
||||||
%prep
|
%prep
|
||||||
%setup -q
|
%setup -q -n %{realname}-%{version}
|
||||||
%if 0%{?is_opensuse}
|
%if 0%{?is_opensuse}
|
||||||
# nothing
|
# nothing
|
||||||
%else
|
%else
|
||||||
@ -196,25 +259,24 @@ Test package for docker. It contains the source code and the tests.
|
|||||||
%patch200 -p1
|
%patch200 -p1
|
||||||
%patch201 -p1
|
%patch201 -p1
|
||||||
%endif
|
%endif
|
||||||
# bsc#1055676
|
|
||||||
%patch400 -p1
|
|
||||||
# bsc#1021227 bsc#1029320 bsc#1058173
|
|
||||||
%patch401 -p1
|
|
||||||
# bsc#1073877
|
# bsc#1073877
|
||||||
%patch402 -p1
|
%patch400 -p1
|
||||||
# bsc#1099277
|
# bsc#1099277
|
||||||
%patch403 -p1
|
%patch401 -p1
|
||||||
# bsc#1100727
|
# bsc#1100727
|
||||||
%patch404 -p1
|
%patch402 -p1
|
||||||
|
# boo#1047218
|
||||||
|
%patch403 -p1
|
||||||
|
%if "%flavour" == "kubic"
|
||||||
|
# PATCH-SUSE: Mirror patch.
|
||||||
|
%patch500 -p1
|
||||||
|
%endif
|
||||||
|
|
||||||
cp %{SOURCE7} .
|
cp %{SOURCE7} .
|
||||||
cp %{SOURCE9} .
|
cp %{SOURCE9} .
|
||||||
|
|
||||||
%build
|
%build
|
||||||
BUILDTAGS="exclude_graphdriver_aufs apparmor selinux pkcs11"
|
BUILDTAGS="exclude_graphdriver_aufs apparmor selinux seccomp pkcs11"
|
||||||
%if 0%{?with_libseccomp}
|
|
||||||
BUILDTAGS="seccomp $BUILDTAGS"
|
|
||||||
%endif
|
|
||||||
%if 0%{?sle_version} == 120000
|
%if 0%{?sle_version} == 120000
|
||||||
# Provided by patch406, to allow us to build with older distros but still
|
# Provided by patch406, to allow us to build with older distros but still
|
||||||
# have deferred removal support at runtime. We only use this when building
|
# have deferred removal support at runtime. We only use this when building
|
||||||
@ -279,9 +341,9 @@ cd ../..
|
|||||||
# of the upstream vendoring scripts. This is done on-build to make sure that
|
# of the upstream vendoring scripts. This is done on-build to make sure that
|
||||||
# someone doing an update didn't miss anything.
|
# someone doing an update didn't miss anything.
|
||||||
cd components/engine
|
cd components/engine
|
||||||
grep 'RUNC_COMMIT=%{required_dockerrunc}' hack/dockerfile/binaries-commits
|
grep 'RUNC_COMMIT=%{required_dockerrunc}' hack/dockerfile/install/runc.installer
|
||||||
grep 'CONTAINERD_COMMIT=%{required_containerd}' hack/dockerfile/binaries-commits
|
grep 'CONTAINERD_COMMIT=%{required_containerd}' hack/dockerfile/install/containerd.installer
|
||||||
grep 'LIBNETWORK_COMMIT=%{required_libnetwork}' hack/dockerfile/binaries-commits
|
grep 'LIBNETWORK_COMMIT=%{required_libnetwork}' hack/dockerfile/install/proxy.installer
|
||||||
|
|
||||||
%install
|
%install
|
||||||
install -d %{buildroot}%{go_contribdir}
|
install -d %{buildroot}%{go_contribdir}
|
||||||
@ -293,8 +355,8 @@ install -Dd -m 0755 \
|
|||||||
%{buildroot}%{_sysconfdir}/init.d \
|
%{buildroot}%{_sysconfdir}/init.d \
|
||||||
%{buildroot}%{_sbindir}
|
%{buildroot}%{_sbindir}
|
||||||
|
|
||||||
install -D -m0644 components/cli/contrib/completion/bash/docker "%{buildroot}%{_sysconfdir}/bash_completion.d/%{name}"
|
install -D -m0644 components/cli/contrib/completion/bash/docker "%{buildroot}%{_sysconfdir}/bash_completion.d/%{realname}"
|
||||||
install -D -m0644 components/cli/contrib/completion/zsh/_docker "%{buildroot}%{_sysconfdir}/zsh_completion.d/%{name}"
|
install -D -m0644 components/cli/contrib/completion/zsh/_docker "%{buildroot}%{_sysconfdir}/zsh_completion.d/%{realname}"
|
||||||
# copy all for the test package
|
# copy all for the test package
|
||||||
install -d %{buildroot}%{_prefix}/src/docker/
|
install -d %{buildroot}%{_prefix}/src/docker/
|
||||||
cp -a components/engine/. %{buildroot}%{_prefix}/src/docker/engine
|
cp -a components/engine/. %{buildroot}%{_prefix}/src/docker/engine
|
||||||
@ -303,17 +365,20 @@ cp -a components/cli/. %{buildroot}%{_prefix}/src/docker/cli
|
|||||||
#
|
#
|
||||||
# systemd service
|
# systemd service
|
||||||
#
|
#
|
||||||
install -D -m 0644 %{SOURCE1} %{buildroot}%{_unitdir}/%{name}.service
|
install -D -m0644 %{SOURCE1} %{buildroot}%{_unitdir}/%{realname}.service
|
||||||
|
%if "%flavour" == "kubic"
|
||||||
|
install -D -m0644 %{SOURCE2} %{buildroot}%{_unitdir}/%{realname}.service.d/90-kubic.conf
|
||||||
|
%endif
|
||||||
ln -sf service %{buildroot}%{_sbindir}/rcdocker
|
ln -sf service %{buildroot}%{_sbindir}/rcdocker
|
||||||
|
|
||||||
#
|
#
|
||||||
# udev rules that prevents dolphin to show all docker devices and slows down
|
# udev rules that prevents dolphin to show all docker devices and slows down
|
||||||
# upstream report https://bugs.kde.org/show_bug.cgi?id=329930
|
# upstream report https://bugs.kde.org/show_bug.cgi?id=329930
|
||||||
#
|
#
|
||||||
install -D -m 0644 %{SOURCE3} %{buildroot}%{_udevrulesdir}/80-%{name}.rules
|
install -D -m 0644 %{SOURCE3} %{buildroot}%{_udevrulesdir}/80-%{realname}.rules
|
||||||
|
|
||||||
# audit rules
|
# audit rules
|
||||||
install -D -m 0640 %{SOURCE8} %{buildroot}%{_sysconfdir}/audit/rules.d/%{name}.rules
|
install -D -m 0640 %{SOURCE8} %{buildroot}%{_sysconfdir}/audit/rules.d/%{realname}.rules
|
||||||
|
|
||||||
# sysconfig file
|
# sysconfig file
|
||||||
install -D -m 644 %{SOURCE4} %{buildroot}%{_fillupdir}/sysconfig.docker
|
install -D -m 644 %{SOURCE4} %{buildroot}%{_fillupdir}/sysconfig.docker
|
||||||
@ -326,21 +391,42 @@ install -p -m 644 components/cli/man/man5/Dockerfile.5 %{buildroot}%{_mandir}/ma
|
|||||||
install -d %{buildroot}%{_mandir}/man8
|
install -d %{buildroot}%{_mandir}/man8
|
||||||
install -p -m 644 components/cli/man/man8/*.8 %{buildroot}%{_mandir}/man8
|
install -p -m 644 components/cli/man/man8/*.8 %{buildroot}%{_mandir}/man8
|
||||||
|
|
||||||
|
%if "%flavour" == "kubic"
|
||||||
|
# place kubelet.env in fillupdir (for kubeadm-criconfig)
|
||||||
|
install -D -m 0644 %{SOURCE5} %{buildroot}%{_fillupdir}/sysconfig.kubelet
|
||||||
|
%endif
|
||||||
|
|
||||||
%fdupes %{buildroot}
|
%fdupes %{buildroot}
|
||||||
|
|
||||||
%pre
|
%pre
|
||||||
getent group docker >/dev/null || groupadd -r docker
|
getent group docker >/dev/null || groupadd -r docker
|
||||||
%service_add_pre %{name}.service
|
%service_add_pre %{realname}.service
|
||||||
|
|
||||||
%post
|
%post
|
||||||
%service_add_post %{name}.service
|
%service_add_post %{realname}.service
|
||||||
%{fillup_only -n docker}
|
%{fillup_only -n docker}
|
||||||
|
|
||||||
|
# NOTE: This is a pretty hacky way of getting around the fact we've removed
|
||||||
|
# containerd.service and now everything is spawned underneath Docker. In
|
||||||
|
# order to force containerd.service to be stopped on the upgrade we need
|
||||||
|
# to trick the systemd macros into thinking that this is an "uninstall".
|
||||||
|
# Hopefully we can remove this soon.
|
||||||
|
(
|
||||||
|
FIRST_ARG=0
|
||||||
|
%service_del_preun containerd.service containerd.socket
|
||||||
|
%service_del_postun containerd.service containerd.socket
|
||||||
|
)
|
||||||
|
|
||||||
|
%if "%flavour" == "kubic"
|
||||||
|
%post kubeadm-criconfig
|
||||||
|
%fillup_only -n kubelet
|
||||||
|
%endif
|
||||||
|
|
||||||
%preun
|
%preun
|
||||||
%service_del_preun %{name}.service
|
%service_del_preun %{realname}.service
|
||||||
|
|
||||||
%postun
|
%postun
|
||||||
%service_del_postun %{name}.service
|
%service_del_postun %{realname}.service
|
||||||
|
|
||||||
%files
|
%files
|
||||||
%defattr(-,root,root)
|
%defattr(-,root,root)
|
||||||
@ -349,9 +435,13 @@ getent group docker >/dev/null || groupadd -r docker
|
|||||||
%{_bindir}/docker
|
%{_bindir}/docker
|
||||||
%{_bindir}/dockerd
|
%{_bindir}/dockerd
|
||||||
%{_sbindir}/rcdocker
|
%{_sbindir}/rcdocker
|
||||||
%{_unitdir}/%{name}.service
|
%{_unitdir}/%{realname}.service
|
||||||
%config %{_sysconfdir}/audit/rules.d/%{name}.rules
|
%if "%flavour" == "kubic"
|
||||||
%{_udevrulesdir}/80-%{name}.rules
|
%dir %{_unitdir}/%{realname}.service.d/
|
||||||
|
%{_unitdir}/%{realname}.service.d/90-kubic.conf
|
||||||
|
%endif
|
||||||
|
%config %{_sysconfdir}/audit/rules.d/%{realname}.rules
|
||||||
|
%{_udevrulesdir}/80-%{realname}.rules
|
||||||
%{_fillupdir}/sysconfig.docker
|
%{_fillupdir}/sysconfig.docker
|
||||||
%dir %{_localstatedir}/lib/docker/
|
%dir %{_localstatedir}/lib/docker/
|
||||||
%{_mandir}/man1/docker-*.1%{ext_man}
|
%{_mandir}/man1/docker-*.1%{ext_man}
|
||||||
@ -361,11 +451,11 @@ getent group docker >/dev/null || groupadd -r docker
|
|||||||
|
|
||||||
%files bash-completion
|
%files bash-completion
|
||||||
%defattr(-,root,root)
|
%defattr(-,root,root)
|
||||||
%config %{_sysconfdir}/bash_completion.d/%{name}
|
%config %{_sysconfdir}/bash_completion.d/%{realname}
|
||||||
|
|
||||||
%files zsh-completion
|
%files zsh-completion
|
||||||
%defattr(-,root,root)
|
%defattr(-,root,root)
|
||||||
%config %{_sysconfdir}/zsh_completion.d/%{name}
|
%config %{_sysconfdir}/zsh_completion.d/%{realname}
|
||||||
|
|
||||||
%files test
|
%files test
|
||||||
%defattr(-,root,root)
|
%defattr(-,root,root)
|
||||||
@ -379,4 +469,10 @@ getent group docker >/dev/null || groupadd -r docker
|
|||||||
%exclude %{_prefix}/src/docker/engine/contrib/init/sysvinit-redhat
|
%exclude %{_prefix}/src/docker/engine/contrib/init/sysvinit-redhat
|
||||||
%exclude %{_prefix}/src/docker/engine/contrib/init/upstart
|
%exclude %{_prefix}/src/docker/engine/contrib/init/upstart
|
||||||
|
|
||||||
|
%if "%flavour" == "kubic"
|
||||||
|
%files kubeadm-criconfig
|
||||||
|
%defattr(-,root,root)
|
||||||
|
%{_fillupdir}/sysconfig.kubelet
|
||||||
|
%endif
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
1
kubelet.env
Normal file
1
kubelet.env
Normal file
@ -0,0 +1 @@
|
|||||||
|
KUBELET_EXTRA_ARGS="--cni-bin-dir=/usr/lib/cni"
|
1163
private-registry-0001-Add-private-registry-mirror-support.patch
Normal file
1163
private-registry-0001-Add-private-registry-mirror-support.patch
Normal file
File diff suppressed because it is too large
Load Diff
@ -1,4 +1,4 @@
|
|||||||
From c607825b73e5f850b3804a10e9f3c8684cb29d16 Mon Sep 17 00:00:00 2001
|
From 95a40e4f18c80cce91f16c6dff08e13642de54da Mon Sep 17 00:00:00 2001
|
||||||
From: Aleksa Sarai <asarai@suse.de>
|
From: Aleksa Sarai <asarai@suse.de>
|
||||||
Date: Wed, 8 Mar 2017 12:41:54 +1100
|
Date: Wed, 8 Mar 2017 12:41:54 +1100
|
||||||
Subject: [PATCH 1/2] daemon: allow directory creation in /run/secrets
|
Subject: [PATCH 1/2] daemon: allow directory creation in /run/secrets
|
||||||
@ -14,26 +14,26 @@ Signed-off-by: Aleksa Sarai <asarai@suse.de>
|
|||||||
1 file changed, 21 insertions(+), 3 deletions(-)
|
1 file changed, 21 insertions(+), 3 deletions(-)
|
||||||
|
|
||||||
diff --git a/components/engine/daemon/container_operations_unix.go b/components/engine/daemon/container_operations_unix.go
|
diff --git a/components/engine/daemon/container_operations_unix.go b/components/engine/daemon/container_operations_unix.go
|
||||||
index 954c194ea836..3ef1e0262edc 100644
|
index bc7ee452332b..d34129dfd80b 100644
|
||||||
--- a/components/engine/daemon/container_operations_unix.go
|
--- a/components/engine/daemon/container_operations_unix.go
|
||||||
+++ b/components/engine/daemon/container_operations_unix.go
|
+++ b/components/engine/daemon/container_operations_unix.go
|
||||||
@@ -3,6 +3,7 @@
|
@@ -3,6 +3,7 @@
|
||||||
package daemon
|
package daemon // import "github.com/docker/docker/daemon"
|
||||||
|
|
||||||
import (
|
import (
|
||||||
+ "bytes"
|
+ "bytes"
|
||||||
"context"
|
"context"
|
||||||
"fmt"
|
"fmt"
|
||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
@@ -13,6 +14,7 @@ import (
|
@@ -14,6 +15,7 @@ import (
|
||||||
|
|
||||||
"github.com/docker/docker/container"
|
"github.com/docker/docker/container"
|
||||||
"github.com/docker/docker/daemon/links"
|
"github.com/docker/docker/daemon/links"
|
||||||
|
"github.com/docker/docker/errdefs"
|
||||||
+ "github.com/docker/docker/pkg/archive"
|
+ "github.com/docker/docker/pkg/archive"
|
||||||
"github.com/docker/docker/pkg/idtools"
|
"github.com/docker/docker/pkg/idtools"
|
||||||
"github.com/docker/docker/pkg/mount"
|
"github.com/docker/docker/pkg/mount"
|
||||||
"github.com/docker/docker/pkg/stringid"
|
"github.com/docker/docker/pkg/stringid"
|
||||||
@@ -216,9 +218,6 @@ func (daemon *Daemon) setupSecretDir(c *container.Container) (setupErr error) {
|
@@ -206,9 +208,6 @@ func (daemon *Daemon) setupSecretDir(c *container.Container) (setupErr error) {
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return errors.Wrap(err, "unable to get secret from secret store")
|
return errors.Wrap(err, "unable to get secret from secret store")
|
||||||
}
|
}
|
||||||
@ -43,7 +43,7 @@ index 954c194ea836..3ef1e0262edc 100644
|
|||||||
|
|
||||||
uid, err := strconv.Atoi(s.File.UID)
|
uid, err := strconv.Atoi(s.File.UID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@@ -229,6 +228,25 @@ func (daemon *Daemon) setupSecretDir(c *container.Container) (setupErr error) {
|
@@ -219,6 +218,25 @@ func (daemon *Daemon) setupSecretDir(c *container.Container) (setupErr error) {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -70,5 +70,5 @@ index 954c194ea836..3ef1e0262edc 100644
|
|||||||
return errors.Wrap(err, "error setting ownership for secret")
|
return errors.Wrap(err, "error setting ownership for secret")
|
||||||
}
|
}
|
||||||
--
|
--
|
||||||
2.17.0
|
2.18.0
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
From a7533a3084e925eb478148ef30bec0d1f1b81ae3 Mon Sep 17 00:00:00 2001
|
From f178392f98b42bf36ff8d8c6a23c8caab9ac10f7 Mon Sep 17 00:00:00 2001
|
||||||
From: Aleksa Sarai <asarai@suse.de>
|
From: Aleksa Sarai <asarai@suse.de>
|
||||||
Date: Wed, 8 Mar 2017 11:43:29 +1100
|
Date: Wed, 8 Mar 2017 11:43:29 +1100
|
||||||
Subject: [PATCH 2/2] SUSE: implement SUSE container secrets
|
Subject: [PATCH 2/2] SUSE: implement SUSE container secrets
|
||||||
@ -10,36 +10,36 @@ THIS PATCH IS NOT TO BE UPSTREAMED, DUE TO THE FACT THAT IT IS
|
|||||||
SUSE-SPECIFIC, AND UPSTREAM DOES NOT APPROVE OF THIS CONCEPT BECAUSE IT
|
SUSE-SPECIFIC, AND UPSTREAM DOES NOT APPROVE OF THIS CONCEPT BECAUSE IT
|
||||||
MAKES BUILDS NOT ENTIRELY REPRODUCIBLE.
|
MAKES BUILDS NOT ENTIRELY REPRODUCIBLE.
|
||||||
|
|
||||||
SUSE-Bugs: bsc#1065609 bsc#1057743 bsc#1055676 bsc#1030702
|
SUSE-Bugs: bsc#1057743 bsc#1055676 bsc#1030702
|
||||||
Signed-off-by: Aleksa Sarai <asarai@suse.de>
|
Signed-off-by: Aleksa Sarai <asarai@suse.de>
|
||||||
---
|
---
|
||||||
components/engine/daemon/start.go | 5 +
|
components/engine/daemon/start.go | 5 +
|
||||||
components/engine/daemon/suse_secrets.go | 399 +++++++++++++++++++++++
|
components/engine/daemon/suse_secrets.go | 396 +++++++++++++++++++++++
|
||||||
2 files changed, 404 insertions(+)
|
2 files changed, 401 insertions(+)
|
||||||
create mode 100644 components/engine/daemon/suse_secrets.go
|
create mode 100644 components/engine/daemon/suse_secrets.go
|
||||||
|
|
||||||
diff --git a/components/engine/daemon/start.go b/components/engine/daemon/start.go
|
diff --git a/components/engine/daemon/start.go b/components/engine/daemon/start.go
|
||||||
index 55438cf2c45f..7dfa6cd1d055 100644
|
index c00bd9ceb22b..aa705888df39 100644
|
||||||
--- a/components/engine/daemon/start.go
|
--- a/components/engine/daemon/start.go
|
||||||
+++ b/components/engine/daemon/start.go
|
+++ b/components/engine/daemon/start.go
|
||||||
@@ -147,6 +147,11 @@ func (daemon *Daemon) containerStart(container *container.Container, checkpoint
|
@@ -151,6 +151,11 @@ func (daemon *Daemon) containerStart(container *container.Container, checkpoint
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
+ // SUSE:secrets -- inject the SUSE secret store
|
+ // SUSE:secrets -- inject the SUSE secret store
|
||||||
+ if err := daemon.injectSuseSecretStore(container); err != nil {
|
+ if err := daemon.injectSuseSecretStore(container); err != nil {
|
||||||
+ return err
|
+ return errdefs.System(err)
|
||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
spec, err := daemon.createSpec(container)
|
spec, err := daemon.createSpec(container)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return systemError{err}
|
return errdefs.System(err)
|
||||||
diff --git a/components/engine/daemon/suse_secrets.go b/components/engine/daemon/suse_secrets.go
|
diff --git a/components/engine/daemon/suse_secrets.go b/components/engine/daemon/suse_secrets.go
|
||||||
new file mode 100644
|
new file mode 100644
|
||||||
index 000000000000..00e485368b47
|
index 000000000000..817cd5561023
|
||||||
--- /dev/null
|
--- /dev/null
|
||||||
+++ b/components/engine/daemon/suse_secrets.go
|
+++ b/components/engine/daemon/suse_secrets.go
|
||||||
@@ -0,0 +1,399 @@
|
@@ -0,0 +1,396 @@
|
||||||
+/*
|
+/*
|
||||||
+ * suse-secrets: patch for Docker to implement SUSE secrets
|
+ * suse-secrets: patch for Docker to implement SUSE secrets
|
||||||
+ * Copyright (C) 2017 SUSE LLC.
|
+ * Copyright (C) 2017 SUSE LLC.
|
||||||
@ -143,10 +143,6 @@ index 000000000000..00e485368b47
|
|||||||
+ var suseFiles []*SuseFakeFile
|
+ var suseFiles []*SuseFakeFile
|
||||||
+
|
+
|
||||||
+ path := filepath.Join(prefix, dir)
|
+ path := filepath.Join(prefix, dir)
|
||||||
+ if _, err := os.Lstat(path); err != nil && os.IsNotExist(err) {
|
|
||||||
+ // If the path doesn't exist at all we don't inject anything.
|
|
||||||
+ return nil, nil
|
|
||||||
+ }
|
|
||||||
+ fi, err := os.Stat(path)
|
+ fi, err := os.Stat(path)
|
||||||
+ if err != nil {
|
+ if err != nil {
|
||||||
+ // Ignore dangling symlinks.
|
+ // Ignore dangling symlinks.
|
||||||
@ -263,10 +259,6 @@ index 000000000000..00e485368b47
|
|||||||
+// readFile returns a secret given a file under a given prefix.
|
+// readFile returns a secret given a file under a given prefix.
|
||||||
+func readFile(prefix, file string) ([]*SuseFakeFile, error) {
|
+func readFile(prefix, file string) ([]*SuseFakeFile, error) {
|
||||||
+ path := filepath.Join(prefix, file)
|
+ path := filepath.Join(prefix, file)
|
||||||
+ if _, err := os.Lstat(path); err != nil && os.IsNotExist(err) {
|
|
||||||
+ // If the path doesn't exist at all we don't inject anything.
|
|
||||||
+ return nil, nil
|
|
||||||
+ }
|
|
||||||
+ fi, err := os.Stat(path)
|
+ fi, err := os.Stat(path)
|
||||||
+ if err != nil {
|
+ if err != nil {
|
||||||
+ // Ignore dangling symlinks.
|
+ // Ignore dangling symlinks.
|
||||||
@ -430,7 +422,12 @@ index 000000000000..00e485368b47
|
|||||||
+ // to the mount list. This causes clashes because of duplicate namespaces.
|
+ // to the mount list. This causes clashes because of duplicate namespaces.
|
||||||
+ // If we see an existing mount that will clash with the in-built secrets
|
+ // If we see an existing mount that will clash with the in-built secrets
|
||||||
+ // mount we assume it's our fault.
|
+ // mount we assume it's our fault.
|
||||||
+ for _, intendedMount := range c.SecretMounts() {
|
+ intendedMounts, err := c.SecretMounts()
|
||||||
|
+ if err != nil {
|
||||||
|
+ logrus.Warnf("SUSE:secrets :: fetching old secret mounts: %v", err)
|
||||||
|
+ return err
|
||||||
|
+ }
|
||||||
|
+ for _, intendedMount := range intendedMounts {
|
||||||
+ mountPath := intendedMount.Destination
|
+ mountPath := intendedMount.Destination
|
||||||
+ if volume, ok := c.MountPoints[mountPath]; ok {
|
+ if volume, ok := c.MountPoints[mountPath]; ok {
|
||||||
+ logrus.Debugf("SUSE:secrets :: removing pre-existing %q mount: %#v", mountPath, volume)
|
+ logrus.Debugf("SUSE:secrets :: removing pre-existing %q mount: %#v", mountPath, volume)
|
||||||
@ -440,5 +437,5 @@ index 000000000000..00e485368b47
|
|||||||
+ return nil
|
+ return nil
|
||||||
+}
|
+}
|
||||||
--
|
--
|
||||||
2.17.0
|
2.18.0
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user