Ubuntu22.04下Rancher Desktop类DinD容器嵌套运行的配置问题
在Ubuntu 22.04上用Rancher Desktop实现类似DinD的containerd访问
Rancher Desktop的containerd运行在虚拟机内部,所以宿主系统默认看不到/run/k3s/containerd/containerd.sock,它会把这个socket转发到宿主的用户专属路径下。按以下步骤操作即可实现容器内访问宿主containerd:
切换到containerd运行时
打开Rancher Desktop的设置面板,在Container Runtime选项中选择containerd,重启Rancher Desktop生效。确认宿主的containerd socket路径
在宿主终端执行以下命令,检查转发后的socket是否存在:ls /run/user/$(id -u)/rancher-desktop/containerd/正常情况下会看到
containerd.sock文件。启动带nerdctl的容器并挂载必要资源
使用包含nerdctl的镜像(比如containerd/nerdctl:latest),挂载宿主的containerd socket和nerdctl配置目录,命令如下:docker run --rm -it \ -v /run/user/$(id -u)/rancher-desktop/containerd/containerd.sock:/run/containerd/containerd.sock \ -v $HOME/.config/nerdctl:$HOME/.config/nerdctl \ containerd/nerdctl:latest \ /bin/bash进入容器后,直接执行
nerdctl ps就能看到宿主containerd中运行的容器,实现类似DinD的交互效果。
注意:如果你的Rancher Desktop版本不同,socket路径可能略有差异,若上述路径不存在,可通过rdctl shell进入Rancher Desktop的虚拟机,确认内部/run/k3s/containerd/containerd.sock存在后,再检查宿主/run/user/<你的UID>/rancher-desktop/下的子目录。
内容的提问来源于stack exchange,提问作者Gavin Yap
相关产品推荐
相关产品推荐

