上一篇部署了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 uidmap
dbus-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 删除。