首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Dockerfile:通过运行对文件系统所做的更改不持久化

Dockerfile:通过运行对文件系统所做的更改不持久化
EN

Stack Overflow用户
提问于 2019-11-29 06:45:58
回答 2查看 730关注 0票数 2

我通过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/fileDockerfile中创建一个文件,并且已经在下一个命令中创建了一个文件(根据我的理解,下一层为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,顺便说一句):

代码语言:javascript
复制
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:user5
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-11-29 07:22:40

问题是使用基本映像中的卷:

从Dockerfile中更改卷:如果任何构建步骤在声明卷后更改卷内的数据,则这些更改将被丢弃。

请参阅

票数 2
EN

Stack Overflow用户

发布于 2019-11-29 06:55:02

解决方法是使用COPY 码头医生

代码语言:javascript
复制
COPY path/to/local/file /var/loadtest/chmodtest.txt
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59099955

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档