# 关于 Dev Containers 的常见问题

> For the complete documentation index, see [llms.txt](https://www.jetbrains.com.cn/help/idea/llms.txt).

## 创建开发容器后，我在 Docker 中看到了各种卷和属性。 它们各自做什么？

在创建 Dev Container 之后，Docker 中会出现以下卷和属性：

* `jb_devcontainers_shared_volume` ：复制 IDE backend 的过程需要一定的时间。 但是，此过程仅在首次创建 Dev Container 时完成，并且所有内容都会复制到此卷中。 然后，这个卷在多个容器之间共享，我们不需要重复下载过程。 如果我们使用另一个 IDE 或不同版本的 IDE 创建一个 Dev Container，我们会将其复制到相同的 Docker volume。 所有后端存储在一个卷中，便于管理。 例如，通过 管理后端 对话框移除不必要的 backends。

* `jb-devcontainer-features-xxx` ：如果您在 `features` 文件中使用了 `devcontainer.json` ，那么所有功能都会被放置到这些镜像中。 当前，必须手动删除不必要的图像。

* `jb_devcontainer_sources_xxx` ：如果我们使用 `git clone` ，则所有源将使用辅助容器（基于 alpine/git 镜像）克隆到此卷中。

## 如何在创建 Dev Container 时添加更多日志信息？

在  `帮助 | 诊断工具 | 调试日志设置`  中添加以下字符串：

```
com.intellij.platform.ijent:all
```

```
com.intellij.clouds.docker.gateway.ijent:all
```

## 如何确认我的 SSH 连接已成功用于使用 -ssh git clone 创建远程 Dev Container？

请运行以下命令：

```
docker --host <ssh> build <git-url>:<context-dir>

```

请查看以下示例：

```
docker --host ssh://jetbrains@MUNIT-234:22 build
            git@git.jetbrains.team/devcont/DevCont_test_cases.git:.devcontainer
        
```

## 为什么在创建开发容器时会拉取 alpine/git 镜像？

我们基于小型  `alpine/git` 图像创建了一个辅助容器，其中包含了一些必需的工具或库，例如 Git 或 SSH 客户端。 我们需要这个来克隆在用于创建 Dev Container 时可能不存在的代码仓库。

## 为什么您不使用 Create Dev Container 和 Mount Sources 选项来进行 SSH Docker 连接呢？

如果我们已经在本地拥有所有资源，就没有必要使用像通过 SSH 的 Docker 这样复杂且缓慢的方法。

## 是否可以在远程后端触发构建 Dev Container？

您可以使用位于远程后端的  `.json`  文件为项目构建 Dev 容器。

有关更多信息，请参见 [为远程项目启动 Dev Container](start-dev-container-for-a-remote-project.html#start_from_gateway)。

## 为什么需要在本地安装 Docker 才能通过 SSH 创建远程 Dev Container？

本地 Docker 会收集正确的上下文，并仅将必要文件克隆到 Dev 容器中，而不是克隆可能相当大的整个仓库。

当前实现需要本地 Docker CLI 来收集正确的上下文，并仅将必要文件克隆到远程计算机。 您可以在 [使用远程服务器上的 Docker 的先决条件](docker.html#docker_remote_prerequisites) 部分查看要求。

> **Note:**
> 就 Docker 插件而言，在远程计算机上运行 Dockerfile 和 Docker Compose 配置需要本地 Docker CLI。 在远程 Docker Engine 上构建 Dev Container 也需要本地 Docker CLI。 然而，请注意，Image 运行配置不需要此要求。

