使用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
如果我使用export
和import
进程运行正常,则会生成15GB图像并可以导入,但是我丢失了所有ENV和CMD元数据。
任何人都可以提供建议:
1)如何解决save
命令,实际导出容器
或
2)如何将ENV / CMD元数据(.. dockerfile?)恢复或附加到导出/导入的图像?
非常感谢
答案 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)解决了这个问题,图像保存成功。