Docker:保存 - 不产生输出

Chr*_*son 8 metadata export save docker dockerfile

使用 Docker 还算陌生..

我提取了 Oracle 11g Full 的映像。创建数据库并将应用程序安装到容器中。

正确配置后,我提交了容器,生成了 15GB 的映像。

测试了该映像的新容器,一切正常,Oracle 服务等自动启动,然后我只需附加并运行应用程序...一切都很好。

我需要将其上传到服务器上,所以我的预期方法是:

1) 保存容器
2) 将 tarball 上传到服务器
3) 加载容器

但是,当我运行以下命令时:

sudo docker save --output ~/etlf_961_meta.tar etlf/informatica9.6.1:latest

它只是挂起并且不产生任何输出。

该进程处于活动状态,但没有出现文件并且没有活动:

T20 chris # ps aux | grep "docker save" root 26179 0.0 0.0 91928 5000 pts/14 S+ 16:36 0:00 sudo docker save --output /home/chris/etlf_961_meta.tar etlf/informatica9.6.1:latest root 26201 0.0 0.0 127404 14664 pts/14 Sl+ 16:36 0:00 docker save --output /home/chris/etlf_961_meta.tar etlf/informatica9.6.1:latest root 26277 0.0 0.0 14232 980 pts/0 S+ 16:36 0:00 grep --color=auto docker save

如果我使用export并且import该过程运行良好,则会生成一个 15GB 的图像并可以导入,但是我会丢失所有 ENV 和 CMD 元数据。

任何人都可以建议:

1) 如何解析save命令,以实际导出容器

2) 如何将 ENV/CMD 元数据(..dockerfile?)恢复或附加到导出/导入的映像?

非常感激

dne*_*hin 3

由于您是 docker 新手,我想建议一些可能会让您的生活更轻松的事情:

我提交了容器,生成了 15GB 的映像。

commit通常不建议用于标准工作流程。它并不是真正可重现的。我建议创建一个Dockerfile使用FROM <oracle image>并在Dockerfile.

如果您有大型数据集,您可能希望在卷或主机绑定安装(也称为卷安装)中管理这些数据集。

我需要将其上传到服务器上,

推荐的方法是使用docker push推送到注册表。

它只是挂起并且不产生任何输出。

可能只是速度太慢了?您还可以检查 docker 守护进程日志文件以查看是否有任何警告。

如何将 ENV/CMD 元数据(..dockerfile?)恢复或附加到导出/导入的映像?

我认为这是不可能的。