How does gitlab-runner official shared runner configure runners.docker in config.toml

Hello everyone.
I am now trying to implement CICD using gitlab-runner with docker as the actuator, specifically the Salsa-ci-based pipeline project implementation. I use registry.salsa.debian.org/salsa-ci-team/pipeline/autopkgtest as gitlab - runner docker mirror.
In the gitlab-runner execution script, I start a container with lxc-start, The path of the LXC container is https://salsa.debian.org/salsa-ci-team/autopkgtest-lxc/-/jobs/artifacts/master/raw/artifacts/lxc-amd64.tar?jo b=unstable.
My part.gitlab-ci.yml code is:

.test-autopkgtest: &test-autopkgtest
stage: test
image: $SALSA_CI_IMAGES_AUTOPKGTEST
rules:
- if: $SALSA_CI_ENABLE_AUTOPKGTEST =~ /^(1|yes|true)$/
- if: $SALSA_CI_DISABLE_ALL_TESTS =~ /^(1|yes|true)$/
when: never
- if: $SALSA_CI_DISABLE_AUTOPKGTEST ! ~ /^(1|yes|true)$/
script:
- LOCAL_ARCH="$(dpkg --print-architecture)"
- LXC_JOB_NAME="${RELEASE}"
- test "${LOCAL_ARCH}" = "amd64" || LXC_JOB_NAME="${RELEASE}_${LOCAL_ARCH}"
- wget --progress=dot:giga ${SALSA_CI_AUTOPKGTEST_LXC}/-/jobs/artifacts/master/raw/artifacts/lxc-${LOCAL_ARCH}.tar? job=${LXC_JOB_NAME} -O lxc.tar
- mkdir ${SCI_LXC_PATH} && tar xf lxc.tar -C ${SCI_LXC_PATH}
- sed -i "/lxc.rootfs.path/ s@dir:.*/lxc/@dir:${SCI_LXC_PATH}/@"  ${SCI_LXC_PATH}/autopkgtest-${RELEASE}-${LOCAL_ARCH}/config
- |
cat >/etc/lxc/lxc.conf <<EOT
lxc.lxcpath=${SCI_LXC_PATH}
EOT
- update-alternatives --set iptables /usr/sbin/iptables-legacy
- add_extra_repository.sh -v -e "${SALSA_CI_EXTRA_REPOSITORY}" -k "${SALSA_CI_EXTRA_REPOSITORY_KEY}"
-t "${SCI_LXC_PATH}/autopkgtest-${RELEASE}-${LOCAL_ARCH}/rootfs/etc"
- umount -R /sys/fs/cgroup && mount -a
- /etc/init.d/lxc-net start
- /etc/init.d/lxc start
- chown -R debci. ${WORKING_DIR}
- export debci_autopkgtest_args="${SALSA_CI_AUTOPKGTEST_ARGS}"
- pwd
- lxc-checkconfig
# /dev/stdin, and then fix #256
- lxc-start autopkgtest-${RELEASE}-${LOCAL_ARCH}/rootfs/etc
- rm -rf ${WORKING_DIR}/debci/binaries
variables:
GIT_STRATEGY: fetch
SCI_LXC_PATH: ${CI_PROJECT_DIR}/lxc
DEBCI_LOG_PATH: ${WORKING_DIR}/debci
artifacts:
when: always
paths:
- ${CI_PROJECT_DIR}
needs:
- job: build
artifacts: true

It works fine when I use gitlab’s official shared runner without specifying Gitlab-runner. But when I specified a runner of my own, it failed.
When using gitlab’s official shared runner, the output of LxC-Checkconfig looks normal, and LXc-start starts the lxc container as normal:

But with my own runner, executing lxc-checkconfig generates an error:

lxc-checkconfig: unable to retrieve kernel configuration

Try recompiling with IKCONFIG_PROC, installing the kernel headers,
or specifying the kernel configuration path with:
CONFIG=<path> lxc-checkconfig

An error is also reported when executing lxc-start:

lxc-start: autopkgtest-unstable-amd64: .. /src/lxc/cgroups/cgfsng.c: __cgfsng_delegate_controllers:  3341 Device or resource busy - Could not enable "+cpuset +cpu +io +memory +hugetlb +pids +rdma +misc" controllers in the  unified cgroup 7
lxc-start: autopkgtest-unstable-amd64: .. /src/lxc/cgroups/cgfsng.c: __cgfsng_delegate_controllers:  3341 Device or resource busy - Could not enable "+cpuset +cpu +io +memory +hugetlb +pids +rdma +misc" controllers in the  unified cgroup 7
lxc-start: autopkgtest-unstable-amd64: .. /src/lxc/sync.c: sync_wait: 34 An error occurred in another process (expected sequence number 4)
lxc-start: autopkgtest-unstable-amd64: .. /src/lxc/start.c: __lxc_start: 2107 Failed to spawn container "autopkgtest-unstable-amd64"
lxc-start: autopkgtest-unstable-amd64: .. /src/lxc/tools/lxc_start.c: main: 306 The container failed to start
lxc-start: autopkgtest-unstable-amd64: .. /src/lxc/tools/lxc_start.c: main:  311 Additional information can be obtained by setting the --logfile and --logpriority options

I think this is because my Gitlab-runner configuration file, config.toml, is incorrect, so I want to know how gitlab’s official shared runner is configured.
(I know that gitlab’s official shared runner’s actuator is docker+machine, but I think the two are universal about runners.docker.