docker - cd 进入 docker 创建的卷
问题描述
我是码头工人的新手。从一本名为 Learn Fundamentals of Docker 18.x From Packt Publishing 的书中学习它。在 Docker Volume 一章中,作者使用 docker-machine 创建了一个 vm,然后创建了一个名为 my-data 的卷。我在第一个终端窗口中执行了如下命令:
然后作者使用 -v 命令创建了一个挂载该卷的容器。我在第二个终端窗口中执行了如下命令):
当我尝试在我的第一个终端窗口中列出该卷中的文件时,我什么也得不到。
所以我的理解是
- 在 docker 中创建卷。
- 将卷安装在容器中。
- 创建一些数据。
- 退出容器。并且数据将存在。
我还注意到 docker volume inspect my-data 提供了不同的挂载点:
据我所知,它们是不同的卷,对吧?
但我没有在卷中看到任何数据。我的理解正确吗?任何人都可以向我解释 docker 中的卷是如何工作的吗?
另外我想知道如何从我的 Mac 终端导航到这个位置?
提前致谢。
解决方案
您正在运行docker-machine
它实际上在安装了 docker 守护程序的主机上创建了一个虚拟机。当您在那里运行时,它会在 vmdocker volume create
中创建卷。我怀疑您可能是从 docker-machine 外部运行 docker 命令,但您已经在 docker-machine 中创建了卷,这就是它们看起来是不同卷的原因。
理想情况下,您希望将主机配置为在执行任何 docker 命令时与 docker-machine 对话。从文档:
$ docker-machine env default
export DOCKER_TLS_VERIFY="1"
export DOCKER_HOST="tcp://172.16.62.130:2376"
export DOCKER_CERT_PATH="/Users/<yourusername>/.docker/machine/machines/default"
export DOCKER_MACHINE_NAME="default"
# Run this command to configure your shell:
# eval "$(docker-machine env default)"
否则,您对 docker 卷的理解是正确的。Docker 卷由 docker 创建和管理——这意味着它们的物理位置可以在 docker 主机中更改。但是卷中的数据将始终保留,直到您将其删除。根据文档:
创建卷时,它存储在 Docker 主机上的目录中。当您将卷挂载到容器中时,此目录就是挂载到容器中的目录。
推荐阅读
- linux - Logstash 执行命令 Linux 并提取特定字段
- python - 在python中播放m3u8音频流而不保存音频内容
- c# - 如何解析带空格的日期?
- javascript - API 没有显示任何内容
- google-bigquery - 有没有办法通过 JDBC 调用 tabledata.list?
- c++ - 用 asio 收听 127.0.0.1 和 ::1
- javascript - 如何使用 chrome 扩展访问活动选项卡的 DOM
- c# - IE 模式下 Edge 的 C# Selenium 代码抛出 Selenium.WebDriverException - URL 的远程 WebDriver 服务器超时
- boot - ARM 可信固件:BL1 不运行从闪存加载的 BL2 和 BL31?
- javascript - javascript - 如何将数组中的0值转换为JavaScript中的整数?