Docker 不仅在卷中写入数据

Docker writes data not only in volume

这是我的设置:

docker volume inspect pgdata
[
   {
       "CreatedAt": "0001-01-01T00:00:00Z",
       "Driver": "local-persist",
       "Labels": {},
       "Mountpoint": "/mnt/pgdata",
       "Name": "pgdata",
       "Options": {
           "mountpoint": "/mnt/pgdata"
       },
       "Scope": "local"
   }
]

2 disks/partitions:

 df -h
Filesystem      Size  Used Avail Use% Mounted on
udev             63G     0   63G   0% /dev
tmpfs            13G  856K   13G   1% /run
/dev/sda1       939G   10G  889G   2% /
tmpfs            63G     0   63G   0% /dev/shm
tmpfs           5.0M     0  5.0M   0% /run/lock
tmpfs            63G     0   63G   0% /sys/fs/cgroup
s3fs             16E     0   16E   0% /codede
tmpfs            13G     0   13G   0% /run/user/1000
/dev/sdb1        46T   24K   44T   1% /mnt/pgdata

如您所见,安装在 /mnt/pgdata 的分区有 44TB 存储空间,我希望存储在数据库中的所有数据都存储在那里,因为它会变得非常快。

但是当我开始向数据库中添加数据时,1TB 磁盘随后会被填满,我的系统将 fail/stop。


  database:
    image: DB_IMAGE
    volumes:
      - pgdata:/var/lib/postgresql/data
    command: postgres -c 'max_connections=500'
    ports:
      - "6543:5432"
    secrets:
      - postgres-user
      - postgres-password
    environment:
      POSTGRES_USER_FILE: /run/configs/postgres-user
      POSTGRES_PASSWORD_FILE: /run/secrets/postgres-password
      POSTGRES_DB: ts
    deploy:
      placement:
        constraints: [node.role == manager]

workers 在节点上 运行,mapserver 和 Rest-API 预计对硬盘的影响非常小。 所以唯一影响存储的服务运行应该是数据库。

为什么它仍然会填满较小的磁盘space 而不是只填满大磁盘?

编辑: 显然我的容器在磁盘上仍然需要大量的 space。容器是 ts_database 容器。

编辑2: 所以我发现了为什么它那么大:日志记录。我的ID-json.log文件占用了630GB,查了文档https://docs.docker.com/config/containers/logging/json-file/希望能解决问题

你有没有描述里面的体积docker-compose.yml

它是 should be described 即使已经在外部创建:

version: "3.9"

# service description
services:
  frontend:
    image: node:lts
    volumes:
      - myapp:/home/node/app

# volume description
volumes:
  myapp:
    external: true

volumes:
  pgdata:
    external: true

你的情况

根据评论中的信息更新答案:

So apparently inside my /var/lib/docker-directory there is a subfolder with 125GB of disk space usage

/var/lib/docker/volumes 是 docker 个卷的默认路径。

看起来您的容器使用了不同的 pgdata 体积。也许你没有正确描述它(见我上面的回答)。根据提供的信息,这里很难猜测发生了什么。

如果确实正确描述了音量但仍然无法正常工作,我可能会推荐两种解决方法:

  1. 使用不带卷的直接装载:

    volumes:
      - /mnt/pgdata:/var/lib/postgresql/data
    
  2. 将第二个驱动器安装到 /var/lib/docker 以默认将所有 docker 数据存储在大磁盘上:

    # stop docker
    service docker stop
    # unmount current folder
    umount /mnt/pgdata
    # rename old docker folder
    mv /var/lib/docker /var/lib/docker_old
    # create new folder
    mkdir /var/lib/docker
    # mount
    mount /dev/sdb1 /var/lib/docker
    # copy docker files to new position
    cp -pr /var/lib/docker_old/* /var/lib/docker/
    # check for hidden files starting from `.` if exists and copy it too
    ls -la /var/lib/docker_old/
    # remove old folder
    rm -fr /var/lib/docker_old
    # mount /dev/sdb1 to /var/lib/docker as permanent storage using /etc/fstab file
    # start docoker and enjoy
    service docker start