我如何在 alpine linux 中离线安装 .apk 文件?

问题描述 投票:0回答:1

我的基于alpine Linex的docker镜像不能从网络上获取任何东西。所以 "apk add xxx "这个命令是有效的。现在我的想法是下载.apk文件并将其复制到docker容器中。但我如何安装.apk文件?

docker apk offline alpine
1个回答
0
投票

比方说,你正试图安装在阿尔卑斯山的glibc。

将软件包下载到您当前的目录中

wget "https://circle-artifacts.com/gh/andyshinn/alpine-pkg-glibc/6/artifacts/0/home/ubuntu/alpine-pkg-glibc/packages/x86_64/glibc-2.21-r2.apk"
wget "https://circle-artifacts.com/gh/andyshinn/alpine-pkg-glibc/6/artifacts/0/home/ubuntu/alpine-pkg-glibc/packages/x86_64/glibc-bin-2.21-r2.apk"

然后,使用带有--allow-untrusted标志的apk。

apk add --allow-untrusted glibc-2.21-r2.apk glibc-bin-2.21-r2.apk

并完成安装(仅在本例中需要)。

/usr/glibc/usr/bin/ldconfig /lib /usr/glibc/usr/lib

0
投票

如果可以从连接到公共互联网的系统中运行Docker命令,你可以通过将你的镜像分成两个部分,以Docker原生的方式来实现。

第一个镜像只包含 apk 命令,但没有实际的应用代码。

FROM alpine
RUN apk add ...

构建该图像 docker build -t me/alpine-base,连接到网络。

现在你需要将该镜像转移到隔离环境中。 如果可以将一些系统连接到两个网络,并在环境内部运行Docker注册表,那么你可以使用 docker push 来发送图像到隔离环境。 否则,这是少数几个需要使用 docker save创建一个镜像的 tar 文件,将该文件移动到隔离环境中(通过堡垒主机、USB 钥匙......),并且 docker load 它在目标系统上。

现在你在目标系统上已经有了那个基础镜像,所以你可以在它上面安装应用程序,而无需调用 apk.

FROM me/alpine-base
WORKDIR /app
COPY . .
CMD ...

这种方法可以适用于任何类型的工件。 如果你有像应用程序的 package.jsonrequirements.txtGemfilego.mod 列出所有应用程序的库依赖关系,你可以像这样提前运行下载和安装步骤,但你需要记住重复它,并在这些依赖关系改变时手动移动更新的基础图像。

© www.soinside.com 2019 - 2024. All rights reserved.