有一个映像confluentinc/ksqldb-cli
,我想使用库(https://github.com/wolfcw/libfaketime)进行扩充。
由于这个映像confluentinc/ksqldb-cli
非常裸露,它不包含任何像apt
或apt
这样的包管理器。
因此,我的想法是使用Docker多阶段构建。
第一种方法使用alpine
映像构建库libfaketime
。
第二阶段将该库复制到confluentinc/ksqldb-cli
映像。
在构建库之前,我想测试一下是否至少可以对git
执行相同的操作:
FROM alpine:3.17.2
RUN apk update && apk add git
FROM confluentinc/ksqldb-cli:0.28.2
COPY --from=0 /usr/bin/git /bin/
ENTRYPOINT ["tail", "-f", "/dev/null"]
一旦我进入容器并输入:git
,则得到:
/usr/bin/git: No such file or directory
但是,我可以在/bin
中看到git
,即使我看到cd /bin
和./git
,我仍然得到:
bash: ./git: No such file or directory
如何将二进制文件从一个阶段复制到另一个阶段?
谢谢。
1条答案
按热度按时间aiqt4smr1#
ksqldb映像基于Red Hat Enterprise Linux(Fedora),它使用
dnf
包管理器,你可以用它来安装git,如下所示:映像被设置为在“appuser”用户下运行,因此在安装包时必须切换到root用户并返回。
使用软件包管理器安装比复制二进制文件要好得多。你不能只复制一个二进制文件,因为它可能依赖于你也需要复制的库的数量。这些库可能再次依赖于操作系统中包含的其他库。混合来自Alpine的库和来自Red Hat的库很可能不会起作用。