我正在使用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 :(得分:1)
您需要根据FOO
图片运行容器:
docker run -d --name BAR FOO
然后您可以访问卷:
docker run --rm --volumes-from BAR ...
答案 1 :(得分:1)
运行要备份的容器并直接在该容器中执行备份(如果使用--entrypoint /bin/sh
修改了/ 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