如何使用 Docker 获取项目路径?

如何使用 Docker 获取项目路径?

我有一台 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

相关内容