我的docker save/export不起作用,我也不知道为什么。
我用的是boot2docker。
我已经创建了一个概念的Wordpress安装示例,并且使用BusyBox作为MySQL容器和主文件系统容器。我使用以下方法创建了这些容器:
> 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容器,指向它们各自的数据容器:
>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修改,并确定文件系统的更改都在这里。
然后提交更改的容器:
>docker commit http_root evilnode/http_root:dev
>docker commit wp_datastore evilnode/wp_datastore:dev我确认我的新照片在那里。然后我保存图像:
> docker save -o ~/tmp/http_root.tar evilnode/http_root:dev
> docker save -o ~/tmp/wp_datastore.tar evilnode/wp_datastore:dev我验证tar文件也在那里。到现在为止还好。
这里我有点困惑。我不完全确定是否需要,但我也出口集装箱:
> docker export http_root > ~/tmp/http_root_snapshot.tar
> docker export wp_datastore > ~/tmp/wp_datastore_snapshot.tar所以我现在有4个tar文件:
我将这些tar文件SCP到另一台计算机,然后按以下方式进行构建:
>docker load -i ~/tmp/wp_datastore.tar
>docker load -i ~/tmp/http_root.tar加载图像evilnode/wp_datastore:dev和evilnode/http_root:dev。
>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别名的文件位置,目录将完全为空。好的..。
因此,我认为我需要导入到新的容器中,因为图像不包含文件系统更改。我这样做:
>cat http_root.snapshot.tar | docker import - http_root--我理解这意味着我从一个容器导入一个文件系统增量到另一个。但是,当我返回到/var/www/html别名的位置时,我会看到相同的空目录。
如何从这些容器导出更改?
发布于 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
https://stackoverflow.com/questions/28032579
复制相似问题