我正试图使用pip
(根据亚马逊的建议)在一个自定义Docker映像中安装awscli
,该映像来自库/节点:6.11。2。这是一份报告:
FROM library/node:6.11.2
RUN apt-get update && \
apt-get install -y \
python \
python-pip \
python-setuptools \
groff \
less \
&& pip --no-cache-dir install --upgrade awscli \
&& apt-get clean
CMD ["/bin/bash"]
然而,在上述情况下,我遇到了:
no such option: --no-cache-dir
大概是因为我有不正确的Python和/或Pip版本?
我正在以与maven:3.5中的类似的方式安装Python、Pip和awscli。0-jdk-8
在那里,它工作正常。我不确定这两张图片之间的相关区别是什么。
从我的Dockerfile中删除上述选项对我也没有多大好处,因为这样我就会遇到一大堆不同的错误,摘录如下:
Installing collected packages: awscli, PyYAML, docutils, rsa, colorama, botocore, s3transfer, pyasn1, jmespath, python-dateutil, futures, six
Running setup.py install for PyYAML
checking if libyaml is compilable
### ABBREVIATED ###
ext/_yaml.c:4:20: fatal error: Python.h: No such file or directory
#include "Python.h"
^
compilation terminated.
error: command 'x86_64-linux-gnu-gcc' failed with exit status 1
### ABBREVIATED ###
底线:你如何正确安装awscli
在库/节点:6. x
基于映像?
您的映像基于Debian Jessie,因此您正在安装Python 2.7。尝试使用Python 3. x:
apt-get install -y python3-pip
pip3 install awscli
正如您正确指出的那样,pip
安装在您正在使用的docker映像上的是一个较旧的映像,不支持--无缓存dir
。您可以尝试更新它,也可以修复第二个问题,即缺少python源标题。这可以通过安装pythondev
包来解决。只需将其添加到Dockerfile中安装的软件包列表中:
FROM library/node:6.11.2
RUN apt-get update && \
apt-get install -y \
python \
python-dev \
python-pip \
python-setuptools \
groff \
less \
&& pip install --upgrade awscli \
&& apt-get clean
CMD ["/bin/bash"]
然后,您可以运行aws
,它应该在您的路径上。
按照另一个答案添加python dev
是可行的,但会引发数量惊人的编译器警告(错误?),因此,我采用了@SergeyKoralev答案的一个变体,在它起作用之前需要进行一些调整。
以下是我为实现这一目标所需的更改:
python3
和pip3
。awscli
安装在单独的RUN
命令中。这里有一个完整的再现,似乎确实有效:
FROM library/node:6.11.2
RUN apt-get update && \
apt-get install -y \
python3 \
python3-pip \
python3-setuptools \
groff \
less \
&& pip3 install --upgrade pip \
&& apt-get clean
RUN pip3 --no-cache-dir install --upgrade awscli
CMD ["/bin/bash"]
如果在安装之前添加一个shell命令,在升级pip后刷新内容,那么您可能还可以将aws
安装保持在相同的RUN
层中。但不知道怎么办。
问题内容: 我有这个 Dockerfile : 和这个 Jenkinsfile : 这将导致以下错误: 我尝试使用,但没有成功。 我在docker jenkinsfile声明上使用args 时有些运气,但这会创建root拥有的目录和文件,这些文件和目录不能由用户Jenkins在下次运行时删除。 我不想在Dockerfile上进行操作,因为实际上Install步骤正在运行一个make文件,而不是我想
问题内容: 我想创建一个docker镜像并正确安装,因此我选择具有这些属性的基础镜像。因此,的第一行如下: 然后下一个命令是 在创建docker映像时创建了以下错误: 如何能够在此docker映像中安装? 问题答案: 如提示: 获取(13:权限被拒绝) 我相信这是由于您的基本形象: https://github.com/SeleniumHQ/docker- selenium/blob/master
我是Docker的新手。我创建了以下Dockerfile并运行它: 来自Centos:最新的ENV container docker运行YUM-Y更新&&yum clean all 我收到以下错误/输出: root@ggnlabvm-juper6:~/docker_test#docker build-t test。 将构建上下文发送到Docker守护进程2.048 kB 步骤1/3:来自Cento
这是我第一次尝试创建Docker形象,我希望有人能帮助我。我的Dockerfile大致如下所示: 基本上,我只是为了扩展jar文件而安装Java。运行makefile时,出现以下错误: /bin/sh:1:/usr/lib/jvm/java-7-openjdk-amd64:权限被拒绝 我一直试图效仿这个例子:https://registry.hub.docker.com/u/barnybug/op
问题内容: 我无法在Docker中安装pip。 这是我的Dockerfile: 建造时,我得到: 阅读此答案后,我尝试添加该行-这次的错误是: 我究竟做错了什么?我已经看到一些主张我应该尝试不同版本的Ubuntu的说法,但是切换到13.1并没有任何改变。 问题答案: 虽然T. Arboreus的答案可能会解决'archive.ubuntu.com‘来解决问题,但我认为您遇到的最后一个错误是它不知道
据我所知,docker映像在被拉取时被安装到。有没有办法更改此位置,例如更改到像这样的已安装卷?