Docker 支持
最后更新时间:2025 年 03 月
Docker 是一个用于开发、发布和运行应用程序的开放平台。它使您能够将应用程序与基础架构分开,以便您可以快速交付软件。您可以在一个称为“容器”的松散隔离环境中打包和运行应用程序的能力。其隔离和安全性使得您可以在一个主机上同时运行多个容器。这些容器都是轻量级的,但同时他们包含运行应用程序所需的一切,因此您无需依赖主机上安装的任何工具。您可以在工作时轻松共享容器,并且确保共享的每个人获得的是同一个容器。
Docker 最吸引人的特性之一是您可以打包应用程序的依赖项和环境,而不必担心主机上的依赖项版本控制或冲突。
有关 Docker 的更多信息,请点击 此链接。
前提条件
安装组件
在安装 SnapDevelop 时,请您确保 Docker 开发 组件被选中安装。
安装 Docker 环境
为了能够使用 SnapDevelop 的 Docker 支持,您必须在本机或别的机器上已经设置好 Docker 环境。关于如何设置 Docker 环境的更多信息,请点击 此链接。
如果您想使用 容器资源管理器 中提供的 打开终端窗口 和 运行交互式 等功能选项,您也需要在本地安装 Docker Desktop。
容器资源管理器
SnapDevelop 的 容器资源管理器 可让您从注册表中搜索和下载 Docker 镜像,基于这些镜像创建并管理容器。
以下是对该工具的功能介绍以及操作说明。
打开容器资源管理器
要打开 容器资源管理器,请选择菜单 视图 > 容器资源管理器。
容器资源管理器 将显示在侧面板上。
连接到引擎
引擎是运行容器的实体。您可以在 容器资源管理器 中连接到本地或远程 Docker 引擎。如果您正在进行本地开发并且拥有 Docker Desktop 的本地实例,则可以直接使用 Localhost 引擎。
按照以下步骤通过 HTTP/S 连接到引擎:
单击 容器资源管理器 中的 连接到引擎 图标。
填写所需信息。
使用 HTTP 连接:
使用 HTTPS 连接:
单击 确认。
新引擎将添加到 容器资源管理器。
镜像
浏览镜像
要浏览注册表的镜像,请右键单击引擎并选择 拉取镜像。
拉取镜像 窗口将显示。
您可以通过选择注册表拉取,或者输入命令行拉取。
在 注册表拉取 选项卡窗口,您首先选择一个注册表。您可以选择 Docker Hub、MCR(Microsoft Container Registry)注册表或自托管 Docker 注册表。然后输入命名空间进一步缩小范围,或者输入关键字快速查找镜像。
在镜像列表中选择一个镜像,点击窗口底部的 确认 按钮。
如需通过命令行拉取镜像,您可以点击 命令行拉取 选项卡。然后输入 Docker 命令拉取镜像。
添加注册表
要添加一个从中拉取镜像的新注册表:
在 注册表拉取 选项卡窗口,点击 注册表 下拉列表并选择 新建连接。
选择要添加的注册表类型。
选择连接协议并填写所需信息。
对于 HTTP 连接,填写 注册表 URL 和 端口。
对于 HTTPS 连接,填写 注册表 URL 、端口、用户名 和 密码(如果需要)。
单击 确认。
如果提供的信息正确,则注册表加载成功并且可以浏览。
下载镜像
要将镜像下载到引擎:
在 拉取镜像 窗口中,选择要下载的镜像并使用左侧的箭头将其展开。
选择您要下载的镜像标签,然后点击 确认。
镜像将开始下载。下载过程和结果将显示在 IDE 底部的 输出 面板中。
检查镜像
镜像下载完成后将自动在 镜像组 下对应的节点下显示,并在右边打开其详细信息页面供查看。
或者展开引擎的 镜像组,(如果镜像来自注册表,您可能还需要展开注册表项)然后双击镜像或者右键点击镜像然后选择 查看 也可以查看有关镜像的详细信息。
镜像的详细信息将显示在单独的视图中。
此视图包含镜像的详细信息和元数据,某些字段(例如 环境变量、标签 )在镜像之间会有所不同。
推送及拉取镜像
推送
要将镜像推送到注册表,请右键单击镜像并选择 推送。
输入您的组织名称并选择要推送镜像的注册表,然后单击 确认。
您可能会被要求输入注册表登陆信息。请输入信息后,单击 确认。
您可以在 结果 窗口中查看进度和结果。推送成功后,镜像将显示在相关注册表下面。
拉取
要确保下载当前标记的最新版本的镜像,请右键单击镜像并单击 拉取。
程序将检查是否存在更新版本的镜像并下载。此过程在 输出 面板中可见。
标记镜像
要向镜像添加新标记,请右键单击镜像并选择 标记。
填写新标记的信息,然后单击 确认。
新标记将显示在 容器资源管理器 中。
容器
容器是镜像的实例。多个容器可以基于同一个镜像,但这些容器可能会将不同的数据写入它们的容器,从而使它们实际上有所不同。同时,基于镜像的容器可以将其对自身所做的更改推送回镜像中,称之为 提交。
创建容器
要创建容器(镜像的实例),请展开引擎的 镜像组 部分,右键点击要为其创建容器的镜像,然后单击 运行。
这将打开 新建容器 窗口。
- 标准 -- 容器的常规设置。
环境 | 描述 |
---|---|
容器名称 | 这是容器的标识,也是 容器资源管理器 中显示的名字。如果省略不填,将自动分配一个随机名字。 |
发布所有暴露端口 | 使 Dockerfile 中标记为 EXPOSE 的所有端口自动映射到主机上的端口。 |
端口 | 主机和容器之间的端口映射。主机在<HOST IP>:<HOST PORT> 中收到的所有请求都将转发到容器的端口<CONTAINER PORT> 。 |
卷 | 容器和主机之间共享的目录。卷对于在容器的生命周期中保存数据(例如数据库、日志等)很有用。 |
环境变量 | 作为环境变量传递到容器中。通常,镜像会声明它们需要的环境变量。您可以在此处设置它们的值。 |
标签 | 为容器添加标签或元数据。 |
- 可执行文件 -- 容器的启动设置。
- 入口点:容器启动时将始终执行的命令。
- 命令:要运行的默认命令,或入口点的参数。如传递参数给容器将覆盖此设置。
- 高级 -- 容器的高级设置。
- 工作目录:工作目录是入口点的运行位置。如果指定的目录不存在,将会被自动创建。
- 重启策略:
- No(否):永远不要重新启动容器。
- OnFailure(失败时):如果容器的主进程因执行失败而退出,则自动重新启动容器。
- UnlessStopped(除非停止):除非是手动停止,否则容器将重新启动。
- Always(总是):容器在退出或停止后会重启。
- 分配一个伪TTY:给容器分配一个终端,以便通过终端连接到容器。
- 授予此容器扩展权限:容器将以特权模式运行。这将使容器能够访问主机上的所有设备。
- 退出时自动删除容器:在容器退出时自动将其删除。
- 保存当前配置:使当前设置成为其他容器的默认设置。
如需稍后验证容器是否运行正常,这里建议设置主机 IP 和主机端口。
点击 确认 后,新建的容器将出现在 容器组 节点下面。其详细信息页面将在右边窗口打开。如需验证容器是否运行正常,请参阅 预览容器。
运行交互式
您可以使用 运行交互式 选项来运行容器。
底部面板中将打开一个终端窗口,该终端窗口连接到容器。
这对于包含单个工具且默认命令包含 CLI 的镜像很有用。
检查容器
预览容器
容器创建后将自动打开其详细信息页面供查看。
或者展开 容器组 节点,双击容器或右键点击容器并选择 查看,可以查看容器的详细信息。
在容器的详细信息视图中,您可以看到创建时的设置,以及网络信息。
如需预览该容器,可直接点击 主机端口 中配置的端口号。
容器将运行。
在容器中使用 PowerShell 终端
右键点击正在运行的容器并选择 打开终端窗口 选项,可以打开一个连接到容器的 PowerShell 终端窗口,并能够在此窗口中执行命令及查看容器环境。
终端窗口将在底部面板中打开。
该终端和容器连接,通过该终端发出的命令实质上都是在容器内执行,因此通过此终端可以了解容器中的应用程序可以查看以及访问哪些内容。
查看容器文件
打开容器的详细信息并切换到 文件 选项卡可以预览容器的文件系统。此时容器必须正在运行。
在此视图中,您可以看到容器内的应用程序所创建的文件以及已挂载的卷。
查看容器日志
打开容器的详细信息并切换到 日志 选项卡来查看容器的主进程日志。此时容器不必正在运行。
管理容器
启动/停止容器
容器可以启动和停止。当容器停止时,它会向主进程发送信号,主进程停止后,容器停止。停止或启动时会保留文件系统状态。
要启动或停止容器,请右键点击容器,然后在弹出菜单中选择 启动 或 停止 选项。
运行状态的容器只能停止或重启,非运行状态的容器只能启动。重启 选项会在停止容器后立即启动容器。
提交容器
提交容器会将容器所做的任何文件或配置更改保存到一个新镜像中,但不包括已挂载卷中包含的数据。
要将容器提交到一个新镜像中,请右键单击 容器资源管理器 的 容器组 下的容器,然后选择 提交 选项。
这将打开 提交镜像选项 窗口。您可以在此窗口中配置新镜像的属性,设置新镜像的名称和标签,然后单击 确认。
新镜像将创建并显示在 镜像组 下面。
您现在可以从此镜像创建容器。
添加 Docker 支持
新项目
在创建以下类型的新项目时,您可以选择为其添加 Docker 支持:
- ASP.NET Core Web API
- ASP.NET Core gRPC 服务
- Worker Service
详细步骤如下:
打开新建项目窗口。
选择上述项目类型之一,然后单击 下一步。
给项目命名,选择模板并单击 下一步。
选中 启用Docker 复选框并选择容器运行的操作系统,然后单击 创建。
生成的项目将包含 Dockerfile 和 .dockerignore 文件。Dockerfile 文件包含了用户可以在命令行上用于组装镜像可以调用的所有命令。.dockerignore 文件用来设置哪些文件和目录(不必要的大文件或敏感文件和目录)不发送到守护进程(daemon)。
Docker 可以通过读取 Dockerfile 中的指令自动生成镜像。当您添加 Docker 支持时,SnapDevelop 会为您的项目自动生成专属的 Dockerfile,您也可以根据需要自定义该文件。有关 Dockerfile 的更多信息,请参阅 Dockerfile 参考。
现有项目
为现有项目添加 Docker 支持:
右键单击该项目并选择 添加 > 容器支持。
选择 目标操作系统(容器将在其上运行的操作系统)并单击 确认。
解决方案资源管理器中将新增 Dockerfile 文件以及 .dockerignore文件。
添加 Docker Compose 容器编排(多个项目)
SnapDevelop 支持两种容器编排器:Kubernetes Compose 和 Docker Compose。本教程讨论 Docker Compose。关于 Kubernetes Compose 的使用说明,请参考 添加 Kubernetes Compose 容器编排。
容器编排是一种部署由多个容器组成的应用程序的机制,声明有哪些容器以及它们之间如何交互。然后容器编排器确保被请求的容器已启动,当其中一个容器失败时,它会尝试重新启动容器(如果策略允许的话)。
当解决方案中包含有多个项目,需要部署到容器时,建议使用容器编排来同时部署多个项目。下面假设我们有一个由两个项目组成的解决方案。
您可以选择为每个项目添加容器支持(即,按照前面描述的方法向每个项目添加 Docker支持,每个项目中将添加 Dockerfile 文件)。
或者将两个项目添加到容器编排。您需要对两个项目逐个进行操作。请右键单击第一个项目并选择添加 > 容器编排支持。
在 容器编排 下拉列表中选择 Docker Compose,然后单击 确认。
选择容器的目标操作系统,然后单击 确认。
解决方案中将新增一个 docker-compose 的项目。并且在第一个项目的节点下也会新增 Dockerfile 和 .dockerignore 文件。
docker-compose 项目包括 docker-compose.yml 和 .dockerignore 文件。
docker-compose.yml 是个 YAML 文件,定义了服务、网络和卷。有关此文件的更多信息,请参阅 Compose 文件参考 。.dockerignore 文件用来设置哪些文件和目录(不必要的大文件或敏感文件和目录)不发送到守护进程(daemon)。有关此文件的更多信息,请参阅 Dockerfile 参考 |Docker文档。
您可以通过右键单击 docker-compose 项目节点并选择 卸载项目 来删除 Docker 编排支持。
docker-compose.yml 是 Docker Compose的描述文件,下面是一个示例。目前它只包含一个容器(因为我们目前只对第一个项目添加了 容器编排支持 )。
要添加第二个容器,请对第二个项目重复前面的步骤。之后, docker-compose.yml 文件将更新如下。
如果您的解决方案中还有其他的项目,请重复前面的步骤逐个将项目添加到容器编排。
有关 Docker Compose 的更多信息,请点击 此链接。
使用 Docker 启动项目
在容器中启动项目的方法有很多。
运行单个项目
要运行已启用 Docker 支持的项目,您可以
构建镜像并手动创建容器,或者
让 SnapDevelop 自动为您完成所有工作
手动构建镜像
右键单击项目的 Dockefile,然后选择 生成Docker镜像。
选择目标引擎以及输入镜像的名称和标签,然后单击 确认。
Docker 镜像将开始构建。其过程将显示在 输出 面板中。
镜像构建成功后将显示在 容器资源管理器 的 镜像组 下面(在所选引擎下)。
您现在可以按照 创建容器 小节中的步骤运行此镜像。
使用 SnapDevelop
要使用 SnapDevelop 将项目作为容器启动,请在 IDE 的工具栏中选中项目作为启动项目,然后从启动选项中选择 Docker,再点击运行图标。
这将开始构建镜像、创建容器并自动启动应用程序。这些过程将显示在 输出 面板中。
注意:这种运行项目的方式仅适用于开发和测试目的。此方法将源代码、二进制文件、机密文件和其他文件夹挂载到容器中以使其正常运行。通过此方法生成的镜像如以其他方式使用可能会产生意想不到的结果。
使用 Docker Compose 启动项目
要通过 Docker Compose 编排器来运行解决方案,在 IDE 的工具栏中选择 docker-compose 项目作为启动项目,然后从启动选项中选择 Docker Compose,再点击运行图标。
SnapDevelop 将构建项目和镜像,并创建容器。过程将显示在 输出 面板上。
生成的容器将按其网络分组并显示在 容器资源管理器 中。
调试项目
您可以在 Docker(以及 Kubernetes)环境中调试项目。详情请参阅 在 Docker 或 Kubernetes 环境中调试项目。
发布到 Docker
假定项目已添加 Docker 支持。有关更多信息,请参阅 添加 Docker 支持 小节。
要将项目发布为 Docker 镜像:
在解决方案资源管理器中,右键单击项目然后选择 发布。
选择 Docker 容器注册表 并单击 下一步。
选择要从中发布的引擎和注册表,输入组织名称以及镜像名称和标签,然后单击 下一步。
设置 描述 引擎 选择一个 Docker 引擎,或选择 新建连接... 以连接到一个新的 Docker 引擎。 注册表 选择一个 Docker 注册表。您可以在 Docker Hub 或 MCR(Microsoft Container Registry)上选择一个注册表,或者选择 新建连接 以连接到自托管的 Docker 注册表。 组织 指定您的组织名称。 镜像 指定镜像名称。 标记 在镜像右侧,为图像指定标签。 查看设置摘要并单击 发布。
如果是发布到 Docker Hub 上的注册表,您可能会被提示输入登陆信息。输入后单击 确认。
在 输出 窗口您可以查看发布过程及结果。
发布完成后,镜像的详细信息页面将打开。
另外,在发布向导中您将看到以下确认消息。
接下来,您可以打开 容器资源管理器,连接到对应的 Docker 引擎并找到发布后的镜像,然后创建容器。详细设置说明,请参考 创建容器 小节。