2015-02-08 93 views
3

我是docker的新手,我在运输数据容器时遇到了问题。好的,通常我们会发送图像,用户可以根据需要从图像中启动容器,对吧?导出和导入docker数据容器

现在我想出货的一些数据 - 所以我做了一个数据容器,以便:

docker create -v /dbdata --name dbdata phusion/baseimage 

接下来我简单地开始了庆典并插入一些数据到我的数据容器

docker run --volumes-from dbdata -i -t phusion/baseimage /bin/bash 
echo "foo" > /dbdata/bar.txt 
exit 

现在我想让我的团队成员使用相同的数据(离线),所以我想“发送”我的数据容器给他们。因此,我已经使用

docker export dbdata > /tmp/cool_data.tar 

但是,当我再次与

cat /tmp/data.tar | sudo docker import - dbdata2 

导入这一点,因为它似乎是一个图像

docker run --volumes-from dbdata2 -i -t phusion/baseimage /bin/bash 
FATA[0000] Error response from daemon: Container dbdata2 not found. Impossible to mount its volumes 

我怎么我不能用这个“容器”导出和导入数据容器是否正确?

回答

0

你不能像这样卷导出和导入数据 - 卷根本不包括在导出/导入。

然而,您不需要这样做 - 只需将卷映射到的目录压缩或tar即可发送给同事。然后他们可以使用这些文件创建自己的数据容器。

您可能还想看看flocker,它可以帮助您迁移容器和数据。

+0

这的确如此,但如果你能够像图像一样简单地提取不同的数据集,那将是非常棒的。但似乎你必须使用像docker-backup或flocker这样的东西(这似乎是一个非常简单的用例的大框架)。 – KIC 2015-02-09 10:19:54

+0

@KIC:你可以做的一件事是编写一个Dockerfile,它将数据拷贝到一个目录中,然后*将这个目录声明为一个卷。然后,您将能够使用该图像创建数据容器,并将其与图像中的数据一起播种。 – 2015-02-09 10:44:31

0

您需要首先制作一个容器。运行此:

docker create -v /dbdata --name dbdata2 dbdata2 

有关详细信息,请Creating and mounting Data Volume Containers

+0

有趣的是,我得到这个异常:FATA [0000]错误响应from daemon:没有指定命令 – KIC 2015-02-08 16:12:49

+0

您需要提供一个假命令,如“/ sbin/my_init”,但问题是,之后/ dbdata文件夹为空,因此根本没有数据传输。 – KIC 2015-02-08 17:40:59

0

我在与以下Dockerfile好运:

from scratch 

ADD install_theGreatSoftwarePkg /install 
VOLUME /install 

然后我做了建设和创造:

docker build -t greatSoftwareInstallImage . 
docker create -t --name=greatSoftwareMedia greatSoftwareInstallImage /bin/true