mirror of
https://github.com/flatcar/scripts.git
synced 2025-09-23 14:41:31 +02:00
overlay app-containers/docker: Apply Flatcar modifications
Apply Flatcar patches, based on commit 9d6af12f1cc48359e0f84654302155b46ad780c7.
This commit is contained in:
parent
c7209aaf50
commit
3d001c577d
@ -7,6 +7,11 @@ MY_PV=${PV/_/-}
|
||||
GIT_COMMIT=d6cbf44b8c
|
||||
inherit linux-info systemd udev golang-vcs-snapshot
|
||||
|
||||
COREOS_GO_VERSION="go1.19"
|
||||
COREOS_GO_GO111MODULE="off"
|
||||
|
||||
inherit coreos-go-depend
|
||||
|
||||
DESCRIPTION="The core functions you need to create Docker images and run Docker containers"
|
||||
HOMEPAGE="https://www.docker.com/"
|
||||
SRC_URI="https://github.com/moby/moby/archive/v${MY_PV}.tar.gz -> ${P}.tar.gz"
|
||||
@ -14,8 +19,9 @@ SRC_URI="https://github.com/moby/moby/archive/v${MY_PV}.tar.gz -> ${P}.tar.gz"
|
||||
LICENSE="Apache-2.0"
|
||||
SLOT="0"
|
||||
KEYWORDS="amd64 ~arm arm64 ppc64 ~riscv ~x86"
|
||||
IUSE="apparmor aufs btrfs +cli +container-init device-mapper hardened
|
||||
overlay seccomp selinux"
|
||||
# Flatcar: default enable required USE flags
|
||||
IUSE="apparmor aufs +btrfs +cli +container-init +device-mapper +hardened
|
||||
+overlay +seccomp selinux"
|
||||
|
||||
DEPEND="
|
||||
acct-group/docker
|
||||
@ -26,11 +32,21 @@ DEPEND="
|
||||
seccomp? ( >=sys-libs/libseccomp-2.2.1 )
|
||||
"
|
||||
|
||||
# Flatcar:
|
||||
# For CoreOS builds coreos-kernel must be installed because this ebuild
|
||||
# checks the kernel config. The kernel config is left by the kernel compile
|
||||
# or an explicit copy when installing binary packages. See coreos-kernel.eclass
|
||||
DEPEND+="
|
||||
sys-kernel/coreos-kernel
|
||||
"
|
||||
|
||||
# https://github.com/moby/moby/blob/master/project/PACKAGERS.md#runtime-dependencies
|
||||
# https://github.com/moby/moby/blob/master/project/PACKAGERS.md#optional-dependencies
|
||||
# https://github.com/moby/moby/tree/master//hack/dockerfile/install
|
||||
# make sure docker-proxy is pinned to exact version from ^,
|
||||
# for appropriate branchch/version of course
|
||||
# Flatcar:
|
||||
# containerd ebuild doesn't support apparmor, device-mapper and seccomp use flags
|
||||
RDEPEND="
|
||||
${DEPEND}
|
||||
>=net-firewall/iptables-1.4
|
||||
@ -38,7 +54,7 @@ RDEPEND="
|
||||
>=dev-vcs/git-1.7
|
||||
>=app-arch/xz-utils-4.9
|
||||
dev-libs/libltdl
|
||||
>=app-containers/containerd-1.6.16[apparmor?,btrfs?,device-mapper?,seccomp?]
|
||||
>=app-containers/containerd-1.6.16[btrfs?]
|
||||
~app-containers/docker-proxy-0.8.0_p20230118
|
||||
cli? ( ~app-containers/docker-cli-${PV} )
|
||||
container-init? ( >=sys-process/tini-0.19.0[static] )
|
||||
@ -46,9 +62,9 @@ RDEPEND="
|
||||
"
|
||||
|
||||
# https://github.com/docker/docker/blob/master/project/PACKAGERS.md#build-dependencies
|
||||
# Flatcar: drop go-md2man
|
||||
BDEPEND="
|
||||
>=dev-lang/go-1.16.12
|
||||
dev-go/go-md2man
|
||||
virtual/pkgconfig
|
||||
"
|
||||
# tests require running dockerd as root and downloading containers
|
||||
@ -56,10 +72,9 @@ RESTRICT="installsources strip test"
|
||||
|
||||
S="${WORKDIR}/${P}/src/${EGO_PN}"
|
||||
|
||||
# https://bugs.gentoo.org/748984 https://github.com/etcd-io/etcd/pull/12552
|
||||
# Flatcar: Dropped outdated bug links, dropped openrc init script patch
|
||||
PATCHES=(
|
||||
"${FILESDIR}/ppc64-buildmode.patch"
|
||||
"${FILESDIR}/0001-Openrc-Depend-on-containerd-init-script.patch"
|
||||
)
|
||||
|
||||
# see "contrib/check-config.sh" from upstream's sources
|
||||
@ -172,14 +187,17 @@ pkg_setup() {
|
||||
}
|
||||
|
||||
src_compile() {
|
||||
# Flatcar: for cross-compilation
|
||||
go_export
|
||||
export DOCKER_GITCOMMIT="${GIT_COMMIT}"
|
||||
export GOPATH="${WORKDIR}/${P}"
|
||||
export VERSION=${PV}
|
||||
|
||||
# setup CFLAGS and LDFLAGS for separate build target
|
||||
# see https://github.com/tianon/docker-overlay/pull/10
|
||||
export CGO_CFLAGS="-I${ESYSROOT}/usr/include"
|
||||
export CGO_LDFLAGS="-L${ESYSROOT}/usr/$(get_libdir)"
|
||||
# Flatcar: allow injecting CFLAGS/LDFLAGS, which is needed for torcx rpath
|
||||
export CGO_CFLAGS="${CGO_CFLAGS} -I${ESYSROOT}/usr/include"
|
||||
export CGO_LDFLAGS="${CGO_LDFLAGS} -L${ESYSROOT}/usr/$(get_libdir)"
|
||||
|
||||
# let's set up some optional features :)
|
||||
export DOCKER_BUILDTAGS=''
|
||||
@ -194,11 +212,15 @@ src_compile() {
|
||||
DOCKER_BUILDTAGS+=" $tag"
|
||||
fi
|
||||
done
|
||||
# Flatcar: Add journald to build tags.
|
||||
DOCKER_BUILDTAGS+=' journald'
|
||||
|
||||
# Flatcar:
|
||||
# inject LDFLAGS for torcx
|
||||
if use hardened; then
|
||||
sed -i "s/EXTLDFLAGS_STATIC='/&-fno-PIC /" hack/make.sh || die
|
||||
sed -i "s#EXTLDFLAGS_STATIC='#&-fno-PIC $LDFLAGS #" hack/make.sh || die
|
||||
grep -q -- '-fno-PIC' hack/make.sh || die 'hardened sed failed'
|
||||
sed "s/LDFLAGS_STATIC_DOCKER='/&-extldflags -fno-PIC /" \
|
||||
sed "s#LDFLAGS_STATIC_DOCKER='#&-extldflags \"-fno-PIC $LDFLAGS\" #" \
|
||||
-i hack/make/dynbinary-daemon || die
|
||||
grep -q -- '-fno-PIC' hack/make/dynbinary-daemon || die 'hardened sed failed'
|
||||
fi
|
||||
@ -217,16 +239,32 @@ src_install() {
|
||||
newinitd contrib/init/openrc/docker.initd docker
|
||||
newconfd contrib/init/openrc/docker.confd docker
|
||||
|
||||
systemd_dounit contrib/init/systemd/docker.{service,socket}
|
||||
# Flatcar:
|
||||
# install our systemd units/network config and our wrapper into
|
||||
# /usr/lib/flatcar/docker for backwards compatibility instead of
|
||||
# the units from contrib/init/systemd directory.
|
||||
#
|
||||
# systemd_dounit contrib/init/systemd/docker.{service,socket}
|
||||
exeinto /usr/lib/flatcar
|
||||
doexe "${FILESDIR}/dockerd"
|
||||
|
||||
systemd_dounit "${FILESDIR}/docker.service"
|
||||
systemd_dounit "${FILESDIR}/docker.socket"
|
||||
|
||||
insinto /usr/lib/systemd/network
|
||||
doins "${FILESDIR}/50-docker.network"
|
||||
doins "${FILESDIR}/90-docker-veth.network"
|
||||
|
||||
udev_dorules contrib/udev/*.rules
|
||||
|
||||
dodoc AUTHORS CONTRIBUTING.md CHANGELOG.md NOTICE README.md
|
||||
dodoc -r docs/*
|
||||
|
||||
# note: intentionally not using "doins" so that we preserve +x bits
|
||||
dodir /usr/share/${PN}/contrib
|
||||
cp -R contrib/* "${ED}/usr/share/${PN}/contrib"
|
||||
# Flatcar:
|
||||
# don't install contrib bits
|
||||
# # note: intentionally not using "doins" so that we preserve +x bits
|
||||
# dodir /usr/share/${PN}/contrib
|
||||
# cp -R contrib/* "${ED}/usr/share/${PN}/contrib"
|
||||
}
|
||||
|
||||
pkg_postinst() {
|
||||
|
@ -1,28 +0,0 @@
|
||||
From bb69104381805014eb7675682d204fe460a52388 Mon Sep 17 00:00:00 2001
|
||||
From: Jan Breig <git@pygos.space>
|
||||
Date: Mon, 16 May 2022 14:58:36 +0200
|
||||
Subject: [PATCH] Openrc: Depend on containerd init script
|
||||
|
||||
Signed-off-by: Jan Breig <git@pygos.space>
|
||||
---
|
||||
contrib/init/openrc/docker.initd | 4 ++++
|
||||
1 file changed, 4 insertions(+)
|
||||
|
||||
diff --git a/contrib/init/openrc/docker.initd b/contrib/init/openrc/docker.initd
|
||||
index 3229223bad..57defb8f57 100644
|
||||
--- a/contrib/init/openrc/docker.initd
|
||||
+++ b/contrib/init/openrc/docker.initd
|
||||
@@ -17,6 +17,10 @@ rc_ulimit="${DOCKER_ULIMIT:--c unlimited -n 1048576 -u unlimited}"
|
||||
|
||||
retry="${DOCKER_RETRY:-TERM/60/KILL/10}"
|
||||
|
||||
+depend() {
|
||||
+ need containerd
|
||||
+}
|
||||
+
|
||||
start_pre() {
|
||||
checkpath -f -m 0644 -o root:docker "$DOCKER_LOGFILE"
|
||||
}
|
||||
--
|
||||
2.35.1
|
||||
|
6
sdk_container/src/third_party/coreos-overlay/app-containers/docker/files/50-docker.network
vendored
Normal file
6
sdk_container/src/third_party/coreos-overlay/app-containers/docker/files/50-docker.network
vendored
Normal file
@ -0,0 +1,6 @@
|
||||
[Match]
|
||||
Type=bridge
|
||||
Name=docker* br-*
|
||||
|
||||
[Link]
|
||||
Unmanaged=yes
|
@ -0,0 +1,5 @@
|
||||
[Match]
|
||||
Driver=veth
|
||||
|
||||
[Link]
|
||||
Unmanaged=yes
|
37
sdk_container/src/third_party/coreos-overlay/app-containers/docker/files/docker.service
vendored
Normal file
37
sdk_container/src/third_party/coreos-overlay/app-containers/docker/files/docker.service
vendored
Normal file
@ -0,0 +1,37 @@
|
||||
[Unit]
|
||||
Description=Docker Application Container Engine
|
||||
Documentation=http://docs.docker.com
|
||||
After=containerd.service docker.socket network-online.target
|
||||
Wants=network-online.target
|
||||
Requires=containerd.service docker.socket
|
||||
|
||||
[Service]
|
||||
Type=notify
|
||||
EnvironmentFile=-/run/flannel/flannel_docker_opts.env
|
||||
Environment=DOCKER_SELINUX=--selinux-enabled=true
|
||||
|
||||
# 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 --host=fd:// --containerd=/var/run/docker/libcontainerd/docker-containerd.sock $DOCKER_SELINUX $DOCKER_OPTS $DOCKER_CGROUPS $DOCKER_OPT_BIP $DOCKER_OPT_MTU $DOCKER_OPT_IPMASQ
|
||||
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
|
13
sdk_container/src/third_party/coreos-overlay/app-containers/docker/files/docker.socket
vendored
Normal file
13
sdk_container/src/third_party/coreos-overlay/app-containers/docker/files/docker.socket
vendored
Normal file
@ -0,0 +1,13 @@
|
||||
[Unit]
|
||||
Description=Docker Socket for the API
|
||||
PartOf=docker.service
|
||||
|
||||
[Socket]
|
||||
ListenStream=/var/run/docker.sock
|
||||
SocketMode=0660
|
||||
SocketUser=root
|
||||
SocketGroup=docker
|
||||
|
||||
[Install]
|
||||
WantedBy=sockets.target
|
||||
|
41
sdk_container/src/third_party/coreos-overlay/app-containers/docker/files/dockerd
vendored
Normal file
41
sdk_container/src/third_party/coreos-overlay/app-containers/docker/files/dockerd
vendored
Normal file
@ -0,0 +1,41 @@
|
||||
#!/bin/bash
|
||||
# Wrapper for launching docker daemons with selinux default on
|
||||
# This wrapper script has been deprecated (euank: 2017-05-09) and is retained
|
||||
# for backwards compatibility.
|
||||
|
||||
set -e
|
||||
|
||||
parse_docker_args() {
|
||||
local flag
|
||||
while [[ $# -gt 0 ]]; do
|
||||
flag="$1"
|
||||
shift
|
||||
|
||||
# treat --flag=foo and --flag foo identically
|
||||
if [[ "${flag}" == *=* ]]; then
|
||||
set -- "${flag#*=}" "$@"
|
||||
flag="${flag%=*}"
|
||||
fi
|
||||
|
||||
case "${flag}" in
|
||||
--selinux-enabled)
|
||||
ARG_SELINUX="$1"
|
||||
shift
|
||||
;;
|
||||
*)
|
||||
# ignore everything else
|
||||
;;
|
||||
esac
|
||||
done
|
||||
}
|
||||
|
||||
parse_docker_args "$@"
|
||||
|
||||
USE_SELINUX=""
|
||||
# Do not override selinux if it is already explicitly configured.
|
||||
if [[ -z "${ARG_SELINUX}" ]]; then
|
||||
# If unspecified, default off
|
||||
USE_SELINUX="--selinux-enabled=false"
|
||||
fi
|
||||
|
||||
exec dockerd "$@" ${USE_SELINUX}
|
Loading…
x
Reference in New Issue
Block a user