如何使用 python 获取 docker 挂载的子目录

How to get the sub directories of docker mounts using python

我正在尝试实现自动化。为此,我需要检查主机系统中源目录的子目录是否等于容器目标目录中的子目录。

docker inspect -f '{{ .Mounts }}' devtest 
[{bind  /home/usr/location/docker/myapp/target /app   true rprivate}]

从上面的代码中,/home/usr/location/docker/myapp/target 是来自主机的来源,同样地,/app 是绑定挂载的目标。

所以根据我的要求,我需要在源和目标中找到子目录的数量。在源的情况下使用os.walk计算。但是我不知道如何使用 python.

从容器中找到它

我正在使用 docker-py 模块作为 docker 的实用程序。我可以知道如何使用 python

实现此目的吗

您可以在 docker host 机器上使用 docker exec,然后使用 Linux ls 命令和 wc 来查找目录计数。

您可以使用 os 或子进程 python 模块来 运行 命令。 (子进程是 python 推荐的选项)。

import os

os.system("docker exec <container-id/name> ls /app |wc -l")

如果你想 运行 它作为守护进程,你可以在命令中使用 -d 选项。

您可以 运行 使用 subprocessshlex

命令
import subprocess
from shlex import split

args = split("docker inspect -f '{{ .Mounts }}' devtest")
mnt_out = subprocess.run(args=args, universal_newlines=True, stdout=subprocess.PIPE)

print(mnt_out.stdout)

这将像在终端上一样打印。从那里您可以构建您希望使用纯 python 归档的逻辑,例如使用 pathlib 库。