
上一篇部署了code server,搞了一个浏览器版VS Code Server 在code server部署完之后,安装docker插件,却无法连接docker,改怎么解决呢
docker默认是以root用户运行的,如果你也是通过root身份登录的主机,应该不会有该问题,下面介绍的非root用户如何解决
以下操作命令都是在Ubuntu系统下执行
第一步是先安装docker,(* ̄︶ ̄)
首先你得在code server中安装docker插件,直接在插件中搜索即可

点击docker图标,各种提示Failed to connect

在docker插件上也介绍了,如何在vscode中使用docker

打开链接按照步骤执行
uidmap sudo apt-get install uidmapdbus-user-session sudo apt-get install -y dbus-user-session sudo systemctl disable --now docker.service docker.socket
sudo rm /var/run/docker.sock dockerd-rootless-setuptool.sh install
systemctl --user start docker sudo loginctl enable-linger $(whoami)# 获取当前用户XDG\_RUNTIME\_DIR
echo $XDG\_RUNTIME\_DIR
# 将下面两行加入到.bashrc或者.zshrc中,具体看用的哪种shell
# run/user/1000 为echo $XDG\_RUNTIME\_DIR的结果
export PATH=/usr/bin:$PATH
export DOCKER\_HOST=unix:///run/user/1000/docker.sock source ~/.zshrc
# 或者
source ~/.bashrc# 此时就可以运行docker 命令
docker run -d -p 6379:6379 redis:latest
docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
5e416fb0fa5d redis:latest "docker-entrypoint.s…" 7 hours ago Up 7 hours 0.0.0.0:6379->6379/tcp, :::6379->6379/tcp gifted\_diffie前面一路很顺利,但是发现在code server中还是不能用😓

而我们在之前的环境变量中已经配置了DOCKER_HOST = export DOCKER_HOST=unix:///run/user/1000/docker.sock
经过测试发现,在vscode terminal和 自己电脑上使用iterm通过ssh连接服务器之后的结果竟然不一样
在iterm上
在vscode terminal上
在vscode terminal $XDG_RUNTIME_DIR**为空**,这里没有再深入去看什么原因,而我已在之前的设置中将$XDG_RUNTIME_DIR替换为实际的结果run/user/1000
在vscode docker的上下文配置中,有两个contexts,一个default(使用当前DOCKER_HOST),另外一个是rootless

在code server中$DOCKER_HOST也是返回为空

因为没有连接到正确的docker.sock上,所以一直出错
在command palette中找到Docker Contexts: Use

将其调整为rootless

然后就可以在code server中使用docker 了

除了上面提到的问题
$DOCKER_HOST、$XDG_RUNTIME_DIR在 code server terminal中为空
还有一个问题:
在code server terminal中为空无法使用systemctl --user restart|start|status docker.service命令

这个问题在troubleshooting中也提到了,但我没去解决,如果重启就在iterm中操作

这两个问题等后面有时间再去解决吧
1(https://docs.docker.com/engine/install/linux-postinstall/)
2(https://github.com/microsoft/vscode-docker/wiki/Troubleshooting)
3(https://docs.docker.com/engine/security/rootless/#troubleshooting)
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。