了解Rider的便捷码头功能,这些功能使使用集装箱感觉像海风一样。

在JetBrains Rider中使用Docker时,开发人员可能会花一些时间查看服务窗口。我们将介绍可能需要修改的所有标准Docker功能和设置。

Docker Connection

Rider将识别我们安装了Docker桌面,并在我们的Services树中显示Docker图标。我们可以修改连接以连接到任何docker执行引擎,但在大多数情况下,我们希望连接到本地实例。
image.png双击图标将把我们连接到我们的主机,并显示位于主机上的所有正在运行的应用程序、容器和图像。image.png现在我们准备好探索我们可以对我们的主机采取什么行动。

Pull an Image

我们提到过,镜像是Docker生态系统的核心。虽然我们可以建立自己的镜像,但我们很可能会使用其他个人和社区构建的形象作为我们工作的基础。通过触发Docker图标上的上下文菜单并选择Pull image...,我们可以从DockerHub拉取任何社区镜像。
image.png
Image Console,我们可以使用Image to pull搜索栏来查找和拉取任何图像。
image.png
此外,如果我们使用私有注册表,可以通过将位置添加到Rider中的Docker Registry设置来添加这些位置。
image.png

Creating A New Container

我们可以将任何现有映像作为新容器运行。如果我们右键单击位于Images部分的图像,我们将选择Create Container选项。
image.png
如果这是我们第一次将映像作为容器运行,我们将收到一个Create Docker Configuration(创建Docker配置)对话框。
image.png
在这里,我们可以设置任何运行参数,同时显式设置容器名称。和以前一样,一旦我们创建了一个运行容器,我们将在Log选项卡中看到.NET应用程序的输出。

Environment Variables

环境变量对于运行容器至关重要,特别是对于支持从环境或通过配置提供程序读取变量的.NET应用程序而言。我们可以在正在运行的容器的Environment Variables选项卡中看到所有已定义的变量。
image.png
我们可以添加新变量,也可以编辑现有变量。
image.png
根据我们访问环境变量的方式,我们可能需要重新启动容器。

Port Bindings

正如我们将在下一个演示中看到的,发布端口对于与容器通信至关重要。对于构建在ASP.NET上的Web应用程序,我们至少需要公开HTTP端口,但是因为我们的Hello Docker项目是一个控制台应用程序,所以我们不需要发布任何端口。
image.png
Port Bindings选项卡中,我们可以将内部端口映射到主机端口或选择Publish all ports。Rider的UI清楚地标记了Container portHost port

Volume Management

正如我们在本教程的常见术语部分中了解到的那样,卷是主机上的永久存储。即使在删除现有容器时,这些卷中存储的数据也会继续。我们可以从Volume Management选项卡附加新卷或现有卷。
image.png

File Explorer

所有容器都有一个内部文件系统,似乎很难访问和浏览。一种选择是从命令行附加到容器。

  1. docker exec -it <mycontainer> bash

当指向正在运行的容器实例时,我们可以将自己放在单独的终端中来运行ls命令。

  1. docker exec -it hello_docker bash
  2. root@ace5e01aa61c:/app# ls
  3. HelloDocker HelloDocker.deps.json HelloDocker.dll HelloDocker.pdb HelloDocker.runtimeconfig.json

虽然这是可行的,但是不太方便,特别是当我们不能很好地理解容器中的文件结构时。JetBrains Rider用户可以使用Files选项卡来获取容器内容的目录列表。
image.png
文件资源管理器还为我们提供了从运行的容器下载二进制文件以及在编辑器中直接查看文本文件的选项。

Attaching A Terminal

在前面的Files部分中,我们了解了如何在运行的容器上启动新的终端进程。在Services窗格中右键单击正在运行的容器允许我们选择Create Terminal选项。
image.png
一旦创建了终端实例,我们就可以运行容器映像支持的任何命令。
image.png

Rider and the Docker CLI

虽然Rider的Services窗口包含开发人员使用Docker所需的许多功能,但Rider的功能并不涵盖Docker CLI工具的所有功能。JetBrains团队继续努力将所有元素带给开发人员。如果开发人员发现他们的工作流缺少任何必要的组件,我们鼓励他们在我们的问题跟踪器中提交问题。
因此,需要熟悉Docker CLI命令,不能完全依赖Rider与Docker的集成。