linux 查找容器文件系统(绑定挂载)

kjthegm6  于 2023-05-16  发布在  Linux
关注(0)|答案(1)|浏览(117)

我有几个容器,它们的卷设置如下:

volumes:
        - /opt/App/${COMPOSE_PROJECT_NAME}/temp:/usr/local/tomcat/temp
        - /opt/App/${COMPOSE_PROJECT_NAME}/logs:/usr/local/tomcat/logs
        - /opt/App/${COMPOSE_PROJECT_NAME}/database:/usr/local/tomcat/database
        - /opt/App/${COMPOSE_PROJECT_NAME}/backups:/usr/local/tomcat/backups

为了在容器文件系统中找到卷,我想出了一个不太实用的方法,所以我想知道是否有任何方法可以简化它。

docker ps --no-trunc --format "table {{.ID}}\t{{.Names}}\t{{.Status}}" # finding the container id
docker inspect --format '{{json .Mounts}}' <container_id> # finding the container filesystem's ID
updatedb
locate <id_filesystem> 
cd /var/lib/docker/overlay2/<id_filesystem>/diff/usr/local/tomcat # diretório do Orion

有没有更简单的方法?
我尝试使用“grep”从docker inspect命令的输出中查找容器的“UpperDir”,但它不起作用,可能是因为它是一个.json文件。
也许我以后会想出一个脚本,但现在我只想简化这个过程。

jdgnovmf

jdgnovmf1#

到目前为止,我发现的最有效的方法是这样的:

cd $(dirname $(docker inspect -f '{{ .GraphDriver.Data.UpperDir }}' ${container_name}))

因此,基本上使用命令替换,并使用脚本传递容器名称作为从输入读取的标志(矫枉过正?yeah)。
或者只使用inspect检查图像名称/id并转到相应的UpperDir。
对于referencedocker inspect可用于显示有关容器的信息,例如卷和网络。所以我用这个来自动化这个过程。
我正在试验容器并测试一些修改,因此提出了最初的问题。
我很感激你的回答和关于覆盖文件系统的信息,它们非常有帮助。

相关问题