将文件从 GCP 复制到 docker 容器

Posted

技术标签:

【中文标题】将文件从 GCP 复制到 docker 容器【英文标题】:Copy file from GCP to docker container 【发布时间】:2021-07-14 13:12:27 【问题描述】:

我必须将文件从 gcp 位置复制到 docker 映像中的特定目录。我使用 ubuntu:bionic 作为父图像。

安装 Python 和 Pip 后,我尝试了以下操作,

 RUN pip install gsutil \
   && gsutil cp gs:<some location> /home/$USER/<some other location>

在构建 docker 映像时,出现以下错误,

    13 19.84 /bin/sh: 1: gsutil: not found

请让我知道我正在做的错误。

【问题讨论】:

您能分享一下您是如何安装 Python 和 PIP 的吗? 您是否只想在构建期间使用 gsutil 下载文件?您是否在该容器上使用 gsutil 来处理其他任何事情? 【参考方案1】:

在 Docker 容器docker exec -it (container name) bin/bash 中使用 Bash 并一次运行每个命令,如果命令成功,然后添加到 dockerfile,这将对您有很大帮助。

【讨论】:

谢谢沙奇尔。你能不能也给我一个例子。【参考方案2】:

您的问题的最佳解决方案取决于您是需要在容器内将gsutil 用于其他目的,还是仅用于复制文件。

    如果您只需要使用gsutil 复制文件,最好使用multi-stage build in Docker,这样您的最终容器就不会安装额外的工具(在这种情况下是Cloud SDK)。这样会轻很多。 Dockerfile 将是:
FROM google/cloud-sdk:latest
RUN gsutil cp <src_location> <intermediate_location>

FROM ubuntu:bionic
COPY --from=0 <intermediate_location> <dst_location>
    如果您需要gsutil 来在您的容器中进行进一步操作,在 ubuntu 中安装它的 Dockerfile 如下:
FROM ubuntu:bionic

RUN apt-get update && \
    apt-get install -y curl gnupg && \
    echo "deb [signed-by=/usr/share/keyrings/cloud.google.gpg] http://packages.cloud.google.com/apt cloud-sdk main" | tee -a /etc/apt/sources.list.d/google-cloud-sdk.list && \
    curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key --keyring /usr/share/keyrings/cloud.google.gpg  add - && \
    apt-get update -y && \
    apt-get install google-cloud-sdk -y

RUN gsutil cp <src_location> <dst_location>

【讨论】:

以上是关于将文件从 GCP 复制到 docker 容器的主要内容,如果未能解决你的问题,请参考以下文章

如何将文件/文件夹从 Windows 共享位置复制到 docker 容器中?

docker cp:从容器复制文件到宿主机,从宿主机复制文件到容器

docker cp:从容器复制文件到宿主机,从宿主机复制文件到容器

docker cp:从容器复制文件到宿主机,从宿主机复制文件到容器

在构建期间将文件从 GCS 复制到 Cloud Run docker 容器中

如何将文件(.txt 格式)从我的计算机复制到 docker 容器 [重复]