在Docker容器中配置`code-server`以访问宿主机的Docker环境

在Docker容器中配置code-server以访问宿主机的Docker环境

部分内容使用gpt生成,但经过测试可用。

要在code-server容器内部安全地管理和访问宿主机的Docker环境(主要是为了访问宿主机的texlive),遵循以下步骤能够确保流畅的集成和操作,同时维护安全性。

步骤概览

  1. 映射docker.sock以共享Docker守护进程
  2. 容器内安装Docker CLI
  3. 解决Docker插件权限问题
  4. 添加用户到Docker组以授权
  5. 应用更改并验证

详细步骤

1. 映射docker.sock

创建code-server容器时,通过映射/var/run/docker.sock来允许容器访问宿主机的Docker守护进程,其他必要内容自己补充:

docker run -d -v /var/run/docker.sock:/var/run/docker.sock --name code-server code-server-image

2. 安装Docker CLI

code-server容器内部执行以下命令安装Docker客户端:

sudo apt-get update
sudo apt-get install -y docker.io

3. 解决权限问题

安装Docker插件后,如果遇到权限问题(permission denied),通常是因为code-server运行的用户没有访问/var/run/docker.sock的权限。

4. 添加用户到Docker组

首先,查找宿主机上docker组的GID:

grep docker /etc/group

然后,在容器内以相同GID创建docker组,并将用户添加到该组,这里我的用户为abc:

sudo groupadd -g [GID] docker
sudo usermod -aG docker abc

5. 重启并验证

重启code-server或容器以应用更改。然后,测试Docker命令以确认配置成功:

docker run hello-world

在code-server中安装docker插件,也可以正常显示docker了
在这里插入图片描述

安全提示

  • 避免特权模式:大多数情况下,无需以特权模式运行code-server容器。
  • 最小权限原则:仅授予必要的权限,避免不必要的安全风险。

通过遵循这些步骤,你可以在code-server容器内安全高效地访问和管理宿主机的Docker环境,无论是进行开发工作,还是操作其他容器,都能确保流程的顺畅和安全。

上一篇:Django验证码(一)


下一篇:【微服务-Nacos】Nacos集群的工作原理及集群间数据同步过程