文件的复制和目录操作
- 往镜像里复制文件有两种方式,
COPY和ADD, 在 COPY 和 ADD 指令中选择的时候,可以遵循这样的原则,所有的文件复制均使用 COPY 指令,仅在需要自动解压缩的场合使用 ADD。 - 镜像目录
WORKDIR,相当于cd [folder],后续ADDCOPY命令会添加文件到此文件夹。
复制普通文件
COPY和ADD都可以把 local 的一个文件复制到镜像里,如果目标目录不存在,则会自动创建。
编写 hello.py, hello.py.add.Dockerfile 和 hello.py.copy.Dockerfile 文件,然后根据 Dockerfile 构建镜像。
# hello.py
print("hello docker, hello jaime~")
# hello.py.add.Dockerfile
FROM python:3.10-alpine3.15
ADD hello.py /app/
# hello.py.copy.Dockerfile
FROM python:3.10-alpine3.15
COPY hello.py /app/使用 docker image ls 和 docker image history 查看镜像大小和分层情况。ADD 和 COPY 改动的文件一样。

复制压缩文件
ADD比COPY高级一点的地方就是,如果复制的是一个 gzip 等压缩文件时,ADD 会帮助我们自动去解压缩文件。
编写 hello.py.add.Dockerfile 和 hello.py.copy.Dockerfile 文件,将 hello.py 压缩为 hello.tar.gz,然后根据 Dockerfile 构建镜像。
# hello.py
print("hello docker, hello jaime~")
# hello.py.add.Dockerfile
FROM python:3.10-alpine3.15
ADD hello.py /app/
# hello.py.copy.Dockerfile
FROM python:3.10-alpine3.15
COPY hello.py /app/- 使用
docker image ls和docker image history查看镜像大小和分层情况。ADD和COPY改动的文件不一样。 - 使用
docker container run -it [image-name]:[tag] ls /app查看容器/app目录的内容。COPY内文件为hello.tar.gz,ADD内文件为hello.py。

目录操作
镜像目录
WORKDIR,相当于cd [folder],后续ADDCOPY命令会添加文件到此文件夹。
编写 hello.py.workdir.Dockerfile 文件,然后根据 Dockerfile 构建镜像。
# hello.gz.workdir.Dockerfile
FROM python:3.10-alpine3.15
WORKDIR /app/
ADD hello.tar.gz .
COPY hello.tar.gz .使用 docker container run -it [image-name]:[tag] ls /app 查看容器 /app 目录的内容。COPY 内文件为 hello.tar.gz,ADD 内文件为 hello.py。

Backlinks
Docker Notes
- 文件的复制和目录操作 [[add-copy]]