前面笔者写了一篇博文:使用容器编排对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 Windows
、TCP套接字
、Podman
和SSH
,要使用远程容器一般使用的是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 up
和compose down
命令了:
在VSCode的容器窗口中可以执行compose down
,为什么这里还需要添加一个compose down
任务?
因为窗口中的compose down
只是down
,并不会删除镜像,如果要重新编译部署,在compose up
时发现如果已经有镜像了,则不会再构建镜像了。除非在IMAGES
窗口中手动删除镜像。
而compose down
任务中的命令是添加了一系列参数来删除镜像,删除卷,删除孤立项。
本文编排使用的Dockerfile
以及compose.yml
参见笔者之前的博文:使用容器编排对go项目进行部署、调试
如本文对你有帮助,欢迎点赞收藏!你的点赞与收藏将成为我写作的动力!