尝试在 M2 MacOS 上运行 Azure Cosmos DB 模拟器时,Docker 容器立即停止运行,没有任何日志。我尝试使用以下命令运行它:
% docker run --platform linux/amd64
--发布 8081:8081
--发布 10250-10255:10250-10255
--互动
--蒂
mcr.microsoft.com/cosmosdb/linux/azure-cosmos-emulator:最新
之后,我得到这些日志:
这是评估版本。评估期还剩 [24] 天。 2024-04-04 13:18:22 开始 然后容器随机停止。
我遵循了微软的官方文档https://learn.microsoft.com/en-us/azure/cosmos-db/how-to-develop-emulator?tabs=docker-linux%2Ccsharp&pivots=api-nosql在尝试运行这个时。有谁知道为什么会发生这种情况?或者至少,有没有办法让 cosmos db 模拟在 M2 芯片上运行?
% docker run --platform linux/amd64
--发布 8081:8081
--发布 10250-10255:10250-10255
--互动
--蒂
mcr.microsoft.com/cosmosdb/linux/azure-cosmos-emulator:最新
尝试了这个命令,但没有帮助。
根据提供的上下文,M1 和 M2 芯片目前似乎不支持 Azure Cosmos DB 模拟器。 Microsoft 建议的临时解决方法是安装 Windows 虚拟机并在该平台上运行模拟器。至于 Docker 容器立即停止且没有任何日志的问题,可能是由于缺乏资源,例如核心或内存。
由于体系结构兼容性问题,在 M2 MacOS 上运行 Azure Cosmos DB 模拟器可能会有点棘手。为 AMD64 平台构建的 Docker 容器可能无法在 M2 等基于 ARM 的芯片上顺利运行。
--platform linux/amd64
标志是尝试使用仿真在 ARM 架构上运行 AMD64 容器的一种方法。
您观察到的这种行为可能是由于 M2 芯片的兼容性问题或模拟器本身的配置问题造成的。 Cosmos DB Emulator Docker 映像尚不支持 ARM64,这是 M2 芯片的架构。
但是,请尝试以分离模式运行容器,因为它允许在后台运行,并且可能为容器的运行提供更高的稳定性。由于您在非交互模式下运行模拟器,请尝试删除
--interactive
和 --tty
标志。
docker run --platform linux/amd64 \
--publish 8081:8081 \
--publish 10250-10255:10250-10255 \
--detach \
mcr.microsoft.com/cosmosdb/linux/azure-cosmos-emulator:latest
容器停止后,再使用
docker logs
docker logs <container_id_or_name>
确保 Docker 分配了足够的资源(CPU、内存)。
参考资料: