Docker教程小白实操入门(13)--如何使用COPY和ADD复制文件到容器内

一、需求

往Docker中复制文件

 

二、复制指令-COPY

COPY 指令将从构建上下文目录中 <源路径> 的文件或目录复制到新的一层的镜像内的 <目标路径> 位置。

COPY <源路径> <目标路径>;
  • <源路径>所指定的源必须在上下文中,即必须是上下文根目录的相对路径
  • <目标路径> 可以是容器内的绝对路径,也可以是相对于工作目录的相对路径(工作目录可以用 WORKDIR指令来指定,后面介绍)。
  • 目标路径不需要事先创建,如果目录不存在会在复制文件前先行创建目录。

三、复制指令-ADD

ADDCOPY指令在功能上十分相似。

ADD <源路径> <目标路径>;
  • 源路径可以是一个指向一个网络文件的URL,这种情况下,Docker引擎会试图下载这个URL指向的文件到<目标路径>去。
  • 当<源路径>为一个tar压缩文件时,该压缩文件在被复制到容器中时会被解压提取。但是使用COPY指令只会将tar压缩文件拷贝到<目标路径>中

四、实例

#创建一个空文件夹,并进入其中
mkdir newdir2
cd newdir2
#创建一个文件夹dir1,将其压缩得到dir1.tar,然后删除文件夹dir1
mkdir dir1 && tar -cvf dir1.tar dir1 && rmdir dir1
#创建一个Dockerfile文件
touch Dockerfile

#输入Dockerfile文件内容
#********** Begin *********#
#以busybox为基础镜像
echo 'FROM busybox' > Dockerfile
echo 'RUN mkdir dir1'>> Dockerfile

#并将上下文目录下的dir1.tar“解压提取后”,拷贝到busybox:v3的/
echo 'ADD ./dir1.tar /'>> Dockerfile

#********** End **********#

#文件内容完毕,在当前文件夹中执行
#********** Begin *********#
#以该Dockerfile构建一个名为busybox:v3的镜像
docker build -t busybox:v3 .
#********** End **********#

docker run busybox:v3 ls /

参考:https://www.educoder.net/shixuns/zawfjtnm/challenges

猜你喜欢

转载自blog.csdn.net/u013288190/article/details/108935985
今日推荐