通过NFS暴露/var/lib/docker以服务于内存有限的主机的影响
在NFS上导出/var/lib/dock的含义是什么?这个想法是将Docker图像存储在服务器中,并将其导出到主机,该主机存储和运行容器的内存有限.这对于避免每个主机下载并存储它自己的Docker映像库将很有用.主机可以利用FS-CACHE来限制网络的数据传输. 解决方案 /var/lib/docker目录设计为单个守护程序专门访问,并且应该与多个守护程序共享永远不会共享. 让多个守护程序使用相同的/var/lib/docker可能导致许多问题,并可能导致数据损坏. 例如,守护程序保持在使用哪些图像的内存状态(通过容器),哪些不使用;使用这些图像的多个守护程序无法跟踪(另一个守护程序可能正在使用图像),并在使用时删除图像. docker还将其他各种文件存储在/var/lib/docker中,例如用于用户定义网络的密钥/值存储,该网络并非由多个守护程序同时访问.
42 2023-04-22
编程技术问答社区
根据联合文件系统,图像实际上是另一个图像的容器吗?
在Docker中,图像是仅读取图像层的堆栈.我们还知道图像共享图层或其他图像.我的问题是关于这种共享机制如何工作. 图像是否对Docker存储驱动器有指针,还是实际上包含其他层?如果第一个是正确的,这是否意味着Dockerfile将这些层保存到守护程序中,并且图像是检索这些层有序的指示? 解决方案 这取决于您的 Docker使用存储驱动程序来管理图像层和可写容器层的内容. 每个存储驱动程序的处理方式都不同,但是所有驱动程序都使用可堆叠的图像层和复印件(cow)策略. 复印件是共享和复制文件以提高效率的策略. 如果图像内的较低层中存在文件或目录,而另一层(包括可写的层)需要读取对其的访问,则仅使用现有文件. 第一次需要修改文件(构建图像或运行容器)时,将文件复制到该层中并修改.这可以最大程度地减少I/O和随后的每个层的大小. 现在,在运行时: 启动容器时,在其他层的顶部添加了薄的可写容器层.容器对文件系统的任何更改都存储在此处.该容器不更改的
18 2023-04-18
编程技术问答社区
如何分析Docker容器的磁盘使用情况
我可以看到Docker采用了我的文件系统的12GB: 2.7G /var/lib/docker/vfs/dir 2.7G /var/lib/docker/vfs 2.8G /var/lib/docker/devicemapper/mnt 6.3G /var/lib/docker/devicemapper/devicemapper 9.1G /var/lib/docker/devicemapper 12G /var/lib/docker 但是,我怎么知道这是如何在容器上分发的? 我尝试通过运行(新的v1.3命令) 将其连接到容器上 docker exec -it bash 然后运行'df -h'以分析磁盘使用情况.它似乎在起作用,但与使用"卷"的容器不起作用. 例如,我为mongodb使用一个仅数据容器,称为" mongo-data". 当我运行docker run -it --vo
36 2023-03-30
编程技术问答社区
创建设备映射器目标
我正在尝试通过参考已经存在的DM线性,DM-SNAPSHOT,DM-CACHE等来实现设备映射器目标.在我的实现中,我需要在某个扇区上执行读取/修改/写入操作范围.由于设备映射器直接与块层进行对话,因此我不确定要使用哪些数据结构/功能来读取内存中的扇区,修改缓冲区并将其写回另一个扇区范围. 在应用程序级别,我们有SYSCALL,在下面我们有VFS_READ/VFS_WRITE.设备映射层有类似的东西吗? 我已经被困在这里很长时间了.任何帮助将不胜感激. 解决方案 注意:我的答案与内核版本 在内核中,您读/编写 struct bio .该结构用于所有块级I/O.可以找到全面的文档 lwn .这些是该结构中最重要的几个成员: bio->bi_sector - 块I/O请求的第一部门 bio->bi_size - I/O请求的大小 bio->bi_bdev - 读/写的设备 bio->bi_end_io - 内核将在请求结束时呼叫 的回调 您在设备映射器目标中所做
84 2023-03-09
编程技术问答社区
如何正确清理docker devicemapper文件夹?
我对存储有一些问题.文件夹/var/lib/docker/devicemapper/正在占据我的存储空间的50%. 在文件夹中/var/lib/docker/devicemapper/mnt ,我有许多空文件夹. 我如何正确清洁码头 devicemapper 并删除所有未使用的映射? 解决方案 使用Docker的最新版本,您可以看到以下空间: docker system df 并用: 修剪它 docker system prune 上面的命令结合了 Prune 命令,该命令存在于卷,容器,图像和网络: docker volume prune docker container prune docker image prune docker network prune 每个命令都有一个--help选项记录-f(--force)选项,以避免问您问题.它必须小心地使用. -o- 在Docker的较旧版本上,我运行
646 2022-08-28
编程技术问答社区
由于设备映射器错误,无法运行Docker容器
我再也无法创建并在Docker中运行新容器了. 但是与此同时,可以运行以前创建的容器. 当我尝试做这样的事情时: [user@host ~ ] docker run --name=fpm-5.3 debian:jessie 2014/07/12 07:34:08 Error: Error running DeviceCreate (createSnapDevice) dm_task_run failed 来自 docker.log : 2014/07/12 05:57:11 POST /v1.12/containers/create?name=fpm-5.3 [f56fcb6f] +job create(fpm-5.3) Error running DeviceCreate (createSnapDevice) dm_task_run failed [f56fcb6f] -job create(fpm-5.3) = ERR (1) [error] server.go
36 2022-08-28
编程技术问答社区
为什么docker镜像占用了我的磁盘空间,而docker却没有使用这些空间?
我已经设置了Docker,我使用了完全不同的块设备来存储Docker的系统数据: [root@blink1 /]# cat /etc/sysconfig/docker # /etc/sysconfig/docker other_args="-H tcp://0.0.0.0:9367 -H unix:///var/run/docker.sock -g /disk1/docker" 请注意, /disk/1 正在使用完全不同的硬盘驱动器 /dev/xvdi Filesystem Size Used Avail Use% Mounted on /dev/xvda1 7.8G 5.1G 2.6G 67% / devtmpfs 1.9G 108K 1.9G 1% /dev tmpfs 1.9G 0 1.9G 0% /dev/shm /dev/xvdi 20G 5.3G 15G
58 2022-08-28
编程技术问答社区
清洁docker环境:devicemapper
我有一个带有2个容器的Docker环境(Jenkins和Nexus,都有自己的命名量). 我每天都有一个cron-job删除未使用的容器和图像.这很好.但是问题在我的devicemapper内部: du -sh /var/lib/docker/ 30G docker/ 我可以在我的Docker文件夹中的每个文件夹: 卷(大,但在我的情况下这是正常的): /var/lib/docker# du -sh volumes/ 14G volumes/ 容器: /var/lib/docker# du -sh containers/ 3.2M containers/ 图像: /var/lib/docker# du -sh image/ 5.8M image/ devicemapper: /var/lib/docker# du -sh devicemapper/ 16G devicemapper/ /var/lib/docker/d
42 2022-08-28
编程技术问答社区
Docker-如何分析一个容器的磁盘使用情况?
我已经搜索了一段时间,但找不到分析 Docker 容器/卷的磁盘使用情况的方法. 我可以看到 Docker 占用了我的文件系统的 12GB: 2.7G /var/lib/docker/vfs/dir 2.7G /var/lib/docker/vfs 2.8G /var/lib/docker/devicemapper/mnt 6.3G /var/lib/docker/devicemapper/devicemapper 9.1G /var/lib/docker/devicemapper 12G /var/lib/docker 但是,我怎么知道它是如何分布在容器中的? 我尝试通过运行(新的 v1.3 命令)附加到容器 docker exec -it bash 然后运行'df -h'来分析磁盘使用情况.它似乎有效,但不适用于使用“volumes-from"的容器. 例如,我为 MongoDB 使
1634 2022-07-17
编程技术问答社区