Docker 如何在alpine linux中脱机安装.apk文件?
我基于alpine Linex的docker图像无法从网络中获取任何信息。因此,“apk add xxx”命令是有效的。现在,我的想法是下载.apk文件并将其保存到docker容器中。但是如何安装.apk文件呢?假设您正在尝试在Alpine中安装glibc 将软件包下载到当前目录中Docker 如何在alpine linux中脱机安装.apk文件?,docker,offline,alpine,alpine-package-keeper,Docker,Offline,Alpine,Alpine Package Keeper,我基于alpine Linex的docker图像无法从网络中获取任何信息。因此,“apk add xxx”命令是有效的。现在,我的想法是下载.apk文件并将其保存到docker容器中。但是如何安装.apk文件呢?假设您正在尝试在Alpine中安装glibc 将软件包下载到当前目录中 wget "https://circle-artifacts.com/gh/andyshinn/alpine-pkg-glibc/6/artifacts/0/home/ubuntu/alpine-pkg-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"
然后,将apk与--allow untrusted标志一起使用
apk add --allow-untrusted glibc-2.21-r2.apk glibc-bin-2.21-r2.apk
并完成安装(仅在本例中需要)
如果可以从连接到公共Internet的系统中运行Docker命令,则可以通过将图像分成两部分,以Docker原生方式执行此操作 第一个图像仅包含
apk
命令,但没有实际的应用程序代码
来自阿尔卑斯山的
运行apk添加。。。
构建连接到网络的映像docker Build-t me/alpine base
现在需要将该图像传输到隔离环境中。如果可以将某些系统连接到两个网络,并在环境中运行Docker注册表,则可以使用Docker push
将映像发送到隔离的环境。否则,这是少数需要docker保存的情况之一:创建图像的tar文件,将该文件移动到隔离环境中(通过bastion主机,使用USB密钥,…),然后docker将其加载到目标系统上
现在,您在目标系统上有了基础映像,因此您可以在其上安装应用程序,而无需调用apk
FROM me/alpine-base
WORKDIR /app
COPY . .
CMD ...
这种方法适用于任何种类的工件。如果您有应用程序的package.json
/requirements.txt
/Gemfile
/go.mod
之类的东西,列出了应用程序的所有库依赖项,您可以像这样提前运行下载和安装步骤,但是,如果这些依赖项发生变化,您需要记住重复该操作并手动移动更新的基本映像。这对我很有用!非常感谢。如果我想把apk软件包安装在一个特定的目录中怎么办?
FROM me/alpine-base
WORKDIR /app
COPY . .
CMD ...