当前位置: 首页 > 知识库问答 >
问题:

如何在库/节点Docker映像中使用pip安装awscli

贝阳泽
2023-03-14

我正试图使用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基于映像?

共有3个答案

巢安澜
2023-03-14

您的映像基于Debian Jessie,因此您正在安装Python 2.7。尝试使用Python 3. x:

apt-get install -y python3-pip
pip3 install awscli
丁毅庵
2023-03-14

正如您正确指出的那样,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,它应该在您的路径上。

徐晔
2023-03-14

按照另一个答案添加python dev是可行的,但会引发数量惊人的编译器警告(错误?),因此,我采用了@SergeyKoralev答案的一个变体,在它起作用之前需要进行一些调整。

以下是我为实现这一目标所需的更改:

  1. 到处都是python3pip3
  2. 添加一个语句来升级pip本身。
  3. 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映像在被拉取时被安装到。有没有办法更改此位置,例如更改到像这样的已安装卷?