我有一台 Ubuntu 机器,上面安装了 sails js(node js)项目。我在 Ubuntu 机器上使用 Docker。但不幸的是,我找不到项目位置。由于它使用 Docker,我们无法获取确切的项目目录。
我尝试使用以下命令
sudo find . -name "*local.js*"
它向我显示了 Docker 目录中的文件。但有很多文件夹以一些随机字母数字文本开头。所有这些文件夹都包含我的项目文件夹,但我很困惑,在哪个文件夹中我可以获取我的最新代码。
有人能帮我找到我的项目的目录结构吗?
答案1
处理 /var/lib/docker 中的“blobs”目录充满危险。
要查看 docker 容器的内容,最好的方法是在其中运行一个 shell(如果你的 docker 镜像包含可执行 shell):
docker run --rm -it --entrypoint /bin/sh <your_image>
如果容器已在运行,您可以执行以下操作:
docker exec -it --entrypoint /bin/sh <your_image>
然后,您将在容器中运行一个交互式 shell,您可以使用它来探索文件(ls、cat 等……)
还要记住,您可以派生容器映像来创建另一个映像,在其中添加其他命令(或声明卷以复制容器外部的内容以供检查)。
如果您想随意检查容器文件系统,您可以将所有内容导出为 .tar:
docker export -o <the_output.tar> <container_name_or_id>
但是如果从大型图像(Ubuntu,Centos......)开始,结果可能会很困难。
对于较小的文件,您只需tar
在容器内运行并将其输出到 stdout,然后将输出重定向(在容器外部)到 TAR 文件:
docker run --rm --entrypoint "" container/image tar -c /the/directory >dump_of_the_directory.tar
慢动作:
run
:启动容器--rm
: 清理--entrypoint ""
:将入口点重置为默认 shell(如果容器将其入口点定义为启动 Java 运行时,则很有用,例如container/image
:要启动的图像的名称tar -c /the/directory
要求容器将感兴趣的目录 TAR 到其标准输出(否-f
)。因此,容器的输出是 TAR 内容>dump_of_the_directory.tar
:在主机中捕获此 stdout 并将其移动到 TAR 文件
您可以在正在运行的容器上使用类似的技术,而docker exec
不是docker run
。