Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Docker 如何在alpine linux中脱机安装.apk文件?_Docker_Offline_Alpine_Alpine Package Keeper - Fatal编程技术网

Docker 如何在alpine linux中脱机安装.apk文件?

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/

我基于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/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 ...