相关疑难解决方法(0)

如何将仅数据卷从一个主机移植到另一个主机?

正如关于使用卷的Docker文档中所描述的那样,所谓的仅数据容器的概念,无论仅数据容器是否实际运行,它都提供可以挂载到多个其他容器的卷.

基本上,这听起来很棒.但有一件事我不明白.

这些卷(由于可移植性原因而未显式映射到主机上的文件夹,如文档所述)由Docker在host(/var/docker/volumes/…)上的某个内部文件夹中创建和管理.

假设我使用这样的卷,然后我需要将它从一个主机迁移到另一个主机 - 如何移植卷?AFAICS它有一个唯一的ID - 我可以将卷及其仅数据容器复制到新主机吗?如何找出要复制的文件?或者是否有一些内置于Docker的支持我还没有发现?

docker

111
推荐指数
5
解决办法
6万
查看次数

我应该备份 /var/lib/docker 中的所有内容吗?

我目前在Ubuntu 17.04运行泊坞窗1.12.6,我想知道,如果下的所有目录的/ var / lib中/泊坞窗应包括在我的每月备份(备份我都下/rsnapshot,然后设置一些exclude规则) .

例如,对于 Vagrant,我从备份下载的图像及其生成的机器(.vagrant.d/boxes/.VirtualBox /Machines/)中排除,因为它们可以随时使用各自的Vagrantfile重建。

不过,我真的不明白/var/lib/docker目录结构是如何工作的。在我的系统中是这样的:

# tree -L 2 -a -F --dirsfirst --noreport /var/lib/docker/
/var/lib/docker/
??? aufs/
?   ??? diff/
?   ??? layers/
?   ??? mnt/
??? containers/
??? image/
?   ??? aufs/
??? network/
?   ??? files/
??? swarm/
??? tmp/
??? trust/
??? volumes/
    ??? metadata.db
Run Code Online (Sandbox Code Playgroud)

backup docker

14
推荐指数
1
解决办法
3907
查看次数

如何保存docker redis容器

我在使用redis数据库中的数据创建docker redis容器的映像时遇到问题。目前,我正在这样做:

docker pull redis
docker run --name my-redis -p 6379:6379 -d redis
redis-cli
127.0.0.1:6379> set hello world
OK
127.0.0.1:6379> save
OK
127.0.0.1:6379> exit
docker stop my-redis
docker commit my-redis redis_with_data
docker run --name my-redis2 -p 6379:6379 -d redis_with_data
redis-cli
127.0.0.1:6379> keys *
(empty list or set)
Run Code Online (Sandbox Code Playgroud)

我显然不明白这里的一些基本知识。docker commit不会从现有容器创建新映像吗?


好吧,我一直在做一些挖掘工作。hub.docker上的默认redis映像使用数据量,然后将其安装在容器中的/ data处。为了在容器之间共享此卷,您必须使用以下参数启动一个新容器:

docker run -d --volumes-from <name-of-container-you-want-the-data-from> --name <new-container-name> -p 6379:6379 redis
Run Code Online (Sandbox Code Playgroud)

请注意,参数的顺序很重要,否则docker run将静默失败。

docker volume ls
Run Code Online (Sandbox Code Playgroud)

会告诉您docker在您的计算机上已经创建了哪些数据卷。我还没有找到一种方法来给这些卷起一个琐碎的名字,而不是一个很长的随机字符串。

我还没有找到挂载数据卷的方法,而只是使用--volumes-from命令。


好的。我现在可以使用它了,但是很笨拙。

docker volume ls
docker volume inspect <id of docker volume> …
Run Code Online (Sandbox Code Playgroud)

redis docker

10
推荐指数
1
解决办法
9987
查看次数

如何坚持MongoDB - 新图像中正在运行的Docker容器的数据?

我有一个正在运行的Mongo数据库容器,名为xyz,来自官方的Mongo Image.我用docker run -d -p 21707:21707 mongo 这个容器创建了容器,我用样本数据创建了2个集合.

现在我想在dockerhub上的新图像中提取此容器.

我使用docker commit并创建了一个新图像,将其推送到docker hub.如果我在另一个系统上拉图像并从该图像创建一个新容器,则我的原始容器xyz中没有数据.

经过研究我发现mongo图像可以用于卷,但我过去错过了这一步...我认为容器使用/ data/db作为标准卷(docker inspect),在提交此卷时没有附加到新图片?!

我也试过docker export/import上面提到的同样的问题!

现在我的问题,我如何能够在新的图像/容器中使用我的样本数据迁移这个"xyz"运行容器?非常感谢!

mongodb docker

8
推荐指数
1
解决办法
8269
查看次数

Docker 提交未保存我对图像的更改

我是 docker 世界的新手:我现在可以部署 docker 容器并做一些工作。

试图进入下一个级别,保存我的更改并将我的容器/图像移动到另一台 PC/服务器。

目前,我在 Windows 10 上使用 docker,但我可以访问 Ubuntu 16.04 服务器来测试我的工作。

这就是我卡住的地方:我在 Docker 上部署了 Wordpress 和 MariaDB 图像。
我的 WP 运行得很好。我安装了几个主题并创建了几个带有图像的页面。

在这一点上,我喜欢保存我的工作并将其发送给我的朋友,他将部署我的图像并在同一个 Wordpress 上做进一步的工作。

我在网上读到的是:我应该运行docker commit命令以.tar格式保存和创建我的 docker 图像,然后将此图像文件 ( .tar)发送给我的朋友。他将运行docker load -i我的文件,将其作为图像加载到他的 docker 中,然后从中创建容器,这应该给他我在 Wordpress 上的所有工作。

澄清一下,我同时提交 Wordpress 和 Mariadb 容器。
我没有安装任何外部卷,因此所有工作都保存在容器中。

我确实记得在 docker 设置中在驱动器 C 和 D 上打上复选标记,但我不知道这是否与卷有关。

我在提交和移动.tar文件过程中没有收到任何错误。一旦我的朋友从我提交的图像中创建了他的容器,他就会得到干净的 Wordpress(就像从 wp 设置页面开始新安装的 Wordpress)。

我注意到的另一件事是我创建的图像与我拉取的原始图像具有相同的文件大小。当我运行时docker images,我看到我的图像是 420MB,而 Wordpress 图像是 420MB。

我认为我的图像应该大一点,因为我已经安装了主题、插件并将图像上传到 Wordpress。至少它应该比原始图像多 3 到 5 …

commit docker

7
推荐指数
1
解决办法
1万
查看次数

Docker mysql 映像 - 将内部容器数据库移动到卷

我已经开始使用 docker 和 docker-compose 来定义数据库。由于我没有在配置中定义卷(我的错误),数据库已经在容器内创建,现在下次运行 docker-pull 时,我将重新创建这个数据库,导致我的数据丢失。在不丢失数据的情况下将数据移出容器的最佳方法是什么?

  db:
    image: "mydbimage"
    environment:
      MYSQL_ROOT_PASSWORD: "${DB_ROOT_PASSWORD}"
      MYSQL_DATABASE: "jirio"
      MYSQL_USER: "${DB_USERNAME}"
      MYSQL_PASSWORD: "${DB_PASSWORD}"
Run Code Online (Sandbox Code Playgroud)

文件

FROM mysql:5.6
ADD schema.sql /docker-entrypoint-initdb.d/schema.sql
Run Code Online (Sandbox Code Playgroud)

docker docker-compose

3
推荐指数
1
解决办法
1939
查看次数

标签 统计

docker ×6

backup ×1

commit ×1

docker-compose ×1

mongodb ×1

redis ×1