Dockerfile 编写踩坑汇总

本文总结了Dockerfile编写中常见的两个问题:1) 使用RUN cd命令无法改变后续命令的工作目录,应改用WORKDIR指令。Dockerfile的每条RUN命令在不同的容器环境中执行,不会保留上一条命令的内存状态。2) RUN后面source ~/.profile无效,因为sh不支持source,需要改用bash。
摘要由CSDN通过智能技术生成

一、RUN 后cd进不去

应该用 WORKDIR /home 进入

原因:

WORKDIR 指定工作目录(或称当前目录),以后各层的当前目录就被改为指定的目录,如该目录不存在,WORKDIR 会自行创建。

Dockerfile 不能等同于 Shell 脚本来书写,下面是错误写法:

RUN cd /app
RUN echo "hello" > world.txt

此 Dockerfile 构建镜像,会发现找不到 /app/world.txt 文件,或者其内容不是 hello 。

在 Shell 中,连续两行是同一个进程执行环境,因此前一个命令修改的内存状态,会直接影响后一个命令;

而在 Dockerfile 中,这两行 RUN 命令的执行环境根本不同,是两个完全不同的容器。

每一个 RUN 都会启动一个容器、执行命令、然后提交存储层文件变更。

第一层 RUN cd /app 的执行仅仅是当前进程的工作目录变更,一个内存上的变化而已,其结果不会造成任何文件变更。

第二层启动的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

戴国进

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值