找出卷所属的docker容器

时间:2016-11-29 09:52:50

标签: docker

有没有办法将现有的泊坞窗卷(位于/etc/docker/volumes)与容器相关联?

执行此操作的一种方法是使用docker inspect :conatiner_id,但这假定容器存在。在容器不再存在的情况下,如何找到卷属于哪个容器?<​​/ p>

1 个答案:

答案 0 :(得分:0)

检查泊坞窗卷

$ ls -l /var/lib/docker/volumes/
total 72
drwxr-xr-x    3 root     root          4096 Nov 14 14:27 0f801819cf76b04b6794163b65df5d649bd795e23f4fc778f78db9ac60a0180d
drwxr-xr-x    3 root     root          4096 Nov 29 14:29 my-jenkins

有关您的音量的更多信息,您可以执行docker volume inspect,但这不会告诉您音量中的内容。了解这一点的唯一方法是进入volume-folder并检查。

所以我会检查&#34; unamed&#34;体积:

$ ls -l /var/lib/docker/volumes/0f801819cf76b04b6794163b65df5d649
bd795e23f4fc778f78db9ac60a0180d/_data
...
drwx------    2 999      ping          4096 Nov 14 14:27 pg_tblspc
drwx------    2 999      ping          4096 Nov 14 14:27 pg_twophase
drwx------    3 999      ping          4096 Nov 14 14:27 pg_xlog
-rw-------    1 999      ping            88 Nov 14 14:27 postgresql.auto.conf
-rw-------    1 999      ping         20791 Nov 14 14:27 postgresql.conf
-rw-------    1 999      ping            37 Nov 14 14:27 postmaster.opts

通常,您应该能够将音量链接到您使用过的旧容器。你可以查看里面的所有内容。目前还没有更好的方法。这实际上就是你问题的答案,但我会提供一些更多的解释,以便将来更容易。

最好的方法是创建命名卷。删除容器后,卷仍然易于识别:

docker volume create --name my-jenkins

所以在/var/lib/docker/volumes你会看到我的詹金斯。

现在我启动我的jenkins容器并将其与我的命名卷链接。 / var / jenkins_home中的所有内容都将存储在指定的卷中。

docker run -d -p 8080:8080 -v my-jenkins:/var/jenkins_home jenkins

我将在jenkins创建一个名为firstjob的职位。您将在我的命名泊坞窗卷中看到此作业。

$ ls -l /var/lib/docker/volumes/my-jenkins/_data/jobs/
total 4
drwxr-xr-x    3 dockrema dockrema      4096 Nov 29 14:47 firstjob

现在我将删除我的容器(id = fa1003894dbc)。容器不见了:

$ docker rm -fv fa1003894dbc 

我稍后。我想重用仍然存在的命名的docker卷来启动一个新的jenkins容器,它将立即容纳这个工作&#34; firstjob&#34;。

$ docker run -d -p 8080:8080 -v my-jenkins:/var/jenkins_home jenkins

如果您有一个未命名的泊坞窗卷(使用名称0f8018x9cf76b04x163b6xdf自动创建),您可以使用

docker run -d -v 0f8018x9cf76b04x163b6xdf:/var/jenkins_home jenkins

现在你的jenkins将使用该卷内的所有内容(它只是不是一个命名的卷,是什么让它更难以看到它链接了哪种类型的容器。但是通过访问卷文件夹,你将在大多数情况下找到它。)