Compare commits
4 Commits
main
...
dboreham/f
Author | SHA1 | Date | |
---|---|---|---|
4b3ca44873 | |||
f6fc495e1d | |||
cefd19456f | |||
3060a757bd |
@ -28,8 +28,6 @@ RUN set -uex; \
|
||||
RUN apt update && apt install -y docker-ce && rm -rf /var/lib/apt/lists/*
|
||||
# Install sudo because some actions projects assume it is present, and it is present in GitHub runners
|
||||
RUN apt update && apt install -y sudo
|
||||
# Make sure we have some other basic tools that scripts expect.
|
||||
RUN apt update && apt install -y wget curl jq
|
||||
# Install software-properties-common so we have the add-apt-repository command, used by some actions to add a package repo
|
||||
RUN apt update && apt install -y software-properties-common
|
||||
|
||||
@ -39,7 +37,6 @@ RUN apt update && apt install -y iptables supervisor
|
||||
COPY modprobe start-docker.sh entrypoint.sh /usr/local/bin/
|
||||
COPY supervisor/ /etc/supervisor/conf.d/
|
||||
COPY logger.sh /opt/bash-utils/logger.sh
|
||||
COPY cgroup-helper.sh /opt/bash-utils/cgroup-helper.sh
|
||||
|
||||
RUN chmod +x /usr/local/bin/start-docker.sh \
|
||||
/usr/local/bin/entrypoint.sh \
|
||||
|
@ -1,34 +0,0 @@
|
||||
|
||||
# This file needs to be source'ed and the function join_cgroup called, by any script that goes on to run kind
|
||||
# This is required due to issues with properly virtualizing the cgroup hierarchy that exist at present in docker
|
||||
# See: https://github.com/earthly/earthly/blob/main/buildkitd/dockerd-wrapper.sh#L56
|
||||
function configure_cgroup() {
|
||||
if [ -f "/sys/fs/cgroup/cgroup.controllers" ]; then
|
||||
echo >&2 "INFO: detected cgroup v2, configuring nested docker group"
|
||||
|
||||
local cgroup_name="nested-dockerd" # NOTE: has to be the same as the function below (local var to prevent overriding in the caller)
|
||||
|
||||
# move script to separate cgroup, to prevent the root cgroup from becoming threaded (which will prevent systemd images (e.g. kind) from running)
|
||||
mkdir /sys/fs/cgroup/${cgroup_name}
|
||||
echo $$ > /sys/fs/cgroup/${cgroup_name}/cgroup.procs
|
||||
|
||||
# This script is run from inside entrypoint.sh
|
||||
# so we also need to move the parent pid into this new group, which is weird
|
||||
# TODO: we should unwrap this so $$ is all we need to move
|
||||
echo 1 > /sys/fs/cgroup/${cgroup_name}/cgroup.procs
|
||||
|
||||
if [ "$(wc -l < /sys/fs/cgroup/cgroup.procs)" != "0" ]; then
|
||||
echo >&2 "WARNING: processes exist in the root cgroup; this may cause errors during cgroup initialization"
|
||||
fi
|
||||
|
||||
root_cgroup_type="$(cat /sys/fs/cgroup/cgroup.type)"
|
||||
if [ "$root_cgroup_type" != "domain" ]; then
|
||||
echo >&2 "WARNING: expected cgroup type of \"domain\", but got \"$root_cgroup_type\" instead"
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
function join_cgroup() {
|
||||
local cgroup_name="nested-dockerd" # NOTE: has to be the same as the function above (local var to prevent overriding in the caller)
|
||||
echo $$ > /sys/fs/cgroup/${cgroup_name}/cgroup.procs
|
||||
}
|
@ -1,6 +1,5 @@
|
||||
#!/bin/bash
|
||||
source /opt/bash-utils/logger.sh
|
||||
source /opt/bash-utils/cgroup-helper.sh
|
||||
|
||||
function wait_for_process () {
|
||||
local max_time_wait=30
|
||||
@ -18,9 +17,6 @@ function wait_for_process () {
|
||||
return 0
|
||||
}
|
||||
|
||||
# Some payloads (e.g. kind) need systemd to run, which in turn requires forking the cgroup hierarchy
|
||||
configure_cgroup
|
||||
|
||||
INFO "Starting supervisor"
|
||||
/usr/bin/supervisord -n >> /dev/null 2>&1 &
|
||||
|
||||
@ -31,4 +27,4 @@ if [ $? -ne 0 ]; then
|
||||
exit 1
|
||||
else
|
||||
INFO "dockerd is running"
|
||||
fi
|
||||
fi
|
Loading…
Reference in New Issue
Block a user