Docker提交-不保留新设置?
我正在尝试创建(没有dockerfile)一个自定义映像(Docker提交-不保留新设置?,docker,Docker,我正在尝试创建(没有dockerfile)一个自定义映像(apache),并将其发布给其他程序员 我已经有了这个图像: > docker images REPOSITORY TAG IMAGE ID CREATED SIZE eboraas/apache latest ddf3c3b74564 3 months ago 365M
apache
),并将其发布给其他程序员
我已经有了这个图像:
> docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
eboraas/apache latest ddf3c3b74564 3 months ago 365MB
现在,让我们使用以下设置创建一个容器:
docker run -p 8520:80 -v //c/Users/sff/apache:/var/www/html -d eboraas/apache
好的,现在一切正常,我确实看到了测试页面:
顺便说一句,docker ps-a现在是:
C:\r>docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
3a1083fded97 eboraas/apache "/usr/sbin/apache2ct…" 2 minutes ago Up 2 minutes 443/tcp, 0.0.0.0:8520->80/tcp eloquent_heisenberg
嗯
我被告知,我可以使用docker commit
,以便将容器作为自定义的新映像保存下来
我就这样做了:
C:\r>docker commit 3a1083fded97 131313222/shared-apache
sha256:14135d48fcf827527d655225908a29b15223317810be9cf22651ae375a87a774
它确实保存了新的图像:
C:\r>docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
131313222/shared-apache latest 14135d48fcf8 49 seconds ago 365MB
eboraas/apache latest ddf3c3b74564 3 months ago 365MB
但是现在我希望运行docker run 131313222/shared apache
-将保留(!!)文件夹映射和端口映射:
但如果我运行这个:
docker run 131313222/shared-apache
我得到:
C:\r>docker运行131313222/shared apache AH00558:apache2:无法
使用
172.17.0.2. 全局设置“ServerName”指令以抑制此消息
显然,测试页面不起作用
问题:
为什么commit命令(到新映像中)不保存端口和卷映射
换句话说:(没有docker文件)-如何创建包含其当前设置的图像?我希望开发人员立即开始工作,就像每个人都在写:
docker run -p 8520:80 -v //c/Users/sff/apache:/var/www/html -d eboraas/apache
提交人不应该已经这么做了吗
我希望每个人都能看到我所看到的,而不做任何事情。Docker映像只包含其文件系统和少量元数据,如运行的默认命令和环境变量设置。它不包含您可能指定的任何其他设置,如端口映射、卷装载、对主机设备的访问、对主机级别设置的特权访问或后台模式。您无法创建默认为问题中显示的设置的图像
如果您的受众是其他程序员,我建议您编写将映像构建为Dockerfile的序列,并将该Dockerfile和运行映像的shell脚本或Docker Compose YAML文件添加到公共源代码管理存储库中
事实上,我建议您永远不要使用
docker commit
。Dockerfile系统相当简单(如果您可以指定这些设置,它们将在Dockerfile中各有一行;ENV foo bar
替换docker run-e foo=bar
),Dockerfile可以很容易地签入源代码管理。当您需要重建映像时—因为Apache的新版本已发布,并进行了关键的安全更新,因为您捆绑的某些软件已更改—Dockerfile会为您提供一个关于构建映像的详细记录,以及一个实际执行映像的命令。因此,当我提交时,它正在提交哪些更改?容器中自启动以来已更改的任何文件都不在卷中。因此,如果我运行interactive terminal并触摸一个新文件,它是否会包含在提交中?是的……但这确实不是最佳做法。