Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/57.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卷绑定:基础映像与派生映像_Docker - Fatal编程技术网

Docker卷绑定:基础映像与派生映像

Docker卷绑定:基础映像与派生映像,docker,Docker,它看起来像是运行时使用的任何卷绑定(-v),提交的派生映像中不会保留基本映像,并且每次运行派生映像时都必须传递卷绑定选项 示例: 在容器(名为:john_doe)中进行更改并提交到新映像(本地/测试) 然后,这不会列出主机目录中的文件/opt/hostappsdir docker run --rm local/test ls /apps 但这个就行了 docker run --rm -v /opt/hostappsdir:/apps local/test ls /apps 有什么方法可以

它看起来像是
运行时使用的任何卷绑定(
-v
),提交的派生映像中不会保留基本映像,并且每次运行派生映像时都必须传递卷绑定选项

示例:


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

然后,这不会列出主机目录中的文件
/opt/hostappsdir

docker run --rm local/test ls /apps
但这个就行了

docker run --rm -v /opt/hostappsdir:/apps local/test ls /apps


有什么方法可以避免每次都传递卷绑定选项吗?

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

如果您喜欢添加特定配置、添加一些扩展、添加一些包,那么您应该始终从基本映像派生,而不只是“提交”任意更改,而不是形式化更改

使用创建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
来自
将您的配置/etc/复制到某个地方
复制您的资产/var/www
运行sed…\//更改一些配置
&&apt-get-update&&apt-get-install-curl//一些软件包

提示:我自己不喜欢“提交将容器更改为图像”的想法——这是有风险的,不会每次都产生相同的结果,也不会将实际更改的内容正式化。你会有困难的时候。由于基础图像的更新而更新您的图像,因为您不知道之前您做了什么-即使您已将其记录下来,也需要付出大量的努力才能一次又一次地完成

如果否决我的问题的人能解释问题所在,那会很有帮助。更正了
commit
命令中的语法错误。等待回答……我也不知道为什么这个问题被否决了——这是一个合法的争议,因此是一个需要澄清的有效问题。你回答的第一行是我想要的答案。我的意思是增加额外的apt包。代码更改将只在绑定到容器的主机目录上进行。我可能住在岩石或其他地方,但我刚刚了解了docker compose。。。哇!这正是我所期待的,docker compose使我编写的所有bash脚本完全多余!
docker run --rm -v /opt/hostappsdir:/apps local/test ls /apps
from <baseimage>
COPY yourconfig /etc/somewhere
COPY yourasset /var/www

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