如何从新build的图像获得docker卷?

我正在用Jenkins构build一个带有SQLLight数据库的Docker镜像,我相信我想从Dockerfile构build数据库并将其存储到一个卷中,以便可以单独导出卷。 我开始构build: 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构build中批量运行这个。

我感觉到我正在做这个错误的方式。 但是,正确的方法是什么?

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

 docker run -d --name BAR FOO 

然后你可以访问这些卷:

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

运行你想要备份的容器,并直接在该容器中进行备份(如果使用--entrypoint /bin/sh修改了入口点就像--entrypoint /bin/sh ):

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

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

 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