簡體   English   中英

如何使用 Dockerfile 將目錄從 docker 容器復制到主機?

[英]How to copy a directory from docker container to host using Dockerfile?

我正在使用以下 Dockerfile 使用 docker 容器構建 asp.net 項目。

FROM mcr.microsoft.com/dotnet/aspnet:3.1 AS base
WORKDIR /app
EXPOSE 80
EXPOSE 443

FROM mcr.microsoft.com/dotnet/sdk:3.1 AS build
WORKDIR /src
COPY . .
WORKDIR "/src/IdentityANSP/"
RUN dotnet build "IdentityANSP.csproj" -c Release -o /app

FROM build AS publish
RUN dotnet publish "IdentityANSP.csproj" -c Release -o /app

FROM base AS final
WORKDIR /app
COPY --from=publish /app .
ENTRYPOINT ["dotnet", "IdentityANSP.dll"]

在這里,構建的工件將放置在新的 docker 映像中。 相反,我希望將工件復制到 Docker 主機(localhost)中的目錄。 為此,我應該如何更改 Dockerfile?

PS:我是 Docker 和 stackoverflow 的新手。 所以,請忽略我在問題中的錯誤。 謝謝

長話短說(有關詳細信息,請參閱答案),您不能讓 Dockefile 提取構建工件。 但是,您可以從正在運行的容器中復制文件:

# Build the image
docker build -t my_image .

# Spin up a container from the image
docker run --rm -d --name my_temporary_container my_image

# Copy file
docker cp my_temporary_container:/path/in/container /host/path

# Stop the container
docker stop my_temporary_container

如果有問題的圖像需要很長時間才能啟動或需要一些外部文件/變量/等,您可以覆蓋默認命令,以便它優雅地什么都不做:

# Start a container that endlessly reads its own stdout stream
docker run --rm -d --name my_temporary_container --entrypoint="" my_image /bin/cat /dev/stdout

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM