我和同事遇到了一个棘手的Docker难题。
当我们运行以下命令时,得到的结果不同。
docker run -it python:3.8.6 /bin/bash
pip install fbprophet
对我来说,它可以完美安装,但他却出现错误并无法安装。我认为docker的整个意义在于防止这种问题,所以我真的很困惑。
以下是更多详细信息,但我的主要问题是:
- 我们如何得到不同的结果?
更多细节:
我们都在新的MacBook Pro上运行Docker,配置相似,都是Catalina。他的Docker引擎版本20.x.x比我的19.X.X稍微新一些。此外:
- 他尝试了所有他能想到的命令来清理Docker中的东西。 - 我们验证了镜像ID的哈希值是相同的。 - 我们的资源设置也是相同的。 - 他尝试重新安装Docker并更改到其他版本的Python(3.7)。 - 在过去的三天内,我们同时尝试了多次。
结果始终如一:他遇到错误,而我没有。
他得到的错误如下。
Error:
Installing collected packages: six, pytz, python-dateutil, pymeeus, numpy, pyparsing, pillow, pandas, korean-lunar-calendar, kiwisolver, ephem, Cython, cycler, convertdate, tqdm, setuptools-git, pystan, matplotlib, LunarCalendar, holidays, cmdstanpy, fbprophet
Running setup.py install for fbprophet ... error
ERROR: Command errored out with exit status 1:
command: /usr/local/bin/python -u -c ‘import sys, setuptools, tokenize; sys.argv[0] = ‘“’”‘/tmp/pip-install-l516b8ts/fbprophet_80d5f400081541a2bf6ee26d2785e363/setup.py’“‘”’; __file__=‘“’”‘/tmp/pip-install-l516b8ts/fbprophet_80d5f400081541a2bf6ee26d2785e363/setup.py’“‘”’;f=getattr(tokenize, ‘“’”‘open’“‘”’, open)(__file__);code=f.read().replace(‘“’”‘\r\n’“‘”’, ‘“’”‘\n’“‘”’);f.close();exec(compile(code, __file__, ‘“’”‘exec’“‘”’))' install --record /tmp/pip-record-7n8tvfkb/install-record.txt --single-version-externally-managed --compile --install-headers /usr/local/include/python3.8/fbprophet
cwd: /tmp/pip-install-l516b8ts/fbprophet_80d5f400081541a2bf6ee26d2785e363/
Complete output (10 lines):
running install
running build
running build_py
creating build
creating build/lib
creating build/lib/fbprophet
creating build/lib/fbprophet/stan_model
Importing plotly failed. Interactive plots will not work.
INFO:pystan:COMPILING THE C++ CODE FOR MODEL anon_model_dfdaf2b8ece8a02eb11f050ec701c0ec NOW.
error: command ‘gcc’ failed with exit status 1
----------------------------------------
ERROR: Command errored out with exit status 1: /usr/local/bin/python -u -c ‘import sys, setuptools, tokenize; sys.argv[0] = ‘“’”‘/tmp/pip-install-l516b8ts/fbprophet_80d5f400081541a2bf6ee26d2785e363/setup.py’“‘”’; __file__=‘“’”‘/tmp/pip-install-l516b8ts/fbprophet_80d5f400081541a2bf6ee26d2785e363/setup.py’“‘”’;f=getattr(tokenize, ‘“’”‘open’“‘”’, open)(__file__);code=f.read().replace(‘“’”‘\r\n’“‘”’, ‘“’”‘\n’“‘”’);f.close();exec(compile(code, __file__, ‘“’”‘exec’“‘”’))' install --record /tmp/pip-record-7n8tvfkb/install-record.txt --single-version-externally-managed --compile --install-headers /usr/local/include/python3.8/fbprophet Check the logs for full command output.
请注意,运行我提供的两个命令总是会产生错误,但它们不是关键的。在安装fbprophet之前升级setuptools并安装依赖项可以解决这些轻微的错误。上面显示的错误是不同的,与gcc有关,并且只会发生在某些人身上。
可选的附加问题:
- 我们如何修复它?
- 如何避免像这样的不可重现的结果?
- 升级docker引擎版本可能会破坏容器吗?
注:本文中的"fbprophet"是一个Python库
docker rm -f $(docker ps -aq) && docker system prune --all --volumes
。然后在您的 Mac 上再次尝试。我在我的电脑上也看到了与您同事相同的情况(Big Sur 操作系统,最新版本的 Docker 守护程序)。 - β.εηοιτ.βεdocker images
结果吗? - Danny Varod