我只是将用户、组和目录添加到标准映像中。它工作正常,直到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
1条答案
按热度按时间kqlmhetl1#
我很幸运地在谷歌上搜索了一下,发现如果我在useradd命令中添加一个
-l
选项,根据这个建议,我就克服了这个问题。相同的选项可以适用于任何人,因此将包含useradd命令的Dockerfile行更改为: