1. COPY
1.1. 指令
COPY [--chown=<user>:<group>] <源路径>... <目标路径>
COPY [--chown=<user>:<group>] ["<源路径1>",... "<目标路径>"]
1.2. 描述
COPY 复制文件到容器。
COPY 指令将从构建上下文目录中 <源路径>
的文件或目录复制到新的一层的镜像内的 <目标路径>
位置。比如:
COPY package.json /usr/src/app/
<源路径>
可以是多个,甚至可以是通配符,其通配符规则要满足 Go 的 filepath.Match 规则,如:
COPY hom* /mydir/
COPY hom?.txt /mydir/
<目标路径>
可以是容器内的绝对路径,也可以是相对于工作目录的相对路径(工作目录可以用 WORKDIR 指令来指定)。
此外,还需要注意一点,使用 COPY 指令,源文件的各种元数据都会保留。比如读、写、执行权限、文件变更时间等。这个特性对于镜像定制很有用。特别是构建相关文件都在使用 Git 进行管理的时候。
在使用该指令的时候还可以加上 --chown=<user>:<group>
选项来改变文件的所属用户及所属组。
COPY --chown=55:mygroup files* /mydir/
COPY --chown=bin files* /mydir/
COPY --chown=1 files* /mydir/
COPY --chown=10:11 files* /mydir/
copy复制目录时,默认只是复制目录中的内容,而不会复制当前的目录。目录路径中目录不存在时会自动创建,但在填写时需要明确指定。例如
COPY tomcat /usr/local/tomcat/
这里会把 tomcat目录中的内容复制到 /usr/local/tomcat 中。如果目标目录写成 /usr/local/ ,则会缺少tomcat这一层目录。
COPY指令还支持通过网络复制文件
COPY --from=hub.c.163.com/qingzhou/etcd:v3.3.13 /usr/local/bin/etcdctl /usr/local/bin/