2015-10-29 64 views
5

是否有任何简单的方法将Dockerfile转换为Bash脚本以便在真实操作系统上安装所有软件?原因是码头集装箱我不能改变,如果他们没有解决问题,我想事后改变一些东西。将Dockerfile转换为Bash脚本

+0

您可以运行的Dockerfile运行自己的命令。但是你不能将它基于的图像“转换”为脚本。如果你不喜欢Docker镜像的工作方式,请修改Dockerfile并重试一次? –

回答

1

总之 - 没有。

通过使用诸如dockerfile-parse之类的工具解析Dockerfile,您可以运行单个的RUN命令,但这不会复制Dockerfile的输出。

您将不得不运行相同版本的相同操作系统。

ADDCOPY命令会影响文件系统,该文件系统位于其自己的命名空间中。在容器外部运行这些可能会破坏主机系统。您的主机也会在容器映像不会显示的位置放置文件。

VOLUME挂载也会影响filesytem。

FROM图片(可能会从其他图片下降)可能安装了其他应用程序。

如果存在较大的安装或下载步骤,写入Dockerfiles可能是一个缓慢的过程。为了缓解这种情况,请尝试添加新软件包作为新的RUN命令(以充分利用缓存)并逐步添加功能,只在功能完成时优化/压缩这些层。

您可能还想使用类似ServerSpec的东西来获取容器图像的TDD方法,并防止在开发过程中出现回归。

最佳实践文档here,gotchasoriginal article

0

可以在里面dockerfile安装应用程序像这样

FROM <base> 

RUN apt-get update -y 
RUN apt-get install <some application> -y 
0

基本上你可以使用“泊坞窗出口”泊坞窗容器的文件系统的副本,然后可以写一个循环设备:

docker build -t <YOUR-IMAGE> ... 
docker create --name=<YOUR-CONTAINER> <YOUR-IMAGE> 
dd if=/dev/zero of=disk.img bs=1 count=0 seek=1G 
mkfs.ext2 -F disk.img 
sudo mount -o loop disk.img /mnt 
docker export <YOUR-CONTAINER> | sudo tar x -C /mnt 
sudo umount /mnt 

将Docker容器转换为原始文件系统映像。

此处了解详情: http://mr.gy/blog/build-vm-image-with-docker.html