2016-08-18 23 views
0

我正在用Jenkins构建一个带有SQLLight数据库的docker镜像,我相信我想从Dockerfile构建数据库并将其存储到一个卷中,以便可以单独导出卷。我开始构建为:docker build -t FOO .,但是当我提取量数据:如何从新建图像中获取码头卷?

docker run --rm --volumes-from FOO -v $(pwd):/backup busybox tar cvf /backup/backup.tar /opt/webapp` 

我得到的错误:No such container: FOO

这当然是有道理的,因为FOO是不是一个容器,它是一个图像。但是,如何获得容器标识符?我不能只读Docker的输出,因为我在Jenkins构建中批量运行这个。

我感觉我正在以这种错误的方式前进。但是,正确的方法是什么?

+0

想要提取图像或由此图像的容器生成的数据? – CMPS

+0

我想提取在Dockerfile中生成的卷的数据 – jonalv

回答

1

您需要运行基于FOO图像的容器:

docker run -d --name BAR FOO 

然后你就可以访问量:

docker run --rm --volumes-from BAR ... 
+0

我想我也应该执行docker stop BAR。似乎凌乱地启动一个容器,然后立即停止它 – jonalv

+0

取决于容器。当没有长时间运行的过程时,容器立即停止。 – Martin

1

运行你要备份的容器和直接做备份在该容器中(如果使用--entrypoint /bin/sh修改了入口点,请将其改为/ bin/sh):

docker run --rm -v $(pwd):/backup FOO tar cvf /backup/backup.tar /opt/webapp 

或者,如果您必须在不同的容器中运行备份(例如,备份实用程序不包括在内),您只需要创建FOO容器,而不运行它:

docker create --name foo-vol FOO 
docker run --rm --volumes-from foo-vol -v $(pwd):/backup \ 
    busybox tar cvf /backup/backup.tar /opt/webapp 
docker rm -v foo-vol