分享一些Dockerfile新手会遇到的坑

简介: 分享一些Dockerfile新手会遇到的坑

分享一些Dockerfile新手会遇到的坑

先说这不是教程啊,我也是新手,如果你还不清楚基本的用法,建议直接阅读Dockerfile reference

COPY会遇到的坑

一般官网都会放上COPY用法的指令,但是通过看指令,实在是不敏感,甚至会出现很多误解的情况,最后导致docker build不成功。

用法我还是贴一下

COPY [--chown=<user>:<group>] <src>... <dest>
COPY [--chown=<user>:<group>] ["<src>",... "<dest>"]

COPY的作用是可以将本地的组建复制到容器当中去,在构建镜像的时候使用,分享两个官网例子看一下

COPY test.txt relativeDir/

复制test.txt文件到relativeDir目录去,但是他使用了相对路径,dockerfile就会根据上一个WORKDIR来拼接路径

那最后test.txt文件的位置就会在<WORKDIR>/relativeDir/。

如果使用绝对路径就不会有这个问题,来看

COPY test.txt /absoluteDir/

注意这都不是坑,目前来说都很OK,新手可能会发现这好像跟Linux系统的cp命令差不多啊。

坑在于,官网没有给复制目录的用例,但是在下方用文字来做补充解释了,如果新手没看到,就会踩坑。

坑点在于

  • 如果<src>是一个目录,那么包括文件系统的metadata,目录内全部的内容会被复制,注意!目录本身不会被复制

我们创建一个repo目录,然后在内部创建一个test.txt,像这样/app/repo/test.txt

现在我们要复制repo内所有的内容进入容器

如果你理解成CP了,那么你可能会把这条命令写成这样

WORKDIR /app
COPY ./repo/ ./

后续的构建还需要利用repo里面的东西,此刻你可能觉的容器内的目录已经被你构建成了这样/app/repo/test.txt

实际上,容器内部的目录结构需要你自己构建,repo目录并不会复制过去

结果是这样的


image.png


如果你理解成CP

改成

COPY ./repo/ /repo/


image.png


相关文章
|
存储 Linux 应用服务中间件
基于CentOS 7.6的Docker新手教学
采用本地虚拟机+阿里云镜像加速器
1100 5
基于CentOS 7.6的Docker新手教学
|
3月前
|
缓存 Shell Go
dockerfile笔记
dockerfile笔记
44 0
|
26天前
|
人工智能 Oracle jenkins
【Jenkins】新手安装、运行Jenkins(详细教学)
【Jenkins】新手安装、运行Jenkins(详细教学)
|
4月前
|
前端开发 应用服务中间件 nginx
Docker项目部署
Docker项目部署
765 1
Docker项目部署
|
6月前
|
应用服务中间件 Shell nginx
Dockerfile企业实战教程
Dockerfile企业实战教程
|
JavaScript Linux Docker
从最简单的Dockerfile开始!Dockerfile计划第二期
从最简单的Dockerfile开始!Dockerfile计划第二期
|
运维 Java Shell
Dockerfile学习
Dockerfile学习笔记
|
Docker 容器
Dockerfile笔记
照着写就行
90 0
Dockerfile笔记
|
Ubuntu 开发工具 Docker
Dockerfile使用介绍(入门教程)
Dockerfile 是一个文本文件,其内包含了一条条的指令,每一条指令构建一层,因此每一条指令的内容,就是描述该层应当如何构建。有了 Dockerfile,当我们需要定制自己额外的需求时,只需在 Dockerfile 上添加或者修改指令,重新生成 image 即可。
301 0
Dockerfile使用介绍(入门教程)
|
运维 应用服务中间件 Linux
DockerFile知识点与运用
DockerFile知识点与运用
87 0
DockerFile知识点与运用

相关实验场景

更多