docker - 使用Dockerfile将文件从Container复制到主机

标签 docker dockerfile

我正在编写一个Docker File,我的要求是将容器内文件夹的内容复制到本地主机。我怎样才能做到这一点?

FROM ubuntu

RUN apt-get update && apt-get install -y apache2 && apt-get  install nginx  -y


#COPY resources   /var/www/html/

#VOLUME /var/www/html:/var/www/html

COPY /var/www/html/ /var/www/html/
CMD ["nginx", "-g", "daemon off;"]

最佳答案

在构建过程中将文件从容器复制到主机可能是一个坏主意。您应该认真考虑您的用例。

但是,可以这样做,我将与您分享一个过程,因为这对我来说是展示我的Docker知识的机会-并不是因为我认为您应该这样做。还有其他方法可以做到这一点。我的方法没有好坏之分-它们全都是弊端。

  • https://success.docker.com/article/how-do-i-enable-the-remote-api-for-dockerd中所述修改您的dockerd配置。基本上添加-H tcp://0.0.0.0:2376。这是一个非常危险的过程,因为它打开后会被网络上的任何人 Root 。有很多方法可以通过身份验证来减轻这种风险,但实际上最好的方法是只是不要这样做
  • 修改您的Dockerfile:
  • 在RUN块之前添加ARG DOCKER_HOST
  • 在运行块中:
  • 安装docker。
  • 添加`export DOCKER_HOST = $ {DOCKER_HOST}。
  • 添加docker container run --mount type=bind,source=/,destination=/srv/host alpine:3.4 ...
  • 确定主机的IP地址。让我们假设它是10.10.20.100。
  • 通过添加--build-arg DOCKER_HOST = 10.10.20.100来修改构建命令。

  • 在步骤2.2.3中,您已经根主机计算机,并且可以执行所需的任何操作-包括写入任何文件。

    这是一个愚蠢的主意,但是它表明,由于您可以在内部版本中运行docker,因此确实没有什么您不能在内部版本中执行。如果要从内部版本运行gui应用程序,则可以执行此操作。

    关于docker - 使用Dockerfile将文件从Container复制到主机,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50833148/

    相关文章:

    docker - 如何在特定时间每天运行容器

    linux - 停止 docker 容器后,之前运行的容器无法启动

    mysql - docker 组成 : MySQL Syntax Error "DELIMITER" On Line 1

    docker - 无法运行从 ISO 创建的 docker 镜像

    docker - 如何从 Dockerfile 上的父镜像中删除入口点

    c# - 如何在.NET Core中使用多个项目创建docker镜像?

    node.js - 无法将调试器附加到 Docker Node 8.9.x

    nginx - docker run、docker exec 和日志

    docker - 为什么我无法获得ocaml/opam:ubuntu-16.04_ocaml-4.03.0 docker镜像?

    python - 如何从 Dockerized Python Web 应用程序提供静态文件?