在里面docker-compose.yml
我们配置了以下卷
image: confluentinc/cp-kafka:latest
volumes:
- /grid/kafka-data:/var/lib/kafka/data
。
docker-compose ps
Name Command State Ports
-------------------------------------------------------------------------------------------------------------------
kafka-node_kafka_1 /etc/confluent/docker/run Up 0.0.0.0:9092->9092/tcp
据我了解 - kafka docker 容器路径 -/var/lib/kafka/data
被挂载到/var/kafka-data
,当(/var/kafka-data
,是 linux 操作系统的路径)
关于 -/var/kafka-data
此挂载点文件夹已挂载到 OS 磁盘 - /dev/sdb
而磁盘sdb
大小为 - 1.8T byte
让我们总结一下:
/var/lib/kafka/data
kafka docker 分区,并且/var
仅100G
/var/kafka-data
是挂载到 sdb 磁盘的分区(在 Linux 操作系统上)
我想问这个问题以防万一
假设在 kafka docker 分区上 - /var/lib/kafka/data
,大小/var/../data
大于100G
这是否意味着容器分区/var/lib/kafka/data
仅限于100G
??
或者/var
在kafka docker 容器上限制到外部卷呢1.8T byte
?
从 kafka 容器方面我们有:
# df -h /var
Filesystem Size Used Avail Use% Mounted on
overlay 101G 7.5G 94G 8% /
df -h /var/lib/kafka/data/
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/os-rhel_root 101G 7.5G 94G 8% /var/lib/kafka/data
在容器外部,在真正的 Linux 操作系统上,我们有
df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/os-rhel_root 50G 5.3G 45G 11% /
devtmpfs 12G 0 12G 0% /dev
tmpfs 12G 156K 12G 1% /dev/shm
/dev/sdb 1.8T 77M 1.8T 1% /grid/kafka-data
/dev/sda1 492M 158M 335M 32% /boot
/dev/mapper/os-rhel_var 106G 11G 96G 10% /var
tmpfs 26G 0 26G 0% /run/user/1005
tmpfs 26G 20K 26G 1% /run/user/0
overlay 101G 7.5G 94G 8% /var/lib/docker/overlay2/8411835673dfedd5986093eb771582dac7317d99f431b832f3baea8ea1aa3e4d/merged
shm 64M 0 64M 0% /var/lib/docker/containers/629aefd21b6042ebfbf1a0a08a882b2f1865137edfb4b2b02f5c9a1681d895e4/mounts/shm
overlay 101G 7.5G 94G 8% /var/lib/docker/overlay2/b4677bed14050337580958bc903bbb733d9464ca8bfc46124c3c506dc064867d/merged
.
.
.
答案1
解决该问题的步骤如下(在聊天中讨论):
- 检查相关容器的输出
docker inspect
。它会产生大量输出,需要考虑的关键部分是Binds
和Mounts
部分。 - 看到挂载点已就位后,为了避免不匹配的挂载点隐藏实际的数据目标,我们检查容器中创建的文件是否在主机上可见。容器内的一个简单命令(如)就
date > /var/lib/kafka/data/test.txt
足以达到目的,并在主机上可见/grid/kafka-data
。 - 由于有可能 docker 以某种方式在主机上现有的卷挂载点之上挂载了某些东西(我从未见过这种情况,但当它很重要时最好再检查一次),我们在容器中创建一个 400 MiB 的测试文件,如下所示:
dd if=/dev/zero of=/var/lib/kafka/data/test.bin count=400 bs=1M
- 检查
df
主机上的输出显示,数据传送到的卷的已用大小增加了约 400 MiB。由于这是针对“正确”挂载点(大小为 1.8T)显示的,因此我们确信写入文件的实际限制是 1.8T。 - 之后,测试文件
test.bin
和test.txt
被删除,以避免不必要的文件和空间占用造成系统混乱。