前面笔者写了一篇博文: 使用容器编排对go项目进行部署、调试,介绍了在Goland中如何使用容器,由于Goland的容器配置是可视化的,使用起来非常方便,VSCode中也有一个容器插件,但是笔者一直未使用过,因为它默认是连接本机的容器或者Windows下的WSL,也没有直观的图形界面操作可以连接远程的容器,所以一直没去研究如何使用它。

我们通过下图可以看到,在默认情况下Docker Contexts有一个default

在这里插入图片描述

可以右键选择“Inspect”查看,笔者的内容如下:

 1{
 2	"Name": "default",
 3	"Metadata": {
 4		"StackOrchestrator": "swarm"
 5	},
 6	"Endpoints": {
 7		"docker": {
 8			"Host": "npipe:////./pipe/docker_engine",
 9			"SkipTLSVerify": false
10		},
11		"kubernetes": {
12			"Host": "https://kubernetes.docker.internal:6443",
13			"SkipTLSVerify": false,
14			"DefaultNamespace": "default"
15		}
16	},
17	"TLSMaterial": {
18		"kubernetes": [
19			"ca.pem",
20			"cert.pem",
21			"key.pem"
22		]
23	},
24	"Storage": {
25		"MetadataPath": "<IN MEMORY>",
26		"TLSPath": "<IN MEMORY>"
27	}
28}

使用的管道连接方式,与Goland中的Docker for Windows一样:

在这里插入图片描述 在Goland中可以选择Docker for WindowsTCP套接字PodmanSSH,要使用远程容器一般使用的是TCP套接字SSH,笔者使用的是TCP套接字

一、连接远程Docker

Goland有界面可选择设置,VSCode下则没有,需要手动设置。在VSCode中可以直接看到目前有哪些docker连接配置,即docker context,也可以使用命令查看:

1docker context ls

在这里插入图片描述 但是要添加docker context,则必须使用命令,目前还没有提供界面操作:

1docker context create docker --docker host=tcp://192.168.0.8:2980

在这里插入图片描述

创建好docker context后,VSCode中就会出现,如果暂时没出现可以点右上角的刷新按钮。 在这里插入图片描述 选择刚才创建的docker,点后面的勾勾按钮就使用该context了,其它窗口中就会出现该context下的所有容器、镜像、网络、卷等信息。

在这里插入图片描述

在单个容器上右键,会弹出一系列菜单,执行相应的命令进行相应的操作。

在这里插入图片描述 在编排的容器上右键,可以执行编排相应的命令。

在这里插入图片描述 同样地在IMAGES窗口中可以对镜像进行一系列操作。这里就不一一介绍了。

需要注意的是执行一些命令后,可能在界面上不能及时刷新,需要手动点右上角的刷新按钮刷新。

二、容器编排

前面有提到如果有编排的容器,则可以执行编排的相应命令。如果执行了Compose Down则会删除掉编排的容器,也就无法执行Compose Up了,所以需要使用VSCode的任务来处理。

VSCode菜单终端/配置任务...,在弹出的对话框中选择使用模板创建 tasks.json 文件

在这里插入图片描述

再选择Others 运行任意外部命令的示例

在这里插入图片描述

此时会生成一个tasks.json:

 1{
 2	// See https://go.microsoft.com/fwlink/?LinkId=733558
 3	// for the documentation about the tasks.json format
 4	"version": "2.0.0",
 5	"tasks": [
 6		{
 7			"label": "echo",
 8			"type": "shell",
 9			"command": "echo Hello"
10		}
11	]
12}

修改内容如下:

 1{
 2	// See https://go.microsoft.com/fwlink/?LinkId=733558
 3	// for the documentation about the tasks.json format
 4	"version": "2.0.0",
 5	"tasks": [
 6		{
 7			"label": "compose up",
 8			"type": "shell",
 9			"command": "docker-compose --host \"tcp://192.168.0.8:2980\" -f compose.yml -p dxs up --remove-orphans -d",
10			"problemMatcher": []
11		},
12		{
13			"label": "compose down",
14			"type": "shell",
15			"command": "docker-compose --host \"tcp://192.168.0.8:2980\" -f compose.yml -p dxs down --rmi all --remove-orphans --volumes",
16			"problemMatcher": []
17		}
18	]
19}

当然,也可以省略前面使用菜单创建tasks.json的步骤,直接在项目根目录的.vscode中创建如上内容的tasks.json

此时可以运行compose upcompose down命令了:

在这里插入图片描述 在VSCode的容器窗口中可以执行compose down,为什么这里还需要添加一个compose down任务?

因为窗口中的compose down只是down,并不会删除镜像,如果要重新编译部署,在compose up时发现如果已经有镜像了,则不会再构建镜像了。除非在IMAGES窗口中手动删除镜像。

compose down任务中的命令是添加了一系列参数来删除镜像,删除卷,删除孤立项。

本文编排使用的Dockerfile以及compose.yml参见笔者之前的博文: 使用容器编排对go项目进行部署、调试

如本文对你有帮助,欢迎点赞收藏!你的点赞与收藏将成为我写作的动力!