gpt4 book ai didi

Docker 卷绑定(bind) : Base image vs derivative image

转载 作者:行者123 更新时间:2023-12-02 18:55:48 25 4
gpt4 key购买 nike

它看起来像任何 卷装订 ( -v ) 在您使用 run 时使用基础镜像不会保留在您提交的派生镜像中,并且每次您 run 时都必须传递卷绑定(bind)选项派生的图像。

示例:

docker run -it -v /opt/hostappsdir:/apps ubuntu

在容器中进行更改(名为:john_doe)并提交到新图像(本地/测试)
docker commit john_doe local/test

然后,这不会列出主机目录中的文件 /opt/hostappsdir
docker run --rm local/test ls /apps

但这一个做到了
docker run --rm -v /opt/hostappsdir:/apps local/test ls /apps

有什么办法可以避免每次都通过卷绑定(bind)选项?

最佳答案

根据定义,卷不是容器层的一部分,因此不会成为您从容器创建镜像时提交的层的一部分。

如果你喜欢例如添加您的特定配置,添加一些扩展,添加一些包,您应该始终从基础镜像派生,永远不要只是“提交”任意的,而不是正式的更改。

创建一个 Dockerfile

from <baseimage>
COPY yourconfig /etc/somewhere
COPY yourasset /var/www

RUN sed ... \ // change some configuration
&& apt-get update && apt-get install curl // some packages

提示:我自己不喜欢“将容器更改提交到图像”的想法 - 这是有风险的,每次都不会产生相同的结果,并且不会正式确定您实际更改的内容。你会遇到困难的时候。由于基础镜像的更新而更新您的镜像,因为您不知道在那之前您做了什么 - 即使您已经将其写下来,一次又一次地做这件事需要付出很多努力。

关于Docker 卷绑定(bind) : Base image vs derivative image,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39314041/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com