- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我们可以在docker中有一个数据卷:
$ docker run -v /path/to/data/in/container --name test_container debian
$ docker inspect test_container
...
Mounts": [
{
"Name": "fac362...80535",
"Source": "/var/lib/docker/volumes/fac362...80535/_data",
"Destination": "/path/to/data/in/container",
"Driver": "local",
"Mode": "",
"RW": true
}
]
...
但是,如果数据卷位于 /var/lib/docker/volumes/fac362...80535/_data
中,与使用 挂载文件夹中的数据有什么不同吗? -v/path/to/data/in/container:/home/user/a_good_place_to_have_data
?
最佳答案
虽然使用卷和绑定(bind)挂载的感觉相同(唯一的变化是目录的位置),但在行为上存在差异。
卷与绑定(bind)安装
相对于绑定(bind)安装的卷优势:
编辑(9.9.2019):
根据@Sebi2020 评论,绑定(bind)挂载更容易备份。 Docker 不提供任何命令来备份卷。您必须使用带有绑定(bind)挂载的临时容器来创建备份。
音量
Created and managed by Docker. You can create a volume explicitlyusing the docker volume create command, or Docker can create a volumeduring container or service creation.
When you create a volume, it is stored within a directory on theDocker host. When you mount the volume into a container, thisdirectory is what is mounted into the container. This is similar tothe way that bind mounts work, except that volumes are managed byDocker and are isolated from the core functionality of the hostmachine.
A given volume can be mounted into multiple containers simultaneously.When no running container is using a volume, the volume is stillavailable to Docker and is not removed automatically. You can removeunused volumes using docker volume prune.
When you mount a volume, it may be named or anonymous. Anonymousvolumes are not given an explicit name when they are first mountedinto a container, so Docker gives them a random name that isguaranteed to be unique within a given Docker host. Besides the name,named and anonymous volumes behave in the same ways.
Volumes also support the use of volume drivers, which allow you tostore your data on remote hosts or cloud providers, among otherpossibilities.
绑定(bind)坐骑
Available since the early days of Docker. Bind mounts have limitedfunctionality compared to volumes. When you use a bind mount, a fileor directory on the host machine is mounted into a container. The fileor directory is referenced by its full path on the host machine. Thefile or directory does not need to exist on the Docker host already.It is created on demand if it does not yet exist. Bind mounts are veryperformant, but they rely on the host machine’s filesystem having aspecific directory structure available. If you are developing newDocker applications, consider using named volumes instead. You can’tuse Docker CLI commands to directly manage bind mounts.
还有tmpfs mounts
。
tmpfs 挂载
A tmpfs mount is not persisted on disk, either on the Docker host orwithin a container. It can be used by a container during the lifetimeof the container, to store non-persistent state or sensitiveinformation. For instance, internally, swarm services use tmpfs mountsto mount secrets into a service’s containers.
关于docker 数据量 vs 挂载的主机目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34357252/
我正在尝试创建1-click快捷方式,以便在上小学时玩一些90年代的旧游戏。 我正在尝试将ISO挂载到特定驱动器 运行程序 确保已卸载驱动器,以清除下一个要清除的游戏 我是脚本新手,所以我不确定从哪里
我正在运行 docker compose 命令以在 docker 中运行应用程序。但是,yml 中定义的卷是空的。如果我挂载一个文件,它就可以工作。但是,当我从 Windows 挂载目录时,我可以看到
我有一个双向滚动的无限滚动列表。该列表显示每行 5 个项目的网格,表示一周 7 天中的 5 个工作日。日子是按月剥离的斑马线(甚至月份的颜色略深)。我想将月份标题放在网格左侧的一列中,从该月的第一天或
我在按照 qemu/linaro 教程尝试执行 qemu, https://developer.mozilla.org/en-US/docs/Mozilla/Developer_guide/Vir
我正在尝试挂载 cephfs,密码没问题: mount -t ceph ceph-mon:6789:/docker/mnt/cephfs -o name=admin,secret=admin-pass
我可以将 HDFS 目录(在 Ubuntu 中配置)挂载到 Windows 服务器的驱动器吗? 映射后,例如 H:\--->\home\user1\HDFSCreatedDir ,想使用普通的 Jav
我有一个由 500 个 linux 机器组成的集群,现在需要使用带有绑定(bind)选项的挂载资源(参见 man 8 mount)来支持 chroot jail 。安装点需要在引导后强制执行和维护。我
我在一些代码片段和 Requests documentation 中看到过类似的事情。 : import requests sess = requests.Session() adapter = re
嗨,我正在编写一个安装cgroup的应用程序,如下所示 mount("cgroup", "/sys/fs/cgroup", "tmpfs",0,NULL); 我可以执行此操作,但是我想添加一个检查以了
我希望使用 Powershell 获取 VHD 安装的驱动器号。我可以使用以下 cmdlet 挂载 VHD: Mount-VHD -Path d:/tmp.vhdx 安装工作正常,但是当我尝试获取驱动
我正在编写一个脚本来创建坐骑。我使用的系统命令是: sudo /bin/mount -soft -t smbfs -o username='{username}',password='{passwor
我正在尝试在多个用户之间共享 NFS 安装。我无法让它工作,因为我总是被拒绝访问。我可以挂载共享,但看不到文件。 导出是通过Heartbeat+Pacemaker进行的。我认为这没有什么区别,但这是导
已关闭。此问题不符合Stack Overflow guidelines 。目前不接受答案。 这个问题似乎不是关于 a specific programming problem, a software
已关闭。此问题不符合Stack Overflow guidelines 。目前不接受答案。 已关闭 9 年前。 此问题似乎与 a specific programming problem, a sof
我最近全新安装了elementary OS,与Windows 8.1双启动。安装完成后,我编辑了eOS的fstab文件,使其自动在/mnt/Windows地址挂载一个ntfs分区。后来我关闭了笔记本电
我正在尝试在装有 Android 2.1 的模拟器上分析 Android 恶意软件。我想在执行可疑应用程序后分析文件权限和指纹。我知道,我可以使用 adb shell 来获取此信息,但我认为在执行例如
在使用 Webpack 和 Vue 编译项目后,当我打开一个使用 Vue 组件的页面时,我得到: [Vue warn]: Failed to mount component: template or
我正在使用 Linux Inotify 来检测程序上的 FS 事件。 当设备挂载到监控目录时如何通知我? 最佳答案 我不认为你可以用 inotify 来做到这一点。这是方法: 阅读uevents fr
有几篇文章对理解 Docker 的卷和数据管理非常有帮助。这两个尤其出色: http://container-solutions.com/understanding-volumes-docker/ h
我正在使用 mount -o bind /some/directory/here /foo/bar 我想用 bash 脚本检查 /foo/bar,看看它是否已经挂载?如果不是,则调用上面的 mount
我是一名优秀的程序员,十分优秀!