VSCode中使用容器及容器编排docker-compose

发布于:2025-07-15 ⋅ 阅读:(19) ⋅ 点赞:(0)

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

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

在这里插入图片描述

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

{
	"Name": "default",
	"Metadata": {
		"StackOrchestrator": "swarm"
	},
	"Endpoints": {
		"docker": {
			"Host": "npipe:////./pipe/docker_engine",
			"SkipTLSVerify": false
		},
		"kubernetes": {
			"Host": "https://kubernetes.docker.internal:6443",
			"SkipTLSVerify": false,
			"DefaultNamespace": "default"
		}
	},
	"TLSMaterial": {
		"kubernetes": [
			"ca.pem",
			"cert.pem",
			"key.pem"
		]
	},
	"Storage": {
		"MetadataPath": "<IN MEMORY>",
		"TLSPath": "<IN MEMORY>"
	}
}

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

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

一、连接远程Docker

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

docker context ls

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

docker 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:

{
	// See https://go.microsoft.com/fwlink/?LinkId=733558
	// for the documentation about the tasks.json format
	"version": "2.0.0",
	"tasks": [
		{
			"label": "echo",
			"type": "shell",
			"command": "echo Hello"
		}
	]
}

修改内容如下:

{
	// See https://go.microsoft.com/fwlink/?LinkId=733558
	// for the documentation about the tasks.json format
	"version": "2.0.0",
	"tasks": [
		{
			"label": "compose up",
			"type": "shell",
			"command": "docker-compose --host \"tcp://192.168.0.8:2980\" -f compose.yml -p dxs up --remove-orphans -d",
			"problemMatcher": []
		},
		{
			"label": "compose down",
			"type": "shell",
			"command": "docker-compose --host \"tcp://192.168.0.8:2980\" -f compose.yml -p dxs down --rmi all --remove-orphans --volumes",
			"problemMatcher": []
		}
	]
}

当然,也可以省略前面使用菜单创建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项目进行部署、调试

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


网站公告

今日签到

点亮在社区的每一天
去签到