在 Apple Silicon (osx-arm64) 上安装软件包时,来自 micromamba 基础映像的 Docker 挂在“事务启动”步骤

问题描述 投票:0回答:1

我正在尝试在使用 M2 处理器的 MacBook Pro 上构建 docker 映像。我已经在我之前使用 Intel 处理器的 MacBook Pro 上多次使用此 Dockerfile 创建了图像。

我目前正在运行 iTerm2 w/ Rosetta 来模拟英特尔处理器。

$ arch
i386

这是我的构建命令:

docker build --build-arg ENV_NAME=${ENV_NAME} -t ${TAG} -f Dockerfile ../../

这是我的 Dockerfile:

# v2024.3.10
# =================================
FROM --platform=linux/amd64 mambaorg/micromamba:latest

ARG ENV_NAME

SHELL ["/usr/local/bin/_dockerfile_shell.sh"]

WORKDIR /tmp/

# Data
USER root
RUN mkdir -p /volumes/
RUN mkdir -p /volumes/input
RUN mkdir -p /volumes/output
RUN mkdir -p /volumes/database

# Retrieve VEBA repository
RUN mkdir -p veba/
USER $MAMBA_USER
COPY --chown=$MAMBA_USER:$MAMBA_USER ./install/ veba/install/
COPY --chown=$MAMBA_USER:$MAMBA_USER ./bin/ veba/bin/
COPY --chown=$MAMBA_USER:$MAMBA_USER ./VERSION veba/VERSION
COPY --chown=$MAMBA_USER:$MAMBA_USER ./LICENSE veba/LICENSE

# Fix: 
# critical libmamba Download error (28) Timeout was reached
# [https://conda.anaconda.org/bioconda/linux-64/blast-2.13.0-hf3cf87c_0.tar.bz2]
# Operation too slow. Less than 30 bytes/sec transferred the last 60 seconds

ARG MAMBA_NO_LOW_SPEED_LIMIT=1

# Build .condarc
RUN echo "channel_priority: flexible" >> ~/.condarc
RUN echo "channels:" >> ~/.condarc
RUN echo "  - conda-forge" >> ~/.condarc
RUN echo "  - bioconda" >> ~/.condarc
RUN echo "  - jolespin" >> ~/.condarc

# Install dependencies
RUN micromamba install -y -n base -f veba/install/environments/${ENV_NAME}.yml && \
    micromamba clean -a -y -f

# Add environment scripts to environment bin
RUN cp -rf veba/bin/* /opt/conda/bin/ && \
    ln -sf /opt/conda/bin/scripts/*.py /opt/conda/bin/ && \
    ln -sf /opt/conda/bin/scripts/*.r /opt/conda/bin/

ENTRYPOINT ["/usr/local/bin/_entrypoint.sh"]

我也在没有 Rosetta 的终端中尝试过这个:

$ arch
arm64

最奇怪的部分是我昨晚能够从这个 conda 环境 yaml 构建图像,但现在它不起作用。我正在构建的 Docker 映像的完整列表使用以下 yaml 文件:https://github.com/jolespin/veba/tree/main/install/environments

有人知道如何在 Apple Silicon 上构建这些 Docker 镜像吗?

docker macos anaconda apple-silicon micromamba
1个回答
0
投票

我想通了。如果遇到此问题,您需要做 3 件事:

  1. 使用

    FROM --platform=linux/amd64

  2. 使用 Rosetta 打开终端或 iTerm:

  1. 转到
    Docker > Settings > General > Use Rosetta for x86_64/amd64 emulation on Apple Silicon
    (打开它):

© www.soinside.com 2019 - 2024. All rights reserved.