Docker构建问题-在导出层时卡住

j7dteeu8  于 2023-05-16  发布在  Docker
关注(0)|答案(1)|浏览(174)

我只是将用户、组和目录添加到标准映像中。它工作正常,直到userid号变得太大,然后dock在导出层时卡住。我将docker文件简化为:

FROM eclipse-temurin:17-jdk-jammy

USER root

RUN groupadd -r -g 996600555 testGroup
RUN useradd -u 997690599 -g testGroup -r -d /tmp/test testUser
RUN mkdir /tmp/test
RUN chown -R testUser:testGroup /tmp/test
RUN chmod -R g+rw /tmp/test

CMD ["/bin/bash"]

构建输出显示:

=> [internal] load build definition from Dockerfile                                                                                                                                                        0.1s
 => => transferring dockerfile: 309B                                                                                                                                                                        0.0s
 => [internal] load .dockerignore                                                                                                                                                                           0.0s
 => => transferring context: 2B                                                                                                                                                                             0.0s
 => [internal] load metadata for docker.io/library/eclipse-temurin:17-jdk-jammy                                                                                                                             1.3s
 => CACHED [1/7] FROM docker.io/library/eclipse-temurin:17-jdk-jammy@sha256:ff753441e51d0260f917710d0dfdea73f698624768db2b31be3f6685b4953874                                                                0.0s
 => => resolve docker.io/library/eclipse-temurin:17-jdk-jammy@sha256:ff753441e51d0260f917710d0dfdea73f698624768db2b31be3f6685b4953874                                                                       0.0s
 => [2/6] RUN groupadd -r -g 996600555 testGroup                                                                                                                                                            0.5s
 => [3/6] RUN useradd -u 997690599 -g testGroup -r -d /tmp/test testUser                                                                                                                                    0.6s
 => [4/6] RUN mkdir /tmp/test                                                                                                                                                                               0.6s
 => [5/6] RUN chown -R testUser:testGroup /tmp/test                                                                                                                                                         0.6s
 => [6/6] RUN chmod -R g+rw /tmp/test                                                                                                                                                                       0.6s
 => exporting to image                                                                                                                                                                                    163.4s
 => => exporting layers

更新:

  • 如果不添加用于添加用户、组和目录的行,图像大小为454MB
  • 如果我将group和userid的值更改为10000……图像大小为457 MB
  • 如果我将group和userid的值更改为1000000……图像大小为778 MB
  • 如果我将group和userid的值更改为5000000……图像大小为2.07 GB
  • 如果我将group和userid的值更改为10000000……图像大小为3.69 GB

随着userId的增加,图像的处理时间和大小会变得更大。
不幸的是,我需要坚持使用大的userId值来匹配容器和主机用户。有人有解决这种错误的方法吗?
DOCKER版本信息

Client:
 Cloud integration: v1.0.28
 Version:           20.10.17
 API version:       1.41
 Go version:        go1.17.11
 Git commit:        100c701
 Built:             Mon Jun  6 23:09:02 2022
 OS/Arch:           windows/amd64
 Context:           default
 Experimental:      true

Server: Docker Desktop 4.11.0 (83626)
 Engine:
  Version:          20.10.17
  API version:      1.41 (minimum version 1.12)
  Go version:       go1.17.11
  Git commit:       a89b842
  Built:            Mon Jun  6 23:01:23 2022
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.6.6
  GitCommit:        10c12954828e7c7c9b6e0ea9b0c02b01407d3ae1
 runc:
  Version:          1.1.2
  GitCommit:        v1.1.2-0-ga916309
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0
kqlmhetl

kqlmhetl1#

我很幸运地在谷歌上搜索了一下,发现如果我在useradd命令中添加一个-l选项,根据这个建议,我就克服了这个问题。相同的选项可以适用于任何人,因此将包含useradd命令的Dockerfile行更改为:

RUN useradd -l -u 997690599 -g testGroup -r -d /tmp/test testUser

相关问题