我正在运行docker。我喜欢使用rhel7镜像。rhel7镜像没有我需要的特定包。比如说app XYZ。我想将XYZ包含到RHEL7镜像中。我该如何操作?我是否启动rhel7容器,附加到容器,并下载XYZ应用程序到运行的容器?我是否下载到我的本地机器,并以某种方式使容器指向本地机器?我将欣赏任何例子。
XYZ
fhity93d1#
在向你解释这是如何工作之前,这是一个很好的阅读:What are Docker image "layers"?首先,您需要进入正在运行的容器并安装所需的软件包:
yum install XYZ -y
安装完包后,您可以使用shell中的exit退出容器现在你可以从我们刚刚退出的docker容器中创建一个新的镜像:
exit
docker commit container_name/id rhelWithMyCustomPackage(XYZ)
现在这个新的图像rhelWithMyCustomPackage包含您的包,它可以在使用此图像生成新容器后运行。要传输这个镜像,比如说一个不同的Docker主机,你可以使用像dockerhub这样的平台,它可以为你维护Docker镜像。如果你读了我上面分享的文章,它谈到这些docker镜像是只读实体。这意味着如果你想从一开始就重新创建这个镜像,你的Dockerfile将看起来像这样:
FROM rhel7 RUN yum install XYZ
然后,你再次构建这个图像:
docker build -t rhelWithMyCustomPackage .
并启动一个新容器。希望我已经用一种清晰易懂的方式解释了一切。谢谢。
1条答案
按热度按时间fhity93d1#
在向你解释这是如何工作之前,这是一个很好的阅读:What are Docker image "layers"?
首先,您需要进入正在运行的容器并安装所需的软件包:
安装完包后,您可以使用shell中的
exit
退出容器现在你可以从我们刚刚退出的docker容器中创建一个新的镜像:
现在这个新的图像rhelWithMyCustomPackage包含您的包,它可以在使用此图像生成新容器后运行。
要传输这个镜像,比如说一个不同的Docker主机,你可以使用像dockerhub这样的平台,它可以为你维护Docker镜像。
如果你读了我上面分享的文章,它谈到这些docker镜像是只读实体。这意味着如果你想从一开始就重新创建这个镜像,你的Dockerfile将看起来像这样:
然后,你再次构建这个图像:
并启动一个新容器。
希望我已经用一种清晰易懂的方式解释了一切。谢谢。