我通过site:stackoverflow.com dockerfile RUN fs changes not persisted的网络搜索找不到那些污秽物质。
我制作了Dockerfile,并希望通过RUN对图像进行一些更改。首先,我想更改文件属性,但是在已启动的容器中没有进行更改。我发现这篇关于docker chmod和解决方案:https://serverfault.com/questions/772227/chmod-not-working-correctly-in-docker的文章。但是,现在我只是尝试通过RUN touch /path/file在Dockerfile中创建一个文件,并且已经在下一个命令中创建了一个文件(根据我的理解,下一层为docker )更改(该文件)已经消失。据我所见,这是奇怪的,否则apt install的工作方式,因为它将对图像中的文件系统进行更改.为什么特定RUN的结果不持久?下面的Docs告诉对方(或者我在这里误解了commit的含义):
https://docs.docker.com/engine/reference/builder/:
RUN指令将在当前映像之上的一个新层中执行任何命令,并提交结果。生成的提交的映像将用于Dockerfile的下一步。
下面是docker build --no-cache -t yandex:user5 yandex2/的输出(参见步骤6和步骤7;创建了dockeruser,顺便说一句):
Step 1/8 : FROM artifactory.dev.foo.org:5000/yandex-tank:jmeter
---> b8286a9220ca
Step 2/8 : LABEL maintainer="foo@foo.org"
---> Running in 7cfde9a90bf2
Removing intermediate container 7cfde9a90bf2
---> b5acd9d55f9c
Step 3/8 : WORKDIR /var/loadteest
---> Running in 47e9adc401bb
Removing intermediate container 47e9adc401bb
---> 103f158e0be3
Step 4/8 : USER root
---> Running in 9923d71f7b08
Removing intermediate container 9923d71f7b08
---> bb3aa8672bc6
Step 5/8 : RUN groupadd -r dockeruser && useradd -r -g dockeruser -d /var/loadtest -s /sbin/nologin -c "Docker image user" dockeruser
---> Running in 48c89f33d750
Removing intermediate container 48c89f33d750
---> 5000afa7698d
Step 6/8 : RUN touch /var/loadtest/chmodtest.txt
---> Running in 00b2d1ccad75
Removing intermediate container 00b2d1ccad75
---> c35808f13344
Step 7/8 : RUN ls -al /var/loadtest
---> Running in cc08d129eeb3
total 8
drwxr-xr-x 2 root root 4096 Nov 20 12:19 .
drwxr-xr-x 1 root root 4096 Nov 29 06:15 ..
Removing intermediate container cc08d129eeb3
---> 842678ca5d49
Step 8/8 : ENTRYPOINT /bin/bash
---> Running in 20b92a97c8a8
Removing intermediate container 20b92a97c8a8
---> fefd0d665677
Successfully built fefd0d665677
Successfully tagged yandex:user5https://stackoverflow.com/questions/59099955
复制相似问题