Skip to content

Latest commit

 

History

History
37 lines (27 loc) · 1.46 KB

File metadata and controls

37 lines (27 loc) · 1.46 KB
description
把外部文件复制到构建的容器里,因为commit所以会到镜像里,也可以说把文件复制到镜像里

COPY

用法

COPY <src>  <dest>  
COPY ["<src>",... "<dest>"]  
COPY home* /home

复制本地的文件到容器中的目录,目录不存在则会自动创建,源可以是多个。在低版本的docker里如果源是绝对路径例如/root/data/nginx的话会把整个系统的根上传到docker daemon,会发现上传的内容等同于根的已用容量,例如下面

$ cat Dockerfile
FROM alpine
COPY /root/data/nginx.tar.gz /root/home
$ docker build -t test .
Sending build context to Docker daemon  7.8GB

主要是因为上下文的概念,认为上下文的根是client的/,所以会把客户端的/上传到docker daemon,现在新版本是强制相对路径了,如果是绝对路径会报错。相对路径相对于build最后的.这个上下文路径为相对路径。

另外COPY还能指定uid:gid,如果容器的rootfs里没有文件/etc/passwd/etc/group文件只能使用数字不能使用组名

COPY --chown=55:mygroup files* /somedir/
COPY --chown=bin files* /somedir/
COPY --chown=1 files* /somedir/
COPY --chown=10:11 files* /somedir/

COPY接受一个标志--from=<name|index>,该标志可用于将源位置设置为FROM .. AS <name> 主要用于多阶段构建,后面会举个例子来讲解多阶段构建,多阶段构建是17.05之后才出现的功能