docker 独体/对接系统

5vf7fwbs  于 2023-02-11  发布在  Docker
关注(0)|答案(2)|浏览(206)

我想在docker-compose中使用一个带有systemctl的图像,我在互联网https://github.com/solita/docker-systemd中看到这个图像,它工作正常,但当我尝试将它与docker-compose一起使用时,它不工作(它工作,但systemctl不工作,它给予这个错误“系统尚未启动,systemd作为init系统(PID 1)。无法操作。”)

test1:
container_name: 'test1'
build: './test'
volumes:
  - /:/host
  - /sys/fs/cgroup:/sys/fs/cgroup:ro
security_opt:
  - "seccomp=unconfined"  
tmpfs:
  - /run
  - /run/lock
privileged: true

构建文件为test.sh

#!/bin/sh
set -eu
if nsenter --mount=/host/proc/1/ns/mnt -- mount | grep /sys/fs/cgroup/systemd >/dev/null 2>&1; then
  echo "The systemd cgroup hierarchy is already mounted at /sys/fs/cgroup/systemd."
else
  if [ -d /host/sys/fs/cgroup/systemd ]; then
    echo "The mount point for the systemd cgroup hierarchy already exists at /sys/fs/cgroup/systemd."
  else
    echo "Creating the mount point for the systemd cgroup hierarchy at /sys/fs/cgroup/systemd."
    mkdir -p /host/sys/fs/cgroup/systemd
  fi
  echo "Mounting the systemd cgroup hierarchy."
  nsenter --mount=/host/proc/1/ns/mnt -- mount -t cgroup cgroup -o none,name=systemd /sys/fs/cgroup/systemd
fi
echo "Your Docker host is now configured for running systemd containers!"
mrfwxfqh

mrfwxfqh1#

如果你想在Docker中运行“systemctl”来启动/停止服务,那么你可以在没有systemd的情况下做到这一点。docker-systemctl-replacement就是为此而设计的。

yrefmtwq

yrefmtwq2#

如果你需要使用systemd,你可以遵循repo,它是用于Rockylinux的,但是你可以使用这个repo来为Ubuntu启用systemd
当你使用'docker run'时,你需要设置如下((启用rw)并使用docker exec连接到它。)

`--volume=/sys/fs/cgroup:/sys/fs/cgroup:rw`

您可能会遇到其他与docker(对于timedatectl、loginctl等)或service命令中的systemd兼容的问题

$> dnf install initscripts systemd
$> systemctl start systemd-logind

您可以在将其迁移到停靠合成模式后

相关问题