如何在 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
我有一个场景,我需要将一个 .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