我正在尝试为不同的架构(即amd64和arm64)创建一个映像。
我创建的Dockerfile的内容相同。
当我在amd64上的主机上从此Dockerfile构建时,生成的映像将在所有其他amd64机器上运行。但是,当我尝试在arm64上运行此映像时,会看到exec错误。
罪魁祸首似乎源于我使用Ubuntu作为基础映像(FROM: ubuntu:latest
),它以某种方式“知道”我要构建的体系结构。结果,根据构建的架构,我最终得到了不同的图像。
这本身不是问题。毕竟,我可以在amd64上构建一次,然后在arm64上构建一次。
我想做的是能够为每种体系结构推送一个映像并将它们自动拉入其他计算机,而无需配置两组Dockerfile。换句话说,我真的很想知道Ubuntu团队如何配置映像,以便:latest提取最新版本和正确的体系结构。
任何建议将不胜感激!
编辑:作为参考,我正在使用Docker 19.03.5。 Dockerfile看起来像这样:
FROM ubuntu:latest
COPY /requirements.txt /tmp/
RUN apt-get update && \
apt-get install -y python3-pip python3-dev build-essential libssl-dev libffi-dev libxml2-dev libxslt1-dev && \
apt-get install -y libtiff5-dev libjpeg8-dev zlib1g-dev
RUN cd /usr/local/bin && \
ln -s /usr/bin/python3 python && \
pip3 install --upgrade pip
RUN pip install lxml && \
pip install -r /tmp/requirements.txt && \
pip install gunicorn