Docker:保存 - 不产生输出

时间:2016-09-23 15:42:10

标签: docker save export metadata dockerfile

使用Docker相当新。

我为Oracle 11g Full提取了一张图片。创建了一个DB并将一个应用程序安装到容器中。

配置正确后,我提交了容器,产生了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

如果我使用exportimport进程运行正常,则会生成15GB图像并可以导入,但是我丢失了所有ENV和CMD元数据。

任何人都可以提供建议:

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

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

非常感谢

2 个答案:

答案 0 :(得分:1)

由于你是码头工的新手,我想建议一些可能让你的生活更轻松的事情:

  

我提交的容器产生了15GB的图像。

通常不建议将

commit用于标准工作流程。它不是真正可重复的。我建议您使用Dockerfile创建FROM <oracle image>并在Dockerfile中完成工作。

如果您有大型数据集,则可能需要管理卷中的数据集或主机绑定装载(也称为卷装入)。

  

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

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

  

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

它可能只是非常慢?您还可以检查docker守护程序日志文件以查看是否有任何警告。

  

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

我认为这不可能。

答案 1 :(得分:1)

https://github.com/docker/for-mac/issues/2308

版本17.12.0-ce-mac46(21698)解决了这个问题,图像保存成功。