我想要创建一个容器,里面有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的完整路径有所帮助。怎么了?
发布于 2019-03-08 08:07:42
您需要首先安装pip
yum install python-pip或者如果你需要python3 (来自埃佩尔)
yum install python36-pip不确定时,问yum
yum whatprovides /usr/bin/pip
python2-pip-18.1-1.fc29.noarch : A tool for installing and managing Python 2 packages
Repo : @System
Matched from:
Filename : /usr/bin/pip
python2-pip-18.1-1.fc29.noarch : A tool for installing and managing Python 2 packages
Repo : updates
Matched from:
Filename : /usr/bin/pip
python2-pip-18.0-4.fc29.noarch : A tool for installing and managing Python 2 packages
Repo : fedora
Matched from:
Filename : /usr/bin/pip这个输出来自Fedora29,但是在Centos/RHEL中应该得到类似的结果
更新
从评论
但是,当我从docker执行相同的命令时,运行-ti centos,一切都很好。有什么问题吗?
也许你的PATH坏了?你能试一试完整的路径吗?
发布于 2019-03-08 08:58:15
正如@rkosegi已经提到的,这肯定是一个PATH问题。以下几点似乎有效:
FROM centos
ENV PATH /opt/rh/rh-python36/root/usr/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
RUN yum install -y centos-release-scl
RUN yum install -y rh-python36
RUN scl enable rh-python36 bash
RUN pip install django我“找到”了上面的PATH,方法是启动一个centos容器并逐个输入命令(因为您已经提到它正在工作)。
在BMitch的幻灯片中,可以找到一个很好的解释:sudo-bmitch.github.io/presentations/dc2018/faq-stackoverflow.html#24
问:为什么不工作? 为什么我没有找到
./build.sh? 运行cd /app/srcRUN ./build.sh
&&合并:
运行cd /app/src &/build.sh发布于 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
复制相似问题