mirror of
https://github.com/yeasy/docker_practice.git
synced 2024-12-27 07:26:21 +00:00
5aec4fae19
由于定制镜像是 Docker 使用环境的重中之重,因此将原来的 `image/create.md` 扩展为4篇:`image/commit.md`, `image/build.md`, `image/dockerfile/*`, `image/other.md`。其中 `dockerfile` 进一步扩展,包括大部分指令详解。 由于 `image/dockerfile/*` 已经涵盖了 `dockefile/*` 的内容,并且增加了很多。因此去掉了原有的 `dockerfile/` 章节。从另一个角度来看,相当于是将后续 `dockerfile` 章节前移。 Dockerfile 是镜像构建必须掌握的技能,在介绍镜像定制的时候,就应该将其详细讲解。 将 `image/save_load.md` 合并到 `image/other.md` 并重写。docker import, export, save, load 是不常使用的命令,他们是早期 Docker 生态环境不完善的时候留下来的东西,现在已经不推荐使用,因此将这些方法合并到一篇里作为了解即可。 Signed-off-by: Tao Wang <twang2218@gmail.com>
26 lines
1.2 KiB
Markdown
26 lines
1.2 KiB
Markdown
### COPY 复制文件
|
|
|
|
格式:
|
|
|
|
* `COPY <源路径>... <目标路径>`
|
|
* `COPY ["<源路径1>",... "<目标路径>"]`
|
|
|
|
和 `RUN` 指令一样,也有两种格式,一种类似于命令行,一种类似于函数调用。
|
|
|
|
`COPY` 指令将从构建上下文目录中 `<源路径>` 的文件/目录复制到新的一层的镜像内的 `<目标路径>` 位置。比如:
|
|
|
|
```Dockerfile
|
|
COPY package.json /usr/src/app/
|
|
```
|
|
|
|
`<源路径>` 可以是多个,甚至可以是通配符,其通配符规则要满足 Go 的 [`filepath.Match`](https://golang.org/pkg/path/filepath/#Match) 规则,如:
|
|
|
|
```Dockerfile
|
|
COPY hom* /mydir/
|
|
COPY hom?.txt /mydir/
|
|
```
|
|
|
|
`<目标路径>` 可以是容器内的绝对路径,也可以是相对于工作目录的相对路径(工作目录可以用 `WORKDIR` 指令来指定)。目标路径不需要实现创建,如果目录不存在会在复制文件前先行创建缺失目录。
|
|
|
|
此外,还需要注意一点,使用 `COPY` 指令,源文件的各种元数据都会保留。比如读、写、执行权限、文件变更时间等。这个特性对于镜像定制很有用。特别是构建相关文件都在使用 Git 进行管理的时候。
|