我想要创建一个容器,里面有python和几个在centos上的包。我尝试在原始centos容器中运行几个命令。一切都很好,我安装了我想要的一切。然后,我用通过RUN执行的相同命令创建了RUN,我得到了/bin/sh: pip: command not found,有什么问题吗?我是说现在的情况。为什么所有东西都可以在命令行中执行,而不能用RUN执行呢?我试过这两种变体:
RUN command
RUN command
RUN pip install ...和
RUN command\
&& command\
&& pip install ...我执行的命令:
from centos
run yum install -y centos-release-scl\
&& yum install -y rh-python36\
&& scl enable rh-python36 bash\
&& pip install djangoUPD:到pip的完整路径有所帮助。怎么了?
发布于 2020-07-16 22:53:58
我知道这是一段时间前提出的,但我只是在建立一个码头形象时遇到了这个问题,而且无法很快找到一个好的答案,所以我会把它留给后人。
在我的Dockerfile中添加scl enable命令对我不起作用,所以我发现可以通过运行不使用scl命令启用scl包:
source /opt/rh/<package-name>/enable。
如果我没记错的话,你就做不到:
RUN source /opt/rh/<package-name>/enable
RUN pip install <package>因为每个RUN命令都创建了一个不同的层,并且shell会话没有被保留,所以我只是像下面这样一起运行这些命令:
RUN source /opt/rh/rh-python36/enable && pip install <package>
我认为scl命令在Dockerfiles中存在问题,因为scl enable <package> bash将在当前shell中打开一个新的shell,而不是将包添加到当前shell的路径中。
编辑:
找到,您可以通过运行以下命令将包添加到当前shell中:
source scl_source enable <package>https://stackoverflow.com/questions/55058587
复制相似问题