如何在 Docker 容器中复制和提取 .tar 文件

How to Copy and Extract a .tar file inside a Docker Container

我有一个场景,我需要将一个 .tar 文件复制到 docker 容器中,并将内容提取到容器内的特定文件夹中。那么我们是否有任何特定的命令来处理这种情况?

只需在 Dockerfile 中使用 ADD 指令即可。这是示例:

FROM ubuntu:18.04

ADD ./file.tar /root/

CMD "/bin/bash"

然后:

docker run -it --rm ubuntu:test
root@a6ce756694a1:/# ls /root/
test.file
root@a6ce756694a1:/#

有几个选项,具体取决于您的具体用例:

1。 Dockerfile 中的 COPY 指令

参见 documentation,此命令允许您将文件从主机复制到 您的图像 到指定路径。因此,每次启动新容器时,它都会在那里(很明显,因为它是图像的一部分)。

2。装载卷

如果您想将 .tar 文件传递​​到特定容器中,您可以使用 --mount-v 这样的命令:

$ docker run \
  --name mycontainer \
  --mount source=/path/to/folder/containing/tar/file,target=/target \
  myimage

此操作后 /path/to/folder/containing/tar/file 将可用于 /target 下的容器,因此您可以通过路径 /target/myfile.tar

使用该文件

我建议使用此选项,因为这是更可调的方法。

假设你的 tar 文件是相对于 build/distributions/my-app.tar 的上下文目录的,下面将复制 tar 文件 到 WORKDIR,取消tar它,然后删除它。

WORKDIR /usr/share
COPY --chown=daemon:daemon build/distributions/my-app.tar .
RUN tar -xf my-app.tar && rm my-app.tar