我正在尝试在具有 ARM64 架构的 MacOS 上运行一个
mesos-slave
容器。由于 dockerhub上没有适用于
mesos-slave
的本机 ARM64 Docker 映像,因此我必须使用基础 centos7 映像构建我的映像。
FROM centos:centos7
RUN yum -y update && \
rpm -Uvh http://repos.mesosphere.io/el/7/noarch/RPMS/mesosphere-el-repo-7-3.noarch.rpm && \
yum -y install mesos-1.10.0 && \
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo && \
yum -y install docker-ce docker-ce-cli containerd.io && \
yum -y clean all
ENTRYPOINT ["mesos-slave"]
EXPOSE 5051
尝试运行容器时出现以下错误。
EXIT with status 1: Failed to create a containerizer: Could not create DockerContainerizer: Failed to create docker: Failed to find a mounted cgroups hierarchy for the 'cpu' subsystem; you probably need to mount cgroups manually
正在使用的命令
docker run \
--name local-mesos-slave \
-p 5051:5051 \
-e MESOS_MASTER=zk://local-zookeeper:2181/mesos \
-e MESOS_CONTAINERIZERS=docker \
-e MESOS_WORK_DIR=/tmp/mesos \
-e MESOS_SYSTEMD_ENABLE_SUPPORT=false \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /sys/fs/cgroup:/sys/fs/cgroup:ro \
mesos-slave:latest
我有类似的方法来构建
mesos-master
和 mesos-zookeeper
并且它们工作得很好。另外,我知道 MacOS 上没有 cgroup。我尝试了多种方法,例如使用 Podman、Colima 以及通过 Synthetic.conf 文件创建符号链接,但它们也不起作用。
所以我的问题是如何解决使用 ARM64 arch 的 MacOS 上的 Docker 容器的 cgroup 错误?
master 和zookeeper 工作的原因是他们根本不使用cgroup。
您需要切换到 cgroups v1,因为 v2 尚未发布 https://stackoverflow.com/a/74348261/1387612