作为 docker 构建的一部分,我在脚本中有一行如下内容:
RUN unzip myzipfile.zip
脚本中的该行失败并出现以下错误:
/bin/sh: unzip: command not found
这是在 Red Hat Enterprise Linux 7 上,并且基本 Docker 映像也是 RHEL7 基本映像。
如果 Docker 构建环境中没有 unzip 实用程序,那么我该如何解压缩某些内容?unzip 存在于执行构建的服务器上,但我认为这没有帮助。是否有其他可以解压缩文件的实用程序,或者是否需要在基础映像中安装 unzip?
如果有任何方法可以做到这一点而不需要安装任何东西,那就更好了,因为我认为我没有权限这样做,即使我有权限,Docker 构建所在的服务器也没有连接到互联网。
答案1
您必须unzip
使用进行安装yum install unzip
。如果您不想unzip
出现在最终图像中,您有以下几种选择:
- 如果文件来自构建机器,您可以先在那里将其解压。
- 如果文件来自构建机器并且您可以更改它,请将其重新打包
tar.gz
并使用ADD myfile.tar.gz /some/folder
,Docker 将在那里自动将其解压。 使用多阶段构建安装
unzip
,准备文件,然后在第二阶段复制文件。FROM registry.access.redhat.com/rhel7/rhel AS builder RUN yum install unzip ADD myfile.zip /dist RUN cd /dist && unzip myfile.zip && rm myfile.zip FROM registry.access.redhat.com/rhel7/rhel COPY --from=builder /dist/ /target