我正在尝试在 systemd-nspawn 容器上运行 concourse CI,但我不能。我一直在寻找这个问题,但没有发现任何有用的东西。我将尝试解释我的工作:
- 首先,我制作了一个 .raw 文件,其中包含我需要的所有内容(使用 mkosi)。
我使用这个 .raw 文件(sudo systemd-nspawn -bi concourse.raw --capability=all)启动了一个 systemd 容器。concourse web 和 worker 服务启动时没有问题。我登录到 127.0.0.1:8080 并添加我的第一个管道(HelloWorld)。然后,当我运行 HelloWorld 管道时,我收到此错误:
runc create:退出状态1:container_linux.go:264:启动容器进程导致“process_linux.go:261:为进程应用cgroup配置导致\”mkdir /sys/fs/cgroup/cpuset/8638cb95-bbbc-4719-4509- 5a1789fb100a: 只读文件系统\""
这是此错误的 journalctl 日志:concourse_worker 日志
我添加 -bind 选项并重试(sudo systemd-nspawn -bi concourse.raw --capability=all --bind=/sys/fs/cgroup)。我认为添加 --bind 选项我修复了第一个错误,因为现在 concourse 的容器能够提取 docker 图像,但我得到了其他错误:
runc create:退出状态1:container_linux.go:264:启动容器进程导致“process_linux.go:339:容器初始化导致\”rootfs_linux.go:69:创建设备节点导致\\“没有这样的文件或目录\\” \""
这是此错误的 journalctl 日志:concourse_worker log 2
我的系统:
$ 猫 /etc/问题
Ubuntu 16.04.2 LTS \n \l
$ unname -a
Linux nikoPC 4.4.0-47-generic #68-Ubuntu SMP 2016 年 10 月 26 日星期三 19:39:52 UTC x86_64 x86_64 x86_64 GNU/Linux
$ systemctl --版本
systemd 229 +PAM +AUDIT +SELINUX +IMA +APPARMOR +SMACK +SYSVINIT +UTMP +LIBCRYPTSETUP +GCRYPT +GNUTLS +ACL +XZ -LZ4 +SECCOMP +BLKID +ELFUTILS +KMOD -IDN
大厅容器:
猫 /etc/问题
Ubuntu Artful Aardvark(开发分支)\n \l
systemctl --版本
systemd 234 +PAM +AUDIT +SELINUX +IMA +APPARMOR +SMACK +SYSVINIT +UTMP +LIBCRYPTSETUP +GCRYPT +GNUTLS +ACL +XZ +LZ4 +SECCOMP +BLKID +ELFUTILS +KMOD -IDN2 +IDN 默认层次结构=混合
我不知道如何解决这个错误。可以在 systemd 容器上运行 concourse CI 吗?
谢谢。