如何将软件包安装到现有的Docker镜像?

klr1opcd  于 2023-04-11  发布在  Docker
关注(0)|答案(1)|浏览(155)

我正在运行docker。我喜欢使用rhel7镜像。rhel7镜像没有我需要的特定包。比如说app XYZ。我想将XYZ包含到RHEL7镜像中。我该如何操作?
我是否启动rhel7容器,附加到容器,并下载XYZ应用程序到运行的容器?我是否下载到我的本地机器,并以某种方式使容器指向本地机器?我将欣赏任何例子。

fhity93d

fhity93d1#

在向你解释这是如何工作之前,这是一个很好的阅读:What are Docker image "layers"?
首先,您需要进入正在运行的容器并安装所需的软件包:

yum install XYZ -y

安装完包后,您可以使用shell中的exit退出容器
现在你可以从我们刚刚退出的docker容器中创建一个新的镜像:

docker commit container_name/id rhelWithMyCustomPackage(XYZ)

现在这个新的图像rhelWithMyCustomPackage包含您的包,它可以在使用此图像生成新容器后运行。
要传输这个镜像,比如说一个不同的Docker主机,你可以使用像dockerhub这样的平台,它可以为你维护Docker镜像。
如果你读了我上面分享的文章,它谈到这些docker镜像是只读实体。这意味着如果你想从一开始就重新创建这个镜像,你的Dockerfile将看起来像这样:

FROM rhel7
RUN yum install XYZ

然后,你再次构建这个图像:

docker build -t rhelWithMyCustomPackage .

并启动一个新容器。
希望我已经用一种清晰易懂的方式解释了一切。谢谢。

相关问题