#python #docker #tensorflow #debian-buster
#python #docker #тензорный поток #debian-buster
Вопрос:
Я пытаюсь создать свой собственный образ docker, содержащий tensorflow
. Мой Dockerfile
выглядит так:
FROM python:3.7.9-buster as python-base
RUN apt-get --allow-releaseinfo-change update amp;amp; apt-get install -y unixodbc-dev
FROM python-base as venv-image
RUN apt-get install -y build-essential g tk python-tk python3-tk tk-dev
ENV VIRTUAL_ENV=/opt/venv
RUN python3 -m venv $VIRTUAL_ENV
ENV PATH="$VIRTUAL_ENV/bin:$PATH"
RUN python3 -m pip install --upgrade pip
RUN pip install notebook pandas numpy seaborn
ENV TF_WHEEL_URL=https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow_cpu-2.7.0-cp37-cp37m-manylinux2010_x86_64.whl
RUN pip install --upgrade $TF_WHEEL_URL
FROM python-base AS app-image
COPY --from=venv-image /opt/venv /opt/venv
ENV PATH="/opt/venv/bin:$PATH"
WORKDIR /usr/src/app
RUN chown -R nobody /usr/src/app/
RUN usermod --home /tmp nobody
USER nobody
ENV PYTHONPATH=/usr/src/app
Когда я пытаюсь создать изображение, я получаю следующую ошибку:
$ jbezdek@mac> docker build -t my-image:latest .
[ ] Building 65.1s (10/14)
=> [internal] load build definition from Dockerfile 0.1s
=> => transferring dockerfile: 1.15kB 0.1s
=> [internal] load .dockerignore 0.1s
=> => transferring context: 2B 0.1s
=> [internal] load metadata for docker.io/library/python:3.7.9-buster 1.3s
=> [python-base 1/2] FROM docker.io/library/python:3.7.9-buster@sha256:83ab4e9e275cb279e5639097aa0780ef82c4fd78622ae36ab35810ab7b57f491 28.5s
=> => resolve docker.io/library/python:3.7.9-buster@sha256:83ab4e9e275cb279e5639097aa0780ef82c4fd78622ae36ab35810ab7b57f491 0.0s
=> => sha256:9e9cd01e30157128ef9b104c9584cde69df1374be10ece82568c94e5b0d6af19 2.22kB / 2.22kB 0.0s
=> => sha256:06af62193c25241eb123af8cf115c7a6298e834976fe148ac79ec11a7ca06ee5 7.69MB / 7.69MB 2.2s
=> => sha256:8b846e1b73901174c506ae5e6219ac2f356ef71eaa5896dfbc238dc67ca4bf73 9.98MB / 9.98MB 1.4s
=> => sha256:83ab4e9e275cb279e5639097aa0780ef82c4fd78622ae36ab35810ab7b57f491 1.86kB / 1.86kB 0.0s
=> => sha256:42bec75914596fe7d61bfda973083109baddab48b6a591c713874c9c66e0978d 9.02kB / 9.02kB 0.0s
=> => sha256:c78c297fb0d010ee085f95ae439636ecb167b050c1acb4273bd576998cf94a83 49.18MB / 49.18MB 12.7s
=> => sha256:fb44d26a138a8d064a4ab8f9b472c64e7136c2482ec5af19bab8811b6d2c15b7 52.17MB / 52.17MB 13.5s
=> => sha256:195488cfc78f0e257698fa052494b5340338b5acfdec4df1b249942044222274 183.89MB / 183.89MB 22.9s
=> => extracting sha256:c78c297fb0d010ee085f95ae439636ecb167b050c1acb4273bd576998cf94a83 1.5s
=> => sha256:e91064730500746be97b6f35ae9c33bf1d9b7b0b4e9fd5f766c84ff08d25502b 6.26MB / 6.26MB 14.4s
=> => sha256:0a78fc05d06f8aba012b30a2db688a3e2e703e317d2ec7e40be76204c670b0a1 15.95MB / 15.95MB 17.0s
=> => sha256:521c43ca96ec8c9641af8aed110859966134fffa21e63748fec100576e252e14 232B / 232B 14.8s
=> => extracting sha256:06af62193c25241eb123af8cf115c7a6298e834976fe148ac79ec11a7ca06ee5 0.2s
=> => extracting sha256:8b846e1b73901174c506ae5e6219ac2f356ef71eaa5896dfbc238dc67ca4bf73 0.2s
=> => sha256:7dafbffb30bdcb6256e239d9b43c57b9522dd79c39d078ce5f0e1b98dc210c2a 2.16MB / 2.16MB 15.7s
=> => extracting sha256:fb44d26a138a8d064a4ab8f9b472c64e7136c2482ec5af19bab8811b6d2c15b7 1.7s
=> => extracting sha256:195488cfc78f0e257698fa052494b5340338b5acfdec4df1b249942044222274 4.3s
=> => extracting sha256:e91064730500746be97b6f35ae9c33bf1d9b7b0b4e9fd5f766c84ff08d25502b 0.2s
=> => extracting sha256:0a78fc05d06f8aba012b30a2db688a3e2e703e317d2ec7e40be76204c670b0a1 0.4s
=> => extracting sha256:521c43ca96ec8c9641af8aed110859966134fffa21e63748fec100576e252e14 0.0s
=> => extracting sha256:7dafbffb30bdcb6256e239d9b43c57b9522dd79c39d078ce5f0e1b98dc210c2a 0.1s
=> [python-base 2/2] RUN apt-get --allow-releaseinfo-change update amp;amp; apt-get install -y unixodbc-dev 3.2s
=> [venv-image 1/5] RUN apt-get install -y build-essential g tk python-tk python3-tk tk-dev 1.2s
=> [venv-image 2/5] RUN python3 -m venv /opt/venv 1.6s
=> [venv-image 3/5] RUN python3 -m pip install --upgrade pip 1.5s
=> [venv-image 4/5] RUN pip install notebook pandas numpy seaborn 27.1s
=> ERROR [venv-image 5/5] RUN pip install --upgrade https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow_cpu-2.7.0-cp37-cp37m-manylinux2010_x86_64.whl 0.4s
------
> [venv-image 5/5] RUN pip install --upgrade https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow_cpu-2.7.0-cp37-cp37m-manylinux2010_x86_64.whl:
#10 0.399 ERROR: tensorflow_cpu-2.7.0-cp37-cp37m-manylinux2010_x86_64.whl is not a supported wheel on this platform.
------
executor failed running [/bin/sh -c pip install --upgrade $TF_WHEEL_URL]: exit code: 1
Честно говоря, я действительно не понимаю. Это говорит об этом tensorflow_cpu-2.7.0-cp37-cp37m-manylinux2010_x86_64.whl is not a supported wheel on this platform
, но я использую платформу Linux (buster — Debian) с Python 3.7 на ней, и я устанавливаю пакет с официального веб-сайта tensorflow.
Итак, в чем проблема? Чего мне не хватает? Любая помощь приветствуется.
Редактировать:
Эта проблема присутствует только на моем MacBook Pro (M1, 2020) с macOS BigSur. Когда я запускаю код на MacBook Pro (Intel Core i5, начало 2015 года) с macOS Catalina, все работает так, как ожидалось.
Комментарии:
1. Я помню, что у меня были проблемы со многими пакетами linux из-за устаревших setuptools. В качестве проверки работоспособности вы также можете обновить setuptools?
RUN python3 -m pip install --upgrade pip setuptools
2. @Marat, спасибо за ваш совет. Тем не менее, я пробовал это, и ошибка все та же :/
3. Это не ответ, но я просто попытался создать точно такой же файл Dockerfile, как указано выше, и это сработало.
4. повторный (теперь отсутствующий) вопрос о том, на какой системе я строю: я строил это на
Ubuntu 20.04.3 LTS
виртуальной машине
Ответ №1:
Следующий файл Dockerfile работает для меня. Изменения по сравнению с исходным отмечены комментарием.
FROM python:3.7.9-buster as python-base
RUN apt-get --allow-releaseinfo-change update amp;amp; apt-get install -y unixodbc-dev
FROM python-base as venv-image
RUN apt-get install -y build-essential g tk python-tk python3-tk tk-dev python3-dev python3-pip python3-venv
#-------------------------------------------------------------------------^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
ENV VIRTUAL_ENV=/opt/venv
RUN python3 -m venv $VIRTUAL_ENV
ENV PATH="$VIRTUAL_ENV/bin:$PATH"
RUN python3 -m pip install --upgrade pip
RUN pip install notebook pandas numpy seaborn
ENV TF_WHEEL_URL=https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow_cpu-2.7.0-cp37-cp37m-manylinux2010_x86_64.whl
RUN pip install --upgrade $TF_WHEEL_URL
FROM python-base AS app-image
COPY --from=venv-image /opt/venv /opt/venv
ENV PATH="/opt/venv/bin:$PATH"
WORKDIR /usr/src/app
RUN chown -R nobody /usr/src/app/
RUN usermod --home /tmp nobody
USER nobody
ENV PYTHONPATH=/usr/src/app
Я следовал руководству по установке tensorflow.