docker - Docker COPY 成功但检查无文件
问题描述
我把这一行放在我的 Docker 文件中。
COPY gorpyter_tutorial.ipynb /usr/local/man
此消息显示在 上build
。
Step 4/10 : COPY gorpyter_tutorial.ipynb /usr/local/man
---> b4b53dc0c6b1
但是当我exec... /bin/bash
进入容器时,它不在期望目录或任何其他目录中。
$ cd ~
$ find * gorpyter_tutorial.ipynb
'find: ‘gorpyter_tutorial.ipynb’: No such file or directory'
不过,我的其他更改(例如设置环境变量和安装库)正在成功运行。
Dockerfile
FROM jupyter/datascience-notebook:latest
MAINTAINER layne sadler <lsadler@wuxinextcode.com>
USER root
COPY gorpyter_tutorial.ipynb /usr/local/man
RUN sudo apt-get update && sudo apt-get install openjdk-8-jdk -y
ENV JUPYTER_ENABLE_LAB=yes
ENV NOTEBOOK_DIR=/usr/local/man
ENV R_HOME=/opt/conda/lib/R
ENV JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java
WORKDIR /usr/local/man
# https://refspecs.linuxfoundation.org/FHS_3.0/fhs/ch04s09.html
码头工人-compose.yml
version: "3"
services:
jupyter:
image: "hashrocketsyntax/gorpyter:skyline"
ports:
- "8888:8888"
volumes:
- /Users/laynesadler/Desktop/notebooks:/usr/local/man
我不允许复制到/usr/local/man
卷中吗?
解决方案
您的 Dockerfile 包含创建映像的说明。镜像构建完成后,可以将镜像作为容器运行。
启动容器时附加了一个卷。
因此,在构建映像时使用 Dockerfile 指令将文件复制到卷中是没有意义的。因此,只有在容器启动后才存在卷。
卷是在 Docker 容器和服务中持久保存数据的首选方式。卷的一些用例包括:
在多个正在运行的容器之间共享数据。如果您没有显式创建它,则会在第一次将其挂载到容器中时创建一个卷。当该容器停止或移除时,该卷仍然存在。多个容器可以同时挂载同一个卷,无论是读写还是只读。仅当您明确删除它们时才会删除卷。
当 Docker 主机不能保证具有给定的目录或文件结构时。卷可帮助您将 Docker 主机的配置与容器运行时分离。
当您想将容器的数据存储在远程主机或云提供商上而不是本地时。
当您需要从一台 Docker 主机备份、恢复或迁移数据到另一台主机时,卷是更好的选择。您可以停止使用该卷的容器,然后备份该卷的目录(例如 /var/lib/docker/volumes/)。
推荐阅读
- python - 嵌套理解列表:即使在循环内,变量也不存在
- reactjs - ApexCharts 不显示工具栏
- angular - NgRx 在多个状态获取数据时触发选择器
- python - Ptrace 获取执行文件名
- javascript - 无法读取 null 的属性“getContext”(没有 jQuery)
- android - 如何从 FlowRow 中删除填充?
- css - 每次在屏幕上更改位置时如何自动为元素设置动画?
- php - 使用 PHP 中的第三章格式化 Apple News API
- python - TypeError:无法将 'CategoricalDtype(categories=['no', 'yes'], ordered=False)' 解释为数据类型
- cloud - Pivotal Cloud Foundry 死了吗?