无法在Docker中运行tensorflow

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

我创建了一个 Dockerfile,如下所示:

FROM tensorflow/tensorflow:latest

WORKDIR /code

COPY ./requirements.txt /code/requirements.txt

RUN pip install --no-cache-dir --upgrade -r /code/requirements.txt

COPY ./app /code/app

CMD ["fastapi", "run", "app/main.py", "--port", "80"]

和具有以下值的requirements.txt文件:

fastapi>=0.110.0,<0.113.0
pydantic>=2.7.0,<3.0.0
tensorflow

我使用以下命令来构建 docker 并运行它

docker build --platform=linux/arm64/v8 -t myimage .
docker run -d --name mycontainer -p 80:80 myimage

主函数有以下代码:

from typing import Union

from fastapi import FastAPI, Request

# from tensorflow import keras
# import tensorflow
# model = keras.models.load_model("app/my_model.keras")

app = FastAPI()


@app.get("/")
def read_root():
    return {"Hello": "World"}


@app.get("/items/{item_id}")
def read_item(item_id: int, q: Union[str, None] = None):
    return {"item_id": item_id, "q": q}

每当我尝试在上面的主文件中导入tensorflow时,Docker运行时都会出现错误。任何相同的解决方案

我尝试将From路径更改为python 3.9,但在安装tensorflow时导致编译错误。

python docker tensorflow dockerfile fastapi
2个回答
0
投票

如果可以的话,尝试使用更匹配的图像。

FROM tensorflow/tensorflow:2.9.0

检查 ARM 和依赖项的最佳匹配。


0
投票

如果您在 Mac M1 或更高版本上运行 docker,您将无法使用预构建的 docker 映像。至少从今天开始。

我有 Mac Por M1。我检查了预构建的 docker 镜像的几个版本:

Tensorflow 2.9版本:

docker run -it --rm tensorflow/tensorflow:2.9.0 
# next line inside the container
python -c "import tensorflow"

这会报错:

The TensorFlow library was compiled to use AVX instructions, but these aren't available on your machine.
Aborted

Tensorflow 2.16(最新)版本:

docker run -it --rm tensorflow/tensorflow:latest bash  
# next line inside the container
python -c "import tensorflow"

这只是输出

Illegal instruction

因此我猜唯一的选择是编译支持 mac ARM64 的自定义 dockertensofrlow 镜像。

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