Docker 镜像 - 将用户添加到组

rah*_*606 5 containers image docker

我有一个已经构建的自定义 Docker 映像。没有可用的 Dockerfile。在容器内部,可以使用自定义用户(例如test )而不是 root 。该用户已加入组test。这是容器的默认用户。

我尝试使用上述基础映像构建自己的映像,并将用户测试添加到组工作人员中。这个怎么做?

使用我所知道的已知命令(useradd、addgroup、usermod)没有帮助。在容器内执行docker exec后,命令id仅返回一组(测试)。

另外,无法使用anotheruser:workers / 770权限访问安装到容器的文件。

有机会这样做吗?

F1L*_*nux 2

过程:

修改当前图像以将更改合并到新图像中的过程的简要概述如下:

  1. Dockerfile使用当前图像和您的更改创建一个以修改它
  2. 执行docker build命令从Dockerfile中切出新镜像
  3. 使用新图像的名称(“标签”)更新docker-compose.yml文件的指令image:

一个简单的例子:

Dockerfile在与您的文件相同的目录中创建一个docker-compose.yml

FROM zabbix/zabbix-agent2:ubuntu-6.0-latest
USER root
RUN groupadd -r docker -g 998 && usermod -aG docker zabbix
Run Code Online (Sandbox Code Playgroud)

docker-compose.yml包含您当前使用的图像的原始文件:

version: '3.5'
services:
 zabbix-agent:
  image: zabbix/zabbix-agent2:ubuntu-6.0-latest

<SNIP>
Run Code Online (Sandbox Code Playgroud)

使用开关执行docker build命令,-t为其指定一个容易记住的名称:

docker build -t zabbix/zabbix-agent2:ubuntu-6.0-latest-dockerfix --no-cache . -f Dockerfile-ZabbixAgent2
Run Code Online (Sandbox Code Playgroud)

然后,我们根据 Dockercompose 文件中的更改,将文件中原始镜像的名称更改docker-compose.yml为新镜像的标签。

注释掉基础镜像的名称并在其下方添加新标签:

version: '3.5'
services:
 zabbix-agent:
  #image: zabbix/zabbix-agent2:ubuntu-6.0-latest
   image: zabbix/zabbix-agent2:ubuntu-6.0-latest-dockerfix
<SNIP>
Run Code Online (Sandbox Code Playgroud)

当您现在启动容器时,您将看到RUNDockerfile 中的命令对用户和组的新更改。

如果您需要更多上下文,可以在此处找到非常详细的示例。

希望这可以帮助-