首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Docker:文件系统更改不导出

问Docker:文件系统更改不导出
EN

Stack Overflow用户
提问于 2015-01-19 19:58:58
回答 1查看 276关注 0票数 0

我的docker save/export不起作用,我也不知道为什么。

我用的是boot2docker。

我已经创建了一个概念的Wordpress安装示例,并且使用BusyBox作为MySQL容器和主文件系统容器。我使用以下方法创建了这些容器:

代码语言:javascript
复制
> docker run -v /var/lib/mysql --name=wp_datastore -d busybox
> docker run -v /var/www/html --name=http_root -d busybox

运行docker ps -a显示两个容器,都是基于busybox:latest的。到目前一切尚好。然后创建Wordpress和MySQL容器,指向它们各自的数据容器:

代码语言:javascript
复制
>docker run \
--name mysql_db \
-e MYSQL_ROOT_PASSWORD=somepassword \
--volumes-from wp_datastore \
-d mysql

>docker run \
--name=wp_site \
--link=mysql_db:mysql \
-p 80:80 \
--volumes-from http_root \
-d wordpress

我去我的网址(boot2docker ip),有一个全新的Wordpress应用程序。我继续通过添加一个主题和一些图片来设置Wordpress网站。然后,我就会对文件系统进行docker inspect http_root修改,并确定文件系统的更改都在这里。

然后提交更改的容器:

代码语言:javascript
复制
>docker commit http_root evilnode/http_root:dev
>docker commit wp_datastore evilnode/wp_datastore:dev

我确认我的新照片在那里。然后我保存图像:

代码语言:javascript
复制
> docker save -o ~/tmp/http_root.tar evilnode/http_root:dev
> docker save -o ~/tmp/wp_datastore.tar evilnode/wp_datastore:dev

我验证tar文件也在那里。到现在为止还好。

这里我有点困惑。我不完全确定是否需要,但我也出口集装箱:

代码语言:javascript
复制
> docker export http_root > ~/tmp/http_root_snapshot.tar
> docker export wp_datastore > ~/tmp/wp_datastore_snapshot.tar

所以我现在有4个tar文件:

  • http_root.tar (保存的图像)
  • wp_datastore.tar (保存的图像)
  • 出口集装箱( http_root_snapshot.tar )
  • 出口集装箱( wp_datastore_snapshot.tar )

我将这些tar文件SCP到另一台计算机,然后按以下方式进行构建:

代码语言:javascript
复制
>docker load -i ~/tmp/wp_datastore.tar
>docker load -i ~/tmp/http_root.tar

加载图像evilnode/wp_datastore:dev和evilnode/http_root:dev。

代码语言:javascript
复制
>docker run -v /var/lib/mysql --name=wp_datastore -d evilnode/wp_datastore:dev
>docker run -v /var/www/html --name=http_root -d evilnode/http_root:dev

--如果我正确理解的话,容器就是基于我的图像创建的。

当然,容器在那里。但是,如果我docker inspect http_root,并转到由/var/www/html别名的文件位置,目录将完全为空。好的..。

因此,我认为我需要导入到新的容器中,因为图像不包含文件系统更改。我这样做:

代码语言:javascript
复制
>cat http_root.snapshot.tar | docker import - http_root

--我理解这意味着我从一个容器导入一个文件系统增量到另一个。但是,当我返回到/var/www/html别名的位置时,我会看到相同的空目录。

如何从这些容器导出更改?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-01-19 20:14:42

卷不随新映像导出。在Docker中管理数据的正确方法是使用数据容器,并使用像docker run --volumes-from dbdata -v $(pwd):/backup ubuntu tar cvf /backup/backup.tar /dbdata或docker cp这样的命令来备份数据并在周围传输。https://docs.docker.com/userguide/dockervolumes/#backup-restore-or-migrate-data-volumes

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28032579

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档