forked from actions/act_runner
2.9 KiB
2.9 KiB
在非特权模式下使用Docker
以下是如何在在非特权模式下使用 Docker 中设置 loong_runner 的简单示例。实例是基于 Debian 编写的,其他 Linux 发行版不会有太大区别。
注意:此过程需要一个真实的登录 shell -- 使用 sudo su 或其他访问账户的方法将无法完成下面的一些步骤。
使用 root 用户:
- 创建一个用户来运行
docker和loong_runner。在这个例子中,我们使用了一个名为rootless的非特权账户。
useradd -m rootless
passwd rootless
apt-get install -y uidmap # 对 docker 非Root用户使用是必需的。
-
安装
docker-ce -
(推荐)禁用系统范围的 Docker 守护进程
systemctl disable --now docker.service docker.socket
作为 rootless 用户:
- 按照 启用非特权模式 的说明进行操作
- 将以下行添加到
/home/rootless/.bashrc:
for f in ./.bashrc.d/*.bash; do echo "处理 $f 文件..."; . "$f"; done
- 创建
.bashrc.d目录mkdir ~/.bashrc.d - 将以下行添加到
/home/rootless/.bashrc.d/rootless-docker.bash:
export XDG_RUNTIME_DIR=/home/rootless/.docker/run
export PATH=/home/rootless/bin:$PATH
export DOCKER_HOST=unix:///run/user/$(id -u)/docker.sock
- 重启。确保 Docker 进程正在工作。
- 为保存
loong_runner数据创建一个目录
mkdir /home/rootless/loong_runner
- 从数据目录注册 runner
cd /home/rootless/loong_runner
loong_runner register
- 在数据目录中生成
loong_runner配置文件。编辑文件以适应系统。
loong_runner generate-config >/home/rootless/loong_runner/config
- 创建一个新的用户级
systemd单元文件/home/rootless/.config/systemd/user/loong_runner.service,内容如下:
Description=龙架构代码仓库运行时
Documentation=https://git.whlug.cn/LoongArchActions/loong_runner
After=docker.service
[Service]
Environment=PATH=/home/rootless/bin:/sbin:/usr/sbin:/home/rootless/bin:/home/rootless/bin:/home/rootless/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
Environment=DOCKER_HOST=unix:///run/user/1001/docker.sock
ExecStart=/usr/bin/loong_runner daemon -c /home/rootless/loong_runner/config
ExecReload=/bin/kill -s HUP $MAINPID
WorkingDirectory=/home/rootless/loong_runner
TimeoutSec=0
RestartSec=2
Restart=always
StartLimitBurst=3
StartLimitInterval=60s
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
TasksMax=infinity
Delegate=yes
Type=notify
NotifyAccess=all
KillMode=mixed
[Install]
WantedBy=default.target
- 重启
系统重启后,检查 loong_runner 是否正常工作,并且 运行时 是否已连接到 Gitea。
systemctl --user status loong_runner
journalctl --user -xeu loong_runner
```