如何在docker镜像中包含体数据

时间:2015-01-25 10:35:38

标签: deployment docker dockerfile

我有两个卷的文件创建的docker image(mybase)

# set volume mount points for installation and home directory
VOLUME ["/usr/local/data", "/var/local/data"]

现在我想要生产新图像,将数据作为图像的一部分,以便我可以拉它。但我不知道如何访问这些数据。

我想做这样的事情。这将是我的新Dockerfile for prod,它将从当前

创建图像
FROM mybase
ADD /usr/local/data:/usr/local/data

但那个dir不在主机上,所以我不知道如何添加它

2 个答案:

答案 0 :(得分:5)

根据数据的性质,您可能还会将其视为图像的一部分。在这种情况下,您可以随图像携带这些文件。您可以将其构建为基本映像和特定构建的映像,该映像将构建在可访问所需文件的主机上(例如,CI构建节点):

FROM mybase
ADD <source of installation> /usr/local/data
ADD <source of the home data> /var/local/data

这张新图片(可能是每个版本的版本)会被/usr/local/data/var/local/data的内容拉到目标环境中。

在环境(生产)上运行时,如果需要,您仍可以使用数据容器技术:

docker run --it -v /usr/local/data -v /var/local/data --name my_app_data_container <my_repo>/<my_app>:<build> /bin/false
docker run -d --volumes-from my_app_data_container --name my_app_daemon <my_repo>/<my_app>:<build>

答案 1 :(得分:1)

我遇到了同样的问题,最后决定备份和恢复the way they describe in the documentation

备份:

sudo docker run --volumes-from dbdata-prod \
  -v $(pwd):/backup ubuntu tar cvf /backup/backup.tar /dbdata

...并恢复......

sudo docker run --volumes-from dbdata-test \
  -v $(pwd):/backup busybox tar xvf /backup/backup.tar