首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >码头集装箱无法找到Zip包裹?

码头集装箱无法找到Zip包裹?
EN

Stack Overflow用户
提问于 2017-01-14 14:38:54
回答 2查看 43.6K关注 0票数 19

所有Ubuntu存储库都添加到我的Dockerfile中,即mainuniverse等,并显示在我的坞映像中。但是,下面的Dockerfile中的apt-get install无法找到任何ZIP/UnZIP包。最后记录错误。

如何安装这些普通的压缩包?至少p7zip-fullrar

Dockerfile

代码语言:javascript
复制
FROM ubuntu:15.10
CMD ["bash"]
RUN add-apt-repository main && \
    add-apt-repository universe && \
    add-apt-repository restricted && \
    add-apt-repository multiverse
RUN  apt-get update -y && \
     apt-get upgrade -y && \
     apt-get dist-upgrade -y && \
     apt-get -y autoremove && \
     apt-get clean
RUN apt-get install p7zip \
    p7zip-full \
    p7zip-rar \
    unace \
    unrar \
    zip \
    unzip \
    xz-utils \
    sharutils \
    rar \
    uudeview \
    mpack \
    arj \
    cabextract \
    file-roller \
    && rm -rf /var/lib/apt/lists/*

引发错误的

代码语言:javascript
复制
E: Unable to locate package p7zip-full
E: Unable to locate package unace
E: Unable to locate package unrar
E: Unable to locate package zip
E: Unable to locate package unzip
E: Unable to locate package sharutils
E: Unable to locate package rar
E: Unable to locate package uudeview
E: Unable to locate package mpack
E: Unable to locate package arj
E: Unable to locate package cabextract
E: Unable to locate package file-roller
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-01-14 17:04:25

尝试使用这个Dockerfile (您的Dockerfile中没有我在之前的评论中告诉您的内容):

代码语言:javascript
复制
FROM ubuntu:15.10
RUN  apt-get update -y && \
     apt-get upgrade -y && \
     apt-get dist-upgrade -y && \
     apt-get -y autoremove && \
     apt-get clean
RUN apt-get install -y p7zip \
    p7zip-full \
    unace \
    zip \
    unzip \
    xz-utils \
    sharutils \
    uudeview \
    mpack \
    arj \
    cabextract \
    file-roller \
    && rm -rf /var/lib/apt/lists/*

CMD ["bash"]

它工作,并安装zip和p7zip。

代码语言:javascript
复制
$ docker build -t mytest .
$ docker run -d -ti --name mytest mytest /bin/bash
$ docker exec -ti mytest /bin/bash

 root@f01fc3456a2a:/# zip 
 root@f01fc3456a2a:/# p7zip
票数 26
EN

Stack Overflow用户

发布于 2021-02-23 16:38:40

根据Docker最佳做法

@gile的回答可以通过以下方式得到改进:

  • 使用apt-获取更新并在单层中安装
  • 避免apt-get升级

best-practices/#leverage-build-cache

Docker将初始指令和修改后的指令视为相同的指令,并重用前面步骤中的缓存。因此,apt-get更新不会执行,因为构建使用缓存的版本。因为apt-get更新没有运行,所以您的构建可能会得到curl和nginx包的过时版本。 使用RUN apt-get update && apt-get安装-y可以确保您的Dockerfile安装最新的软件包版本,而不需要进一步的编码或手动干预。这种技术被称为“缓存破坏”。您还可以通过指定包版本来实现高速缓存破坏。这被称为版本定位,避免运行apt-get升级和dist-升级,因为许多来自父映像的“基本”包不能在非特权容器中升级。如果父映像中包含的包已过期,请与其维护人员联系.如果您知道有一个特定的包foo需要更新,请使用apt安装-y foo自动更新。

这应该与@gile对这些最佳实践的回答相同

代码语言:javascript
复制
FROM ubuntu:15.10
RUN  apt-get -y update \
     && apt-get -y autoremove \
     && apt-get clean \
     && apt-get install -y p7zip \
     p7zip-full \
     unace \
     zip \
     unzip \
     xz-utils \
     sharutils \
     uudeview \
     mpack \
     arj \
     cabextract \
     file-roller \
     && rm -rf /var/lib/apt/lists/*

CMD ["bash"]

*编辑

已重新安排了Docker最佳做法文档。

建议仍然是一样的。虽然上面的链接所锚定的文档部分现在只是暗示了构建缓存和apt-get之间的关系.

他们增加了专门讨论这一主题的新的文档部分。

best-practices/#apt-get

简言之:

始终将运行apt-get更新与相同RUN语句中的apt-get安装结合在一起。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41651145

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档