Redhat

Linux + 安裝到作業系統卷的 docker 容器文件夾 + 如何知道真正的有限大小

  • November 6, 2019

在裡面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 partition - 上/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問題的容器的輸出。它產生大量輸出,要考慮的關鍵部分是BindsMounts部分。
  2. 看到安裝到位後,為了避免隱藏實際數據目標的不匹配安裝,我們檢查容器中創建的文件是否在主機上可見。容器內的一個簡單命令 date > /var/lib/kafka/data/test.txt就足夠了,並且/grid/kafka-data在主機上變得可見。
  3. 由於 docker 以某種方式在主機上的現有捲掛載之上安裝了一些東西的可能性很小(我從未見過,但是當它很重要時最好檢查兩次),我們在容器中創建一個 400 MiB 的測試文件,如下所示: dd if=/dev/zero of=/var/lib/kafka/data/test.bin count=400 bs=1M
  4. 檢查df主機上的輸出顯示數據進入的捲的使用大小增加了約 400 MiB。由於這是針對“正確”的掛載點(大小為 1.8T)顯示的,我們確信寫入文件的實際限制是 1.8T。
  5. 之後,測試文件test.bintest.txt被刪除以避免不必要的文件和空間使用使系統混亂。

引用自:https://serverfault.com/questions/990813